我在MATLAB(版本7)中有一个30000x14000稀疏矩阵,我需要在另一个程序中使用它。调用保存不会将其写为ASCII(不支持)。在此怪物上调用full()
会导致Out of Memory
错误。
如何导出?如何将一个非常大的MATLAB稀疏矩阵保存到文本文件中?
回答
我在MATLAB中使用Java将它保存为文本。 MATLAB代码:
pw=java.io.PrintWriter(java.io.FileWriter('c:\\retail.txt'));
line=num2str(0:size(data,2)-1);
pw.println(line);
for index=1:length(data)
disp(index);
line=num2str(full(data(index,:)));
pw.println(line);
end
pw.flush();
pw.close();
这里data
是一个非常大的稀疏矩阵。
你试过分区吗?
我的意思是尝试在1000个第一行(或5000)上调用full(),然后重复该过程(如果它工作的话)。
是总是那一个选项,它可能会花费很多时间来写作ascii块并将它们稍后合并 – Midhat 2008-10-20 09:35:56
将稀疏矩阵保存为.mat
文件。然后,在另一个程序中,使用合适的库来读取.mat
文件。
例如,如果其他程序是用Python编写的,则可以使用支持稀疏数组的scipy.io.mio.loadmat
函数,并为您提供稀疏numpy矩阵。
其他程序是rapidminer – Midhat 2008-10-20 09:35:14
使用find
功能得到非零元素的索引...
idcs = find(data);
vals = data(idcs);
...save the index vector and value vector in whatever format you want...
如果你愿意,你可以使用ind2sub
转换的线性指标,以行,列标。
如果您需要在matlab中使用下标+值重新创建稀疏矩阵,请使用spconvert
。
您可以使用find获得指数&值向量:
[i,j,val] = find(data)
data_dump = [i,j,val]
您可以重新从data_dump与spconvert,其目的是要“导入从稀疏矩阵外部格式”数据(所以我想这是一个很好的导出格式):
data = spconvert(data_dump)
您可以保存到ASCII:
save -ascii data.txt data_dump
但这转储指数为双,你可以写出来更精美,的fopen/fprintf中/ FCLOSE:
fid = fopen('data.txt','w')
fprintf(fid,'%d %d %f\n', transpose(data_dump))
fclose(fid)
希望这有助于。
dlmwrite - 写矩阵为ASCII分隔的文件 语法
dlmwrite(文件名,M)
dlmwrite(文件名,M 'd')
dlmwrite(文件名,女, 'd',R,C)
dlmwrite(文件名,M 'attrib1',值1, 'attrib2',值2,...)
dlmwrite(文件名,男,“-append”)
dlmwrite(文件名,男,“-append”,属性值列表)
- 1. 如何将稀疏矩阵保存到matlab文件中
- 2. 从一个大的文本文件到Python的稀疏矩阵
- 3. 如何添加一列并保存在文本文件中的稀疏矩阵?
- 4. 将稀疏矩阵转储到文件
- 5. 在R中创建一个非常大的稀疏矩阵
- 6. julia-lang有效地保存/加载稀疏矩阵到文件或从文件中加载稀疏矩阵
- 7. 稀疏三元组稀疏矩阵matlab
- 8. svd的一个非常大的稀疏矩阵
- 9. 如何将稀疏矩阵写入文本文件
- 10. 如何将scipy稀疏矩阵保存到实木复合地板文件中
- 11. 保存非常大的矩阵在Matlab
- 12. matlab:稀疏矩阵分解
- 13. 在R中你如何为文件写一个稀疏矩阵?
- 14. 扩展/稀疏矩阵转换成一个更大的稀疏矩阵
- 15. 非常大的稀疏矩阵R中的k-均值聚类?
- 16. 征:如何初始化一个稀疏矩阵与一些子稀疏矩阵
- 17. R - 在非常大的稀疏矩阵中更新列
- 18. MATLAB - 稀疏到稠密矩阵
- 19. 如何在Matlab中计算大型稀疏矩阵的零点?
- 20. Matlab中的稀疏三维矩阵
- 21. matlab中的稀疏矩阵数组
- 22. 保存文本矩阵:MATLAB
- 23. 如何合并大的稀疏矩阵
- 24. 一个非常大的稀疏矩阵的第一个特征向量?
- 25. 从稀疏矩阵中提取一个块作为另一个稀疏矩阵
- 26. 如何将矩阵保存到matlab中的文件中
- 27. 稀疏矩阵
- 28. 大型稀疏矩阵上的快速非负矩阵分解
- 29. 在matlab中绘制稀疏矩阵
- 30. 相乘两个非稀疏矩阵
我很困惑 - 为什么使用java.io而不是MATLAB的内置fopen和fprintf? – SCFrench 2009-12-11 23:56:30
可能是因为我比matlab知道更好的java,并且它是一个丢弃代码,所以它不需要很漂亮。它只是需要正常工作:) – Midhat 2009-12-15 16:57:40