How to vectorize matrix assignment process below

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 comentarios

Stephan
Stephan el 25 de Nov. de 2020
All values from a(i) are overrided by e(i). Same for b(i) and f(i).
jyp
jyp el 25 de Nov. de 2020
Sorry for the typos. I've corrected them.

Iniciar sesión para comentar.

 Respuesta aceptada

KSSV
KSSV el 25 de Nov. de 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.

Más respuestas (0)

Categorías

Productos

Versión

R2019a

Preguntada:

jyp
el 25 de Nov. de 2020

Comentada:

jyp
el 25 de Nov. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by