【发布时间】:2017-01-08 05:27:36
【问题描述】:
我在代码生成的数据文件中有一个稀疏矩阵(不是MATLAB)。数据文件由四列组成。前两列是矩阵项的实部和虚部,第三和第四列分别是对应的行和列索引。
我使用以下脚本将其转换为Matlab 中的密集矩阵。
tic
dataA = load('sparse_LHS.dat');
toc
% Initialise matrix
tic
Nr = 15; Nz = 15; Neq = 5;
A (Nr*Nz*Neq,Nr*Nz*Neq) = 0;
toc
tic
lA = length(dataA)
rowA = dataA(:,3); colA = dataA(:,4);
toc
tic
for i = 1:lA
A(rowA(i), colA(i)) = complex(dataA(i,1), dataA(i,2));
end
toc
然而,这个 scipt 非常慢(for 循环是罪魁祸首)。
经过的时间是 0.599023 秒。
经过的时间是 0.001978 秒。
经过的时间是 0.000406 秒。
经过的时间是 275.462138 秒。
matlab 有什么快速的方法吗?
这是我目前尝试过的:
parfor - 这给了我
有效索引在 parfor 循环中受到限制
我厌倦了将for 循环改写成这样:
A(rowA(:),colA(:)) = complex(dataA(:,1), dataA(:,2));
我得到一个错误
下标分配维度不匹配。
【问题讨论】:
标签: matlab sparse-matrix