vectorizing 3 nested loops
이전 댓글 표시
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
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
2016년 5월 11일
Matt J
2016년 5월 11일
Are the non-zero values of A always distinct?
etudiant_is
2016년 5월 11일
편집: etudiant_is
2016년 5월 11일
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!