MATLABからのデータエクスポート:ファイル形式とテクニック
MATLABでのデータエクスポート(出力)とは、ファイルに書き込むことを意味します。MATLABでは、ASCIIファイルを読み取る他のアプリケーションでデータを使用できます。そのために、MATLABはいくつかのデータエクスポートオプションを提供しています。
以下のタイプのファイルを作成できます。
配列から区切り文字付きASCIIデータファイル(長方形)
キーストロークとその結果のテキスト出力を記録したダイアリ(ログ)ファイル
fprintfなどの低レベル関数を使用した特殊なASCIIファイル
特定のテキストファイル形式に書き込むC/C++またはFortranルーチンにアクセスするためのMEXファイル
これらに加えて、スプレッドシートへのデータエクスポートも可能です。
数値配列を区切り文字付きASCIIデータファイルとしてエクスポートするには、2つの方法があります。
save関数を使用し、-ascii修飾子を指定
dlmwrite関数を使用
save関数を使用する構文は以下の通りです。
save my_data.out num_array -ascii
ここで、my_data.outは作成される区切り文字付きASCIIデータファイル、num_arrayは数値配列、-asciiは指定子です。
dlmwrite関数を使用する構文は以下の通りです。
dlmwrite('my_data.out', num_array, 'dlm_char')
ここで、my_data.outは作成される区切り文字付きASCIIデータファイル、num_arrayは数値配列、dlm_charは区切り文字です。
例
以下の例で概念を説明します。スクリプトファイルを作成し、以下のコードを入力します。
ライブデモ num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0]; save array_data1.out num_array -ascii; type array_data1.out dlmwrite('array_data2.out', num_array, ' '); type array_data2.out
ファイルを実行すると、以下の結果が表示されます。
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 9.0000000e+00 0.0000000e+00 1 2 3 4 4 5 6 7 7 8 9 0
save -asciiコマンドとdlmwrite関数は、セル配列を入力として使用できません。セル配列の内容から区切り文字付きASCIIファイルを作成するには、
セル配列をcell2mat関数で行列に変換する
または、低レベルファイルI/O関数を使用してセル配列をエクスポートする
save関数で文字配列をASCIIファイルに書き込むと、文字のASCII値がファイルに書き込まれます。
例えば、'hello'という単語をファイルに書き込んでみましょう。
ライブデモh = 'hello'; save textdata.out h -ascii type textdata.out
MATLABは上記のステートメントを実行し、以下の結果を表示します。これは、文字列'hello'の文字を8桁のASCII形式で表したものです。
1.0400000e+02 1.0100000e+02 1.0800000e+02 1.0800000e+02 1.1100000e+02
ダイアリファイルへの書き込み
ダイアリファイルは、MATLABセッションのアクティビティログです。diary関数は、グラフィックスを除いて、セッションの完全なコピーをディスクファイルに作成します。
ダイアリ機能をオンにするには、以下を入力します。
diary
オプションで、ログファイル名を指定できます。
diary logdata.out
ダイアリ機能をオフにするには、以下を入力します。
diary off
ダイアリファイルはテキストエディタで開けます。
低レベルI/Oでのテキストデータファイルへのエクスポート
ここまでは数値配列のエクスポートを見てきました。しかし、数値と文字データの組み合わせ、非長方形の出力ファイル、非ASCIIエンコーディングのファイルなど、他のテキストファイルを作成する必要がある場合があります。これらの目的には、低レベルfprintf関数を使用します。
低レベルI/Oファイル操作と同様に、エクスポート前にfopen関数でファイルを開くか作成し、ファイル識別子を取得する必要があります。デフォルトでは、fopenは読み取り専用でファイルを開きます。'w'や'a'など、書き込みまたは追加の権限を指定する必要があります。
ファイル処理後、fclose(fid)関数でファイルを閉じる必要があります。
以下の例で概念を説明します。
例
スクリプトファイルを作成し、以下のコードを入力します。
ライブデモ % 2行の行列yを作成 x = 0:10:100; y = [x; log(x)]; % 書き込み用にファイルを開く fid = fopen('logtable.txt', 'w'); % テーブルヘッダー fprintf(fid, 'Log Function\n\n'); % 列順で値を出力 % ファイルの各行に2つの値が出現 fprintf(fid, '%f %f\n', y); fclose(fid); % 作成されたファイルを表示 type logtable.txt
ファイルを実行すると、以下の結果が表示されます。
Log Function 0.000000 -Inf 10.000000 2.302585 20.000000 2.995732 30.000000 3.401197 40.000000 3.688879 50.000000 3.912023 60.000000 4.094345 70.000000 4.248495 80.000000 4.382027 90.000000 4.499810 100.000000 4.605170
MATLAB
- Azure File Storage解説:安全で拡張可能なクラウドストレージの初心者ガイド
- C言語ファイルI/O完全ガイド:作成、オープン、管理の実践
- MATLAB徹底解説:数値計算環境の決定版
- MATLABデータ型完全ガイド:15種類の基本型と変換・判定関数
- MATLAB演算子完全ガイド:算術・論理・ビット演算・集合操作
- MATLAB行列完全マスター:作成・参照・操作・削除の基礎
- MATLAB:多次元配列と特殊配列をマスターする
- MATLABコロン演算子をマスター:ベクトル作成と効率的な反復処理
- MATLABの数値型:型、格納、変換
- MATLAB文字列をマスター:作成と活用ガイド
- MATLAB関数:定義、ワークスペース、入出力