# Can anyone please vectorize the code I have?

조회 수: 3(최근 30일)
Nadatimuj 2022년 5월 14일
댓글: Bruno Luong 2022년 5월 14일
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

댓글을 달려면 로그인하십시오.

### 채택된 답변

Bruno Luong 2022년 5월 14일
편집: Bruno Luong 2022년 5월 14일
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표시숨기기 이전 댓글 수: 1
Bruno Luong 2022년 5월 14일
@Nadatimuj You are welcome, if it helps could you accept the answer?

댓글을 달려면 로그인하십시오.

R2021b

### Community Treasure Hunt

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

Start Hunting!

Translated by