.mat ファイルを .csv ファイルに変換するオクターブ プログラムを作成しようとしています。.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 など、非常に小さな 10 進数が多数含まれています
私の 2 番目のアプローチは、ループして手動で値を .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 ファイルをより効率的に手動で作成する方法を教えてください。
ありがとう!