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

标签 matlab interop

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

最佳答案

您可以使用 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)

希望这对您有所帮助。

关于matlab - 如何将非常大的 MATLAB 稀疏矩阵保存到文本文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217852/

相关文章:

Matlab cvx 错误与 cvx_begin

matlab - 在 Matlab 的匿名函数中使用 for/while 循环

c# - 如何使用 C# 迭代和计算 Word 文档中的修订?

c# - 绝对 COM 混淆 - C# 与早期绑定(bind)的互操作

c# - []、get_Item() 和 Item[] 之间的 Excel Interop 区别

matlab - 以编程方式设置数据提示?

matlab - 从 3D 矩阵变量切片时将 2D 矩阵展平为 1D 的最佳方法

java - 如何将 Scala Array[Byte] 转换为 Java byte[]?

c# - mono_field_set_value 不起作用

excel - 使用 ActiveX 在 MATLAB 中设置 Excel 缩放