4 views (last 30 days)

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？

KSSV
on 25 Nov 2020

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.

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

Start Hunting!
## 2 Comments

## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/661603-how-to-vectorize-matrix-assignment-process-below#comment_1159318

⋮## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/661603-how-to-vectorize-matrix-assignment-process-below#comment_1159318

## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/661603-how-to-vectorize-matrix-assignment-process-below#comment_1159448

⋮## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/661603-how-to-vectorize-matrix-assignment-process-below#comment_1159448

Sign in to comment.