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 比任何替代方法都快。它有点低级,但允许您编写任何您喜欢的文件。
我有两个数组,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 比任何替代方法都快。它有点低级,但允许您编写任何您喜欢的文件。