我正在尝试编写一个将 .mat 文件转换为 .csv 文件的 octave 程序。.mat 文件有一个矩阵 X 和一个列向量 y。X 填充了 0 和 1,y 填充了从 1 到 10 的标签。我想将 y 放在 X 前面并将其写为 .csv 文件。
这是我的第一种方法的代码片段:
load(filename, "X", "y");
z = [y X];
basename = split{1};
csvname = strcat(basename, ".csv");
csvwrite(csvname, z);
生成的文件包含许多非常小的十进制数字,例如 8.560596795891285e-06,1.940359477121703e-06 等...
我的第二种方法是循环并手动将值写入 .csv 文件:
load(filename, "X", "y");
z = [y X];
basename = split{1};
csvname = strcat(basename, ".csv");
csvfile = fopen(csvname, "w");
numrows = size(z, 1);
numcols = size(z, 2);
for i = 1:numrows
for j = 1:numcols
fprintf(csvfile, "%d", z(i, j));
if j == numcols
fprintf(csvfile, "\n");
else
fprintf(csvfile, ",");
end
end
end
fclose(csvfile);
这给了我一个正确的结果,但花了很长时间。
有人可以告诉我如何以写入正确值的方式使用 csvwrite,或者如何更有效地手动创建 .csv 文件。
谢谢!