4

也许这个问题之前已经回答过,但我似乎找不到任何好的文档。所以我的问题如下:

假设我在 Matlab 中有两个长度相同的向量

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 回答