Matlab 将 cell 数组保存到文本文件

3

在 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函数时出错,因为输入参数是“cell”类型。

在saveToFile第11行出现错误。

所以我特意寻找了适用于cell数组的方法(可以在此处找到: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时出错,无法处理'cell'类型的输入。

在saveToFile第12行出现错误

fprintf(fileID,'%s\n', array{row,:});

这里还有其他尝试但都失败了,以上是我能找到的最好的信息。任何帮助将不胜感激!:)


2
我把你的第二次尝试复制到了MATLAB的命令窗口中,它完美地运行了! - Stewie Griffin
你可能想在第一次尝试中使用 'array {:}' 而不是 'array'。 - Benoit_11
1
是的,如果你按照Benoit的建议去做,第一种方法也可以 =) - Stewie Griffin
你检查过你正在使用的版本了吗? - kkuilla
啊 - 我发现问题出在我使用的一些字符串数据上,它们显示为[](在几个地方Matlab显示'ans = []',而通常应该是一个字符串'ans = 'someString''),所以我猜我需要想办法用一个字符串来替换[]。 - Anon
最好的替换应该是 '',检查时使用isempty [] - Divakar
2个回答

0

或者,您可以使用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);

0

以下代码对我来说运行良好:

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”值,所以一旦我发现并摆脱它们,它就起作用了。谢谢大家的帮助! :) - Anon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接