首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将一个非常大的MATLAB稀疏矩阵保存为文本文件?

如何将一个非常大的MATLAB稀疏矩阵保存为文本文件?
EN

Stack Overflow用户
提问于 2008-10-20 09:17:04
回答 8查看 29.5K关注 0票数 17

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

如何导出?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-10-27 13:54:21

我在MATLAB中使用Java将其保存为文本。MATLAB代码:

代码语言:javascript
复制
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是一个非常大的稀疏矩阵。

票数 3
EN

Stack Overflow用户

发布于 2008-12-18 16:08:57

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

代码语言:javascript
复制
[i,j,val] = find(data)
data_dump = [i,j,val]

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

代码语言:javascript
复制
data = spconvert( data_dump )

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

代码语言:javascript
复制
save -ascii data.txt data_dump

但这会将索引转储为双精度,您可以用fopen/fprintf/fclose写得更好:

代码语言:javascript
复制
fid = fopen('data.txt','w')
fprintf( fid,'%d %d %f\n', transpose(data_dump) )
fclose(fid)

希望这能有所帮助。

票数 29
EN

Stack Overflow用户

发布于 2008-10-20 09:31:25

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

例如,如果另一个程序是用Python语言编写的,则可以使用scipy.io.mio.loadmat函数,该函数支持稀疏数组并提供稀疏数值矩阵。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/217852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档