【问题标题】:Matlab saving cell array to text file [closed]Matlab将单元格数组保存到文本文件[关闭]
【发布时间】:2014-11-25 08:15:36
【问题描述】:

在搜索了 mathworks 的网站和这里之后,我设法找到了应该用于将单元格数据保存到文本文件的代码......但我发现的每个变体都不起作用。这是我当前的代码(也是在这里和 mathworks 上出现最多的代码)-请帮助我弄清楚为什么它对我不起作用...:

第一次尝试:

array = cell(1,10);
for i=1:10
    array{i} = 'someText';
end
fid = fopen('file.txt', 'wt');
fprintf(fid, '%s\n', array);
fclose(fid);

错误:

使用 fprintf 时出错 没有为“单元”输入定义函数。

saveToFile 中的错误(第 11 行) fprintf(fid, '%s\n', 数组);

所以我专门寻找一种对单元阵列有用的(可以在这里找到:http://www.mathworks.com/help/matlab/import_export/write-to-delimited-data-files.html

第二次尝试:

array = cell(1,10);
for i=1:10
    array{i} = 'someText';
end
fileID = fopen('celldata.dat','w');
[nrows,ncols] = size(array);
for row = 1:nrows
fprintf(fileID,'%s\n' ,array{row,:});
end
fclose(fileID);

错误:

使用 fprintf 时出错 没有为“单元”输入定义函数。

saveToFile 中的错误(第 12 行) fprintf(fileID,'%s\n' ,array{row,:});

我将避免您尝试其他一些失败的尝试.. 这些是我能找到的最好的.. 任何帮助将不胜感激! :)

【问题讨论】:

  • 我将您的第二次尝试复制到 MATLAB 的命令窗口中,它运行良好!
  • 您可能希望在第一次尝试中使用 'array{:}' 而不是 'array'
  • 是的,如果您按照 Benoit 的建议进行操作,第一种方法也有效 =)
  • 您检查过您使用的是哪个版本吗?
  • Ahhh - 我发现问题在于我使用的一些字符串数据显示为 [] (matlab 在几个地方显示 'ans = []' ,通常有一个字符串 'ans = 'someString') 所以我想我需要以某种方式将 [] 替换为字符串。

标签: arrays matlab save printf


【解决方案1】:

或者,您可以使用strjoin 将元胞数组加入字符串:

array = cell(1,10);
for i=1:10
    array{i} = 'someText';
end
line = strjoin(array)
fid = fopen('file.txt', 'wt');
fprintf(fid, '%s\n', line);
fclose(fid);

【讨论】:

    【解决方案2】:

    下面的代码很适合我:

    array = cell(10,1);
    for i=1:10
      array{i} = ['someText ' num2str(i)];
    end
    fileID = fopen('celldata.dat','w');
    [nrows,ncols] = size(array);
    for row = 1:nrows
        temp_str = array{row,:};
        fprintf(fileID ,'%s\n', temp_str);
    end
    fclose(fileID);
    

    主要区别在于将单元格内容分配到 CHAR 类型的变量中。

    【讨论】:

    • 有点延迟,但无论如何我都会更新以节省其他人的时间 - 我发布的第二次尝试确实奏效了,问题是我的一些(非常大的数据)将“NaN”作为值,因此,一旦我发现了这些并摆脱了它们,它就起作用了。感谢大家的帮助! :)
    猜你喜欢
    • 2018-10-02
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2016-12-20
    • 2014-02-18
    • 2015-01-23
    • 1970-01-01
    相关资源
    最近更新 更多