在Matlab中将整数和字符串的混合矩阵写入.csv

时间:2013-02-11 21:10:21

标签: matlab csv

也许这个问题之前已经得到了解答,但我似乎无法找到任何好的文档。所以我的问题如下:

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

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

基本上我想创建矩阵{x,y}(即3行,2列),然后将其写入.csv文件。所以最后我想看一个类似

的.csv文件
1,A
2,B
3,C

这只是一个模拟的例子,但实际上我有75列,每列都是一列字符串或数字。非常感谢任何建议!

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分: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);