2

親愛なるstackoverflowers、

matlabを使用して.txtファイルを作成したいと思います。コンテンツはタブで区切る必要があります。3列で、3列目にセル配列の文字列を入力する必要があります。まあ言ってみれば

A=[2; 3; 3;];
B=2*A;
C=cell(3,1);
C{1,1}='string1'; C{2,1}='string2'; C{3,1}='string3';

最終的には、次のようになります。

    2  4  string1
    3  6  string2
    3  6  string3

2つの行列をテキストファイルに入れる方法はすでにわかりました:dlmwrite('filename.txt'、[AB]、'delimiter'、'\ t')

しかし、セルのコンテンツを追加するにはどうすればよいですか?一重引用符ではなく、ファイルに文字列のみを含めるのが最善です。私はこれに対する解決策を他の場所で見つけませんでしたし、これを他の場所で尋ねることもしませんでした。私はあらゆる種類の提案に感謝します。

4

2 に答える 2

3

次のことを試してください。

% Open a file for writing (if you want to append to file use 'a' instead of 'w')
fid = fopen(file,'w');

for i = 1:size(A,1)
    fprintf(fid,'%d  %d  %s\n',A(i),B(i),C{i})
end

fclose(fid)

お役に立てれば

于 2012-11-16T16:36:51.893 に答える
1

dlmwrite のドキュメントには次のように記載されています。

備考

結果のファイルは、スプレッドシート プログラムで読み取ることができます。

関数 dlmwrite は、入力行列 M のセル配列を受け入れません。数値データのみを含むセル配列をエクスポートするには、csvwrite を呼び出す前に cell2mat を使用してセル配列を数値行列に変換します。

各セルに 1 つの要素が含まれる、アルファベットと数値のデータが混在する cell 配列をエクスポートするには、xlswrite を使用して Excel スプレッドシートを作成できます (システムに Excel がインストールされている場合)。それ以外の場合は、低レベルのエクスポート関数を使用してデータを書き込む必要があります。

したがって、Excel スプレッドシートとして作成するか、独自の変換関数を作成する必要があります。

例えば

A=[2; 3; 3;];
B=2*A;
C=cell(3,1);
C{1,1}='string1'; C{2,1}='string2'; C{3,1}='string3';

% First solution
f = fopen('filename.txt', 'w');
for n = 1:3
    fprintf(f, '%d\t%d\t%s\n', A(n), B(n), C{n});
end
fclose(f);

% Another solution
% create the table as a single cell array with only strings
C2 = [arrayfun(@num2str, [A, B], 'UniformOutput', false) C]'; % <- note the transpose

f = fopen('filename.txt', 'w');
fprintf(f, '%s\t%s\t%s\n', C2{:}); % <- every three entries are written as a line
fclose(f);
于 2012-11-16T16:35:35.213 に答える