4

おそらくこの質問は以前に回答されたことがありますが、私はそれに関する良いドキュメントを見つけることができないようです。だから私の問題は次のとおりです。

Matlabに同じ長さの2つのベクトルがあるとします

x = [1;2;3];
and
y = ['A';'B';'C'];

基本的には、マトリックス{x,y}(3行2列)を作成してから、.csvファイルに書き込みます。だから最後に私は次のような.csvファイルを見たいです

1,A
2,B
3,C

これは単なるモックアップの例ですが、実際には75の列があり、それぞれが文字列または数値の列です。どんな提案でも大歓迎です!

4

2 に答える 2

2

実はここに解決策があります

http://www.mathworks.com/help/matlab/import_export/write-to-delimited-data-files.html#br2ypq2-1

これははるかに簡単に機能します。

于 2013-02-11T22:04:40.320 に答える
1

データを適切に並べ替えればcell

 A = cell(3,2);
 A{1,1} = 1;
 A{2,1} = 2;
 A{3,1} = 3;
 A{1,2} = 'A';
 A{2,2} = 'B';
 A{3,2} = 'C';

次に、この関数を呼び出すことができます。

cell2csv(filename,A)

function cell2csv(filename,cellArray,delimiter)
% Writes cell array content into a *.csv file.
% 
% CELL2CSV(filename,cellArray,delimiter)
%
% filename      = Name of the file to save. [ i.e. 'text.csv' ]
% cellarray    = Name of the Cell Array where the data is in
% delimiter = seperating sign, normally:',' (default)
%
% by Sylvain Fiedler, KA, 2004
% modified by Rob Kohr, Rutgers, 2005 - changed to english and fixed delimiter
if nargin<3
    delimiter = ',';
end

datei = fopen(filename,'w');
for z=1:size(cellArray,1)
    for s=1:size(cellArray,2)

        var = eval(['cellArray{z,s}']);

        if size(var,1) == 0
            var = '';
        end

        if isnumeric(var) == 1
            var = num2str(var);
        end

        fprintf(datei,var);

        if s ~= size(cellArray,2)
            fprintf(datei,[delimiter]);
        end
    end
    fprintf(datei,'\n');
end
fclose(datei);
于 2013-02-11T21:41:37.463 に答える