少ネタ:ヘッダーを付けて数値配列を保存する【MATLAB】

English title: How to use writematrix with a text header.

数値配列を保存するときは writematrix が便利でいつも使っているが、ヘッダーを付けて保存する機能はついていない。ヘッダーを付けたいときは writetable を使って以下の様に保存していた。

% xdataはwavelength, ydataはintensityというヘッダーを付けたい
xdata = linspace(450, 700, 100)';
ydata = linspace(-1, 1, 100)';
t = table(xdata, ydata);
t.Properties.VariableNames = ["wavelength" "intensity"];
writetable(t, path);

上のコードでも十分だが、最近 writematrix を使って保存する裏技?を見つけた。

xdata = linspace(450, 700, 100)';
ydata = linspace(-1, 1, 100)';
saveMatrix = ["wavelength" "intensity"; xdata ydata]; % 配列が勝手にstring配列に変換される
writematrix(saveMatrix, path);

string配列と数値配列を連結することで数値配列がstring配列に変換されることを利用してstring配列として保存している。ダブルクォーテーションもつかないのでこれでいいかもしれない。

writematrix でヘッダーも保存したい需要はやっぱりあるらしく、matlab answersで質問がいくつかあったが、ヘッダーを先にファイルに書き込むwritetableを使うwritecellを使う回答が多く、writematrix単体で完結している質問は見つけられなかった。これが誰かの役に立てばいいですね。

コメント

タイトルとURLをコピーしました