vectorizing 3 nested loops
Ältere Kommentare anzeigen
Assuming I have the following matrices/vectors
A=[1 3 0
2 0 0
4 5 6];
B=[111
222
333];
C=[10 5 20 25 3 7
1 2 4 6 8 12
11 22 33 44 55 66] ;
I=[0 1 0 0 1 1
1 1 1 1 1 0
0 0 0 0 0 0] ;
D and E are also initialized to 0 before the loops
I have to following 3 nested loops that I want to replace/vectorize. How can I do it?
[nrows, ncols]= size(A);
E=zeros(nnz(A),1);
D=zeros(nnz(A),nrows);
for i = 1:nrows
for j = 1:ncols
if A(i,j)~=0
Id=A(i,j);
E(Id)=C(i,Id)+ B(i);
[p,~] =find(I(:,Id)~=0);
for k=p
D(Id,k)=C(k,Id)+(B(k)+1);
end
else
break
end
end
end
4 Kommentare
When I use those matrices and that code I get this error:
Subscripted assignment dimension mismatch.
Error in Untitled3 (line 38)
D(Id,m)=C(k,Id)+(B(k)+1);
etudiant_is
am 11 Mai 2016
Matt J
am 11 Mai 2016
Are the non-zero values of A always distinct?
etudiant_is
am 11 Mai 2016
Bearbeitet: etudiant_is
am 11 Mai 2016
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!