對於字符串的單元陣列,我使用下面的簡單的功能,其被放置在C:\Users\NAME\Documents\MATLAB\@cell
或等效userpath平臺(~/Documents/MATLAB/@cell
)上。 @cell
名稱通知MATLAB,@cell
中的函數僅用於單元陣列。
function csvwrite(fileName,cellArray)
fid = fopen(fileName,'w');
for i=1:size(cellArray,1)
fprintf(fid,'%s,',cellArray{i,1:end-1});
fprintf(fid,'%s\n',cellArray{i,end});
end
fclose(fid);
如果您需要傳統的Windows/DOS行結束,在第二fprintf
調用替換 「\ n」 和 「\ n \ r」。如果你想要標籤,你也可以用「\ t」替換第一次調用中的「,」。
對於數字陣列可以使用附帶的MATLAB功能csvwrite
。
如果必須使用具有混合數據類型單元陣列,該函數必須被修改以接受的格式說明的陣列。
function csvwrite(fileName,cellArray,spec)
fid = fopen(fileName,'w');
for i=1:size(cellArray,1)
fprintf([spec '\n'],cellArray{i,1:end});
end
fclose(fid);
對於具有類似的行數組:{ 1 3 5 'string1' string2' }
你會用spec = '%d,%d,%s,%s'
,例如。基於這些實施例
可以編寫一個更復雜的函數,測試數據的類型在每個小區中,並構造一個格式字符串相匹配,如果你將不得不完全未知的數組的內容。
您能澄清那些單元格元素實際上是*字符串*而不是*數字*嗎?我的答案假設他們是字符串。 – 2012-04-29 07:44:03
嗨reve_etrange,每個單元格元素都是數字。其實,他們是字符串,無論如何,我可以使用str2double改變它們。問題是我有許多不同的單元陣列,如砂岩,泥岩,煤炭等。每個單元陣列有不同的尺寸,如砂岩單元陣列有12 * 2個單元。所以我想創建一個DataMatrix,然後使用dmwrite將這些單元格寫入文本文件。 – Lei 2012-04-29 15:56:28