2

次のデータがあります。

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

1 に答える 1

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);

これは、データセットが大きくなるとメモリが無駄になりますが (おそらく、別の変数とループとして残す方がよいでしょう)、動作するようです。

于 2012-04-09T18:37:55.530 に答える