Matlab将单元格数组保存到文本文件中

时间:2014-09-30 16:05:10

标签: arrays matlab save printf

在搜索了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',数组{row,:});

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

2 个答案:

答案 0 :(得分: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类型的变量。

答案 1 :(得分: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);