Sparse matrix in optimization
1 次查看(过去 30 天)
显示 更早的评论
Matlab sparse matrix is powerful and quite efficient. I am working on some optimization problems where in each iteration a large sparse matrix, say A, is generated using:
A=sparse(iA,jA,sA,nA,nA).
During each iteration, iA and jA do not change and are exactly the same as in the first iteration, but sA changes in every iteration. So one can find that the sparsity mode is unchanged, we simply need to fill in the new sA into the place of the old sA. But in the current version, I am afraid this is impossible, i.e. in each iteration I have to explicitly generate a totally new sparse matrix using
A=sparse(iA,jA,sA,nA,nA).
Is there any way to get around explicitly generating A time and time again (since this would be time-consuming)? Any comments or advices are the most welcome on this issue.
------------------below I attach a sample code to clarify the problem----------
function y = SampleFuc(sA)
% input sA is of size 1e4*1
persistent iA jA b
if isempty(iA)
iA = 1:1e4;
jA = 1:1e4;
b = ones(1e4,1);
end
A = sparse(iA,jA,sA);
y = A\b;
end
1 个评论
Jan
2017-8-1
Please post the corresponding code. Where do you create this array? Where is it used? Why do you assume that a new creation is required in each iteration? How large is the array?
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!