MATLABの write 系ファイル出力コマンド早見表 (引数順・対応する read 系付き)

(更新日: 2025年12月29日 )

はじめに

MATLABには、ファイル出力する write○○というコマンドが複数ある。 私がよく使うものはwritetableだが、たまにwritelines も使う。

興味本位からどんなコマンドがあるか調べてみたら、思いの外多かったのでデータごとに使うコマンドを整理してみた。

なお、この記事ではfopen/fprintf/fwrite など file identifier(fid)を扱う I/O を除外してある。

「どのデータに何を使うか」早見表

最初に「どのデータに何を使うか」早見表を作っておく:

定義:Data-first = func(data,"file")、Filename-first = func("file",data,...)

データの種類典型的な型推奨関数引数順(Filename-first / Data-first)事前作成の要否文法の例(簡略)MathWorks公式ドキュメント
数値行列・配列(表形式で保存)double / single / int* / uint* 行列writematrixData-first不要writematrix(A,"data.csv")(MathWorks)
table(列名付きの表)tablewritetableData-first不要writetable(T,"table.xlsx")(MathWorks)
timetable(時間付き表)timetablewritetimetableData-first不要writetimetable(TT,"tt.csv")(MathWorks)
異種混在の表(セル配列)cell(数値/文字列混在など)writecellData-first不要writecell(C,"mix.xlsx")(MathWorks)
行単位テキスト(ログ等)string 配列 / cellstrwritelinesData-first不要writelines(lines,"log.txt")(MathWorks)
画像(2D/3D配列)uint8 / uint16(典型), double(0–1想定)imwriteData-first不要imwrite(I,"img.png")(MathWorks)
音声double / single のベクトル/行列(典型), Fs(サンプリング周波数)audiowriteFilename-first不要audiowrite("out.wav",y,Fs)(MathWorks)
動画(フレーム列)getframe の戻り(frame struct)/ 画像配列(例:uint8 H×W×3)VideoWriter + writeVideoFilename-first(VideoWriter)/ Object-first(writeVideo)不要v=VideoWriter("m.mp4"); open(v);
writeVideo(v,frame); close(v);
(MathWorks, MathWorks)
HDF5(データセット)数値配列などh5writeFilename-first場合により要(h5createh5write("data.h5","/ds",X,...)(MathWorks)
NetCDF(既存変数へ書込)数値/テキスト配列ncwriteFilename-first場合により要(nccreatencwrite("data.nc","var",X)(MathWorks)
MATLABネイティブ保存(MAT-file)任意変数(struct/table/配列等)saveFilename-first不要save("w.mat","A","T")(MathWorks)
MDF(車載計測:timetable→MDF)timetable(対応型:数値/string/cell等)mdfWriteFilename-first不要mdfWrite("log.mf4",TT)(MathWorks)

mdfWrite は Vehicle Network Toolbox 等が必要。

補足説明

汎用表形式・数値データ向けの write 系

数値行列・配列

典型例:

A = rand(10,3);
writematrix(A, 'data.csv');      % 数値行列 → CSV
writematrix(A, 'data.xlsx');     % 数値行列 → Excel

table / timetable / 異種データを含む表形式

例:

T  = table((1:5)', rand(5,1), 'VariableNames',["ID","Value"]);
TT = table2timetable(T, 'RowTimes', seconds(1:5));

writetable(T,  'table.xlsx');       % table → Excel
writetimetable(TT, 'tt.csv');      % timetable → CSV(時間情報込み)
C = {'A', 1; 'B', 2};
writecell(C, 'celldata.csv');      % cell → CSV

テキスト(文字列・行単位のログなど)

行単位のテキストファイル

例:

lines = ["first line", "second line", "third line"];
writelines(lines, 'log.txt');                % 上書き
writelines(lines, 'log.txt', Append=true);   % 追記

テキストを「列として持つ表」なら writetable/writecell、 「純粋な行列のテキストログ」なら writelines がシンプル、という整理。

メディア系: 画像・音声・動画

画像

I = imread('input.png');   % 何らかの処理
imwrite(I, 'output.jpg');  % 画像として保存

音声

[y, Fs] = audioread('in.wav');     % 処理など
audiowrite('out.wav', y, Fs);     % WAV として書き出し

動画

v = VideoWriter('movie.mp4', 'MPEG-4');
open(v);
for k = 1:N
    frame = getframe(gca);      % あるいは画像配列
    writeVideo(v, frame);
end
close(v);

科学技術計算向けフォーマット

HDF5

事前に h5create が必要な場合あり。

data = uint8(magic(5));
h5create('data.h5', '/dataset1', size(data));
h5write('data.h5', '/dataset1', data);

NetCDF

事前に nccreate が必要な場合あり

(詳細は NetCDF の用途次第だが、「外部連携用フォーマット」という意味で HDF5 と並んでよく使われるようだ。)

MATLAB 専用形式(.mat)

write◯◯ ではないが、実務上避けて通れないので補足しておく:

save('workspace.mat', 'A', 'T', 'TT');       % 必要な変数のみ保存
save('bigdata.mat', 'X', '-v7.3');          % 2GB超など大規模配列

JSON / XML など(おまけ)

write◯◯ ではないが、「テキスト系構造化データ」の代表として:

  • JSON: jsonencode で文字列にしてから writelines で保存
  • XML: xmlwrite で DOM オブジェクトや XML Document をファイルへ

おわりに

上記はこの記事を書いている時点での情報である。 MATLABコマンドは、データ形式の仕様変更と同様に、仕様や推奨の変更があることに注意されたい。

なお読み込み系も同様にコマンドが用意されている。 以下は対応表である:

書き込み系 ↔︎ 読み込み系 対応一覧(コメント付き)

書き込み読み込み1行コメント読み込みコマンドの公式ドキュメント
writematrixreadmatrix数値行列として読み込む(ヘッダ行は自動的にスキップされる場合あり)https://www.mathworks.com/help/matlab/ref/readmatrix.html
writetablereadtable列名・型情報を保持して table として読み込むhttps://www.mathworks.com/help/matlab/ref/readtable.html
writetimetablereadtimetable時刻行インデックスを保持した timetable として読み込むhttps://www.mathworks.com/help/matlab/ref/readtimetable.html
writecellreadcell数値・文字列混在のセル配列として読み込むhttps://www.mathworks.com/help/matlab/ref/readcell.html
writelinesreadlines行単位のテキストを string 配列として読み込むhttps://www.mathworks.com/help/matlab/ref/readlines.html
imwriteimread画像ファイルを配列(通常 uint8/uint16)として読み込むhttps://www.mathworks.com/help/matlab/ref/imread.html
audiowriteaudioread音声信号とサンプリング周波数 [y,Fs] を返すhttps://www.mathworks.com/help/matlab/ref/audioread.html
VideoWriter + writeVideoVideoReaderフレーム単位で動画を読み込む(逐次処理向き)https://www.mathworks.com/help/matlab/ref/videoreader.html
h5writeh5read指定したデータセットを配列として読み込むhttps://www.mathworks.com/help/matlab/ref/h5read.html
ncwritencreadNetCDF 変数を配列として読み込むhttps://www.mathworks.com/help/matlab/ref/ncread.html
saveloadMAT-file 内の変数を workspace に展開https://www.mathworks.com/help/matlab/ref/load.html
mdfWritemdfReadMDF 計測データを timetable 等として読み込む(Toolbox 依存)https://www.mathworks.com/help/vnt/ug/mdfread.html