2012-04-09 146 views
2

我有以下数据:MATLAB:在文件中写入的变量字符串和数字

a=[3 1 6]'; 
b=[2 5 2]'; 
c={'ab' 'bc' 'cd'}'; 

我现在想使文件看起来像这样(分隔符是标签):

ab 3 2 
bc 1 5 
cd 6 2 

我的解决方案(带回路)是:

a=[3 1 6]'; 
b=[2 5 2]'; 
c={'ab' 'bc' 'cd'}'; 
c=cell2mat(c); 
fid=fopen('filename','w'); 
for i=1:numel(b) 

    fprintf(fid,'%s\t%u\t%u\n',c(i,:),a(i),b(i)); 

end 

fclose(fid); 

是否存在没有循环和/或可能性直接写入单元阵列的可能性在文件中?

谢谢。

回答

4

如何:

%A cell array holding all data 
% (Note transpose) 
data = cat(2, c, num2cell(a), num2cell(b))'; 

将数据写入到文件

fid = fopen('example.txt', 'w'); 
fprintf(fid, '%s\t%u\t%u\n', data{:}); 
fclose(fid); 

,如果你的数据集获得较大(可能是更好的然后离开作为独立变量和循环)这将是内存浪费,但似乎工作。

+0

顺便说一下,它似乎是'dlmwrite'或某些变体应该能够做到这一点,但我似乎无法找到写调用使用。 – Pursuit 2012-04-09 18:38:37