MATLAB 将两个数组(一个字符串单元格和一个数字向量)附加到 .csv

MATLAB append two arrays(one string cell and one numeric vector) into a .csv

我有两个数组,X 和 Y

X 有这样的数字数据:

12342 1355 2324 ...

Y 有这样的字符串:

APPLE METRO BLANKET ...

我想以这种格式将这些数组附加到预先存在的 .csv 中:

X(1,1), Y{1,1} X(2,1), Y{2,1} X(3,1), Y{2,1} ...

我应该怎么做?

不幸的是,将元胞数组写入 csvs 可能很棘手。您需要以一种或另一种方式循环,以便您可以访问每个单元格中的数据。单元格不自动写入的原因是单元格可以包含任何东西 - 比如整个数据矩阵。

允许任何类型的 cell/matrix 组合的最通用的方法是使用 fprintf - 您只需要指定一种格式。 http://au.mathworks.com/help/matlab/ref/fprintf.html

nrows = size(x,1);
fid = fopen('newfile.csv','w');
for aa = 1 : nrows
    fprintf(fid,'%f,%s\r\n', x(aa,1), y{aa,1});
end

如果您只追求十进制数而不是浮点精度,则可以使用 %d 而不是 %f。

对于这种情况,我发现 fprintf 比任何替代方法都快。它有点低级,但允许您编写任何您喜欢的文件。