2014-09-30 155 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);