2014-09-30 94 views
3

在搜索mathworks的网站之后,我也在这里找到了被保存的代码以便将单元格数据保存到文本文件中......但是我发现的每个变体都不起作用。这里是我当前的代码(和已经出现在这里最和MathWorks公司的一个) - 请帮我弄清楚,为什么它不工作对我来说...:Matlab将单元格数组保存到文本文件

第一次尝试:

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',array);

所以我专门找了一个有利于细胞阵列(可以在这里找到: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,:});

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

+1

我复制你的第二次尝试进入MATLAB命令窗口它完美地工作! – 2014-09-30 16:16:57

+0

您可能想在第一次尝试中使用'array {:}'而不是'array' – 2014-09-30 16:19:57

+1

是的,如果您按照Benoit的说法操作,第一种方法也可以使用=) – 2014-09-30 16:23:52

回答

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类型的变量的单元格内容。

+0

有点延迟了,但为了节省时间我还是会更新 - 我发布的第二次尝试确实有效,但我的一些(非常大的数据)有'NaN'作为值,所以一旦我发现它们并得到摆脱他们的工作。感谢大家的帮助! :) – 2014-11-19 15:40:40

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);