How to vectorize matrix assignment process below
조회 수: 17 (최근 30일)
이전 댓글 표시
I try to vectorized the following code in the following way to speed up the process. But it doesn't work.
I try to use this code to assign some part of the matrix by values as some functions of the index i (a(i), b(i), .etc).
N=100;
A=zeros(2*N,2*N);
for i=2:N-1
A(2*i-1,2*i-1)=a(i);
A(2*i-1,2*i)=b(i);
A(2*i-1,2*i+1)=c(i);
A(2*i,2*i-3)=d(i);
A(2*i,2*i-1)=e(i);
A(2*i,2*i)=f(i);
end
_______________
vectorized code:
N=100;
A=zeros(2*N,2*N);
i=2:N-1;
A(2*i-1,2*i-1)=a(i);
A(2*i-1,2*i)=b(i);
A(2*i-1,2*i+1)=c(i);
A(2*i,2*i-3)=d(i);
A(2*i,2*i-1)=e(i);
A(2*i,2*i)=f(i);
But matlab says the assignment can be carried out because the dimensions doesn't match. So is there any proper way to do this?
댓글 수: 2
채택된 답변
KSSV
2020년 11월 25일
Read about sub2ind. Convert your sub indices into global indices and use.
idx = sub2ind(size(A),2*i-1,2*i-1) ;
A(idx) = a(i) ;
You try to follow something like above.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!