R2013より前を想定。最新のバージョンを使う場合は、非推奨の方法。
カンマ区切りのcsvかtxtファイルとして書き出したい。
古いMATLABで使えない関数
writetable (R2013b)
writecell (R2019a)
writetimetable (R2019a)
writematrix (R2019a)
など
保存先を作る
ファイル名と出力先が決まっている場合は
fopen
を使う。
matlab.m
fid = fopen('filename.csv', 'w'); % 新規作成もしくは上書き保存の場合
fid = fopen('filename.csv', 'a'); % 新規作成もしくはファイルの末尾にデータを追加する場合
permission | 意味 |
---|---|
'r' | 読み取り用にファイルを開きます。 |
'w' | 書き込み用にファイルを開くか、新規ファイルを作成します。既存の内容がある場合、その内容は破棄されます。 |
'a' | 書き込み用にファイルを開くか、新規ファイルを作成します。ファイルの末尾にデータを追加します。 |
'r+' | 読み込みおよび書き込み用にファイルを開きます。 |
'w+' | 読み込みおよび書き込み用にファイルを開くか、新規ファイルを作成します。既存の内容がある場合、その内容は破棄されます。 |
'a+' | 読み込みおよび書き込み用にファイルを開くか、新規ファイルを作成します。ファイルの末尾にデータを追加します。 |
'A' | 現在の出力バッファーの自動フラッシュを行わずに、追加用にファイルを開きます。 |
'W' | 現在の出力バッファーの自動フラッシュを行わずに、書き込み用にファイルを開きます。 |
ファイル保存のためのダイアログボックスを開く場合は、
uiputfile
を使う。
ヘッダーの追加
文字列をdlmwriteで保存すると、一文字づつカンマ区切りになるので、
fprintf
を使う。
matlab.m
% さっきのfidに書き込む
header = ['header1', ',', 'header2', ',', 'header3'];
fprintf(fid, '%s\n', header);
fclose(fid);
type | formatSpec | 説明 |
---|---|---|
整数、符号付き | %d または %i | 基数 10 |
%u | 基数 10 | |
%o | 基数 8 (8 進法) | |
%x | 基数 16 (16 進法)、小文字 a–f | |
%X | %x と同じ、大文字 A–F | |
浮動小数点数 | %f | 固定小数点表記 (小数点以下の桁数の指定には精度演算子を使用) |
%e | 3.141593e+00 などの指数表現 (小数点以下の桁数の指定には精度演算子を使用) | |
%E | %e と同じだが、3.141593E+00 のように大文字 (小数点以下の桁数の指定には精度演算子を使用) | |
%g | %e または %f をコンパクトにしたもので、後続のゼロなし (有効桁数の指定には精度演算子を使用) | |
%G | %E または %f をコンパクトにしたもので、後続のゼロなし (有効桁数の指定には精度演算子を使用) | |
文字または文字列 | %c | 単一の文字 |
%s | 文字ベクトルまたは string 配列。出力テキストのタイプは formatSpec のタイプと同じです。 |
数値配列の追加
文字列を含む場合は、ヘッダーと同じ書き方。
数値配列の場合は、
dlmwrite
を使う。
matlab.m
% さっきのfilename.csvに書き込む
M = magic(3);
dlmwrite('filename.csv', M, '-append');
'-append'は、データを既存ファイル filename の末尾に追加する意味。
この関数が、R2019a 以降は非推奨。