对于字符串的单元阵列,我使用下面的简单的功能,其被放置在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