How to quickly fill in a matrix
Show older comments
Hi there,
Does anybody have a "fix" on how to make this function go faster? Essentially, I am trying to fill up the matrix Hpsi using the vector phi in a special way.
Thanks in advance, Andy.
T= 1000;
phi=[1:10];
Hpsi = speye(T);
phi=phi';
pl=length(phi);
for i=1:pl
Hpsi = Hpsi + sparse((i+1):T,1:(T-i),phi(i)*ones(1,T-i),T,T);
end
Answers (1)
Christine Tobler
on 17 Dec 2015
Use spdiags:
spdiags(repmat(phi([end:-1:1 1])', T), -10:0, T, T)
2 Comments
akkp
on 18 Dec 2015
Christine Tobler
on 18 Dec 2015
Sorry, I forgot an input:
spdiags(repmat(phi([end:-1:1 1])', T, 1), -10:0, T, T)
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!