当前位置:  开发笔记 > 编程语言 > 正文

如何将非常大的MATLAB稀疏矩阵保存到文本文件中?

如何解决《如何将非常大的MATLAB稀疏矩阵保存到文本文件中?》经验,为你挑选了2个好方法。

我在MATLAB(版本7)中有一个30000x14000稀疏矩阵,我需要在另一个程序中使用它.调用save不会将其写为ASCII(不支持).调用full()这个怪物会导致 Out of Memory错误.
我该如何出口?



1> 小智..:

您可以使用find来获取索引和值向量:

[i,j,val] = find(data)
data_dump = [i,j,val]

您可以使用spconvert从data_dump重新创建数据,这意味着"从稀疏矩阵外部格式导入"(所以我猜它是一个很好的导出格式):

data = spconvert( data_dump )

您可以使用以下命令保存到ascii:

save -ascii data.txt data_dump

但是这会将索引转储为double,你可以用fopen/fprintf/fclose更好地写出来:

fid = fopen('data.txt','w')
fprintf( fid,'%d %d %f\n', transpose(data_dump) )
fclose(fid)

希望这可以帮助.


fprintf命令期间的data_dump应在根据文档(http://www.mathworks.com/help/matlab/ref/fprintf.html)使用之前进行转置.发生这种情况是因为数据是按照顺序编写的.

2> Vebjorn Ljos..:

将稀疏矩阵保存为.mat文件.然后,在另一个程序中,使用合适的库来读取.mat文件.

例如,如果其他程序是用Python编写的,则可以使用该scipy.io.mio.loadmat函数,该函数支持稀疏数组并为您提供稀疏的numpy矩阵.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有