How to vectorize matrix assignment process below
19 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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
Respuesta aceptada
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)
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!