2012-04-09 140 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