Can anyone please vectorize the code I have?

Input
J_org =
0 2 0 1 0 -1 -1
2 0 0 -1 -1 3 0
0 0 0 -2 0 1 1
1 -1 -2 0 2 0 0
0 -1 0 2 0 0 1
-1 3 1 0 0 0 0
-1 0 1 0 1 0 0
J_upper = triu(J_upper);
J_indices = [ 0 1 0 2 0 3 4
0 0 0 5 6 7 0
0 0 0 8 0 9 10
0 0 0 0 12 0 0
0 0 0 0 0 0 13
0 0 0 0 0 0 0
0 0 0 0 0 0 0]
Output:
J_out =[ 2 1 -1 -1 -1 -1 3 -2 1 1 0 2 1 0]
output J_out should be a flattened 1D vector where J_out(J_indices ) should be corresponding value from J_upper. If a J_index is missing (for example, 11 and 14 in my example), the value of that J_out will be zero. Length(J_out) should be ceil(0.5*length(J_org)*max(degree(graph(J_org)))). Here is my version of the code:
J_out = zeros(1,ceil(0.5*length(J_org)*max(degree(graph(J_org)))));
for i = 1:length(J_org)
for j =1:length(J_org)
if J_indices(i,j)
J_out (J_indices(i,j))= J_upper(i,j);
end
end
end

 Accepted Answer

There is nothing in your data to guess that Jout must have 14 elements, the last index > 0 is 13.
J_org = [
0 2 0 1 0 -1 -1
2 0 0 -1 -1 3 0
0 0 0 -2 0 1 1
1 -1 -2 0 2 0 0
0 -1 0 2 0 0 1
-1 3 1 0 0 0 0
-1 0 1 0 1 0 0]
J_org = 7×7
0 2 0 1 0 -1 -1 2 0 0 -1 -1 3 0 0 0 0 -2 0 1 1 1 -1 -2 0 2 0 0 0 -1 0 2 0 0 1 -1 3 1 0 0 0 0 -1 0 1 0 1 0 0
J_upper = triu(J_org);
J_indices = [ 0 1 0 2 0 3 4
0 0 0 5 6 7 0
0 0 0 8 0 9 10
0 0 0 0 12 0 0
0 0 0 0 0 0 13
0 0 0 0 0 0 0
0 0 0 0 0 0 0]
J_indices = 7×7
0 1 0 2 0 3 4 0 0 0 5 6 7 0 0 0 0 8 0 9 10 0 0 0 0 12 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Jut=J_upper.';
Jit = J_indices.';
b=Jit>0;
Jout = zeros(1,14); % or J_out = zeros(1,ceil(0.5*length(J_org)*max(degree(graph(J_org)))))
Jout(Jit(b)) = Jut(b)
Jout = 1×14
2 1 -1 -1 -1 -1 3 -2 1 1 0 2 1 0

2 Comments

Nadatimuj
Nadatimuj on 14 May 2022
Edited: Nadatimuj on 14 May 2022
@Bruno Luong Thanks for the quick answer. It's just a requirement for hardware purpose that the length of J_out must be an even number, although I agree it is invisible in the data. Thanks.
@Nadatimuj You are welcome, if it helps could you accept the answer?

Sign in to comment.

More Answers (0)

Categories

Find more on Just for fun in Help Center and File Exchange

Products

Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!