我填充从中我逐行读取的文本文件来值的稀疏矩阵P(230K,290K)很慢,在这里是(简化的)代码稀疏矩阵分配变得在Matlab
while ...
C = textscan(text_line,'%d','delimiter',',','EmptyValue', 0);
line_number = line_number+1;
P(line_number,:)=C{1};
end
我的问题是,虽然在开始时
P(line_number,:)=C{1};
说法是快过了几十万行成为exterely慢,我猜是因为Matlab的需要找到存储空间分配给每一个时间。有没有办法用稀疏矩阵预先分配内存?我不这么认为,但也许我错过了一些东西。任何其他可以加速操作的建议(例如,有很多可用的RAM可以改变它们)
到目前为止,生成稀疏矩阵的最快方法是一次加载所有的值,然后在一次调用稀疏矩阵来生成稀疏矩阵。 但是,可能有更好的方法来做你需要的。一旦你阅读了数据,你将如何处理矩阵“P”? – 2014-09-19 09:31:08
您的意思是将该值赋值给一个常规矩阵,然后将其转换为稀疏矩阵? 我不是起诉它是可行的,矩阵非常大。我实际上使用这里提供的代码http://stackoverflow.com/questions/24789600/handling-a-very-big-and-sparse-matrix-in-matlab来填充矩阵,它似乎很好,但是,作为说了一段时间后变得非常缓慢。 – Eugenio 2014-09-19 10:49:02
不,我的意思是读取所有的值作为一个向量,创建它们列和行目标的向量,然后调用'sparse'来一次为你创建稀疏矩阵(参见稀疏文档)。 – 2014-09-23 06:23:00