【问题标题】:How to save multi-dimensional array in matlab?如何在matlab中保存多维数组?
【发布时间】:2013-03-14 16:27:05
【问题描述】:

我有一个数组M=(1000000,12,2,2)

如何将其写入文件以供以后使用?

save('filename.txt','M','-ASCII')

好像没用……

问候,

【问题讨论】:

    标签: matlab


    【解决方案1】:

    为什么不将其保存为 mat 文件(二进制)?

    save('filename.mat', 'M' );
    

    然后你只需加载它

    % some code ...
    M = [];
    load( 'filename.mat' );
    % now you have M
    % code handling multi-dim M
    

    【讨论】:

      【解决方案2】:

      1)就像@Shai的回答一样,你可以把它保存为mat文件

      2)如果要保存为txt文件,可以这样:

      clear;clc;
      M=[1000000,12,2,2];
      dlmwrite('a.txt',M); % save M to file--a.txt
      type a.txt; % print content in a.txt
      M = dlmread('a.txt'); % load content of a.txt to M and then you will have 'M=[1000000,12,2,2]'
      

      3) 您还可以使用 fopen、fprintf、fclose 将矩阵保存到文件中。查看此帖子:How to save data in .txt file in MATLAB

      4) 对于您拥有的代码,我对其进行了测试。有用。我的 Matlab 版本是 R2011b。请再次检查您的代码。我用来测试的代码如下:

      clear;clc;
      M=[1000000,12,2,2];
      
      save('b.txt','M','-ASCII');
      
      clear;clc;
      M = load('b.txt','-ASCII');
      

      【讨论】:

      • 如果我使用load,我会得到一个struct,而不是一个简单的数组,不是吗?
      • @user1134241 不,我测试过了。如果你使用'M = load('b.txt','-ASCII');'加载它,它会给出'M=[1000000,12,2,2];'直接地。如果您将其保存为 mat 文件并使用 'a=load('M.mat')' 加载它,您将获得一个结构。一个是mat文件,一个是txt文件。它们是不同的。
      • 对于这种类型的操作,有没有比另一种更好的?
      • @user1134241 对于MAT文件,它可以保存复杂的数据结构,例如struct data。但是txt文件不能。同时,对于 txt 文件,它是内存有效的。例如,当我将 'M=[1000000,12,2,2]' 保存为 txt 文件时,文件大小为 66 字节。但是对于mat文件,大小是181字节。
      猜你喜欢
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多