我在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)
希望这可以帮助.
将稀疏矩阵保存为.mat
文件.然后,在另一个程序中,使用合适的库来读取.mat
文件.
例如,如果其他程序是用Python编写的,则可以使用该scipy.io.mio.loadmat
函数,该函数支持稀疏数组并为您提供稀疏的numpy矩阵.