Can anyone please vectorize the code I have?

1 visualizzazione (ultimi 30 giorni)
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

Risposta accettata

Bruno Luong
Bruno Luong il 14 Mag 2022
Modificato: Bruno Luong il 14 Mag 2022
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 Commenti
Nadatimuj
Nadatimuj il 14 Mag 2022
Modificato: Nadatimuj il 14 Mag 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.
Bruno Luong
Bruno Luong il 14 Mag 2022
@Nadatimuj You are welcome, if it helps could you accept the answer?

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by