ドキュメンテーション

目次

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

区切り記号付きデータ ファイルへの書き込み

数値配列の ASCII ファイルへのエクスポート

数値配列を区切り記号付き ASCII データ ファイルとしてエクスポートするには、関数 save を修飾子 -ASCII を指定して使用するか、または関数 dlmwrite を使用できます。

savedlmwrite はどちらも簡単に使用できます。dlmwrite では任意の文字を区切り記号として指定でき、値の範囲を指定して配列のサブセットをエクスポートできます。

ただし、save -asciidlmwrite ではセル配列が入力として受け入れられません。セル配列の内容から区切り記号付きの ASCII ファイルを作成するには、まず関数 cell2mat を使用してセル配列を行列に変換し、次に save または dlmwrite を呼び出します。この方法は、セル配列に数値データのみが含まれていて、2 次元数値配列に簡単に変換できる場合に使用します。

save による数値配列の ASCII ファイルへのエクスポート

配列 A が次のように定義されるとします。

A = [ 1 2 3 4 ; 5 6 7 8 ];

これをスペースで区切られた ASCII データ ファイルにエクスポートするには、次のように関数 save を使用します。

save my_data.out A -ASCII

ファイルを表示するには、関数 type を使用します。

type my_data.out

1.0000000e+000  2.0000000e+000  3.0000000e+000  4.0000000e+000
5.0000000e+000  6.0000000e+000  7.0000000e+000  8.0000000e+000

save を使用して文字配列を ASCII ファイルに書き込むときは、対応する ASCII 文字がファイルに書き込まれます。たとえば、文字列 'hello' をファイルに書き込む場合、save によって次の値が 8 桁の ASCII 形式でファイルに書き込まれます。

104 101 108 108 111

データを 16 桁の形式で書き込むには、-double オプションを使用します。スペース区切りファイルではなく、タブ区切りファイルを作成するには、-tabs オプションを使用します。

dlmwrite による数値配列の ASCII ファイルへのエクスポート

区切り記号を指定して数値配列や文字配列を ASCII ファイルにエクスポートするには、関数 dlmwrite を使用します。

たとえば、配列 A が次のように定義されるとします。

A = [ 1 2 3 4 ; 5 6 7 8 ];

これを、区切り記号にセミコロンを使用して ASCII データ ファイルにエクスポートするには、次のコマンドを使用します。

dlmwrite('my_data.out',A, ';')

ファイルを表示するには、関数 type を使用します。

type my_data.out

1;2;3;4
5;6;7;8

既定の設定により、dlmwrite では区切り記号としてコンマが使用されます。区切り記号としてスペース (' ') や他の文字を指定することもできます。区切り記号を指定しない場合は、空の引用符 ('') を使用します。

テーブルのテキスト ファイルへのエクスポート

この例では、関数 writetable を使用して、テーブルをテキスト ファイルにエクスポートする方法を説明します。

エクスポートするサンプル テーブル T を作成します。

Name = {'M4';'M5';'M6';'M8';'M10'};
Pitch = [0.7;0.8;1;1.25;1.5];
Shape = {'Pan';'Round';'Button';'Pan';'Round'};
Price = [10.0;13.59;10.50;12.00;16.69];
Stock = [376;502;465;1091;562];
T = table(Pitch,Shape,Price,Stock,'RowNames',Name)
T = 

           Pitch     Shape      Price    Stock
           _____    ________    _____    _____

    M4      0.7     'Pan'          10     376 
    M5      0.8     'Round'     13.59     502 
    M6        1     'Button'     10.5     465 
    M8     1.25     'Pan'          12    1091 
    M10     1.5     'Round'     16.69     562 

このテーブルには、列見出しと行名の両方があります。

テーブル T をテキスト ファイル tabledata.txt にエクスポートします。

writetable(T,'tabledata.txt')

ファイルを表示します。

type tabledata.txt
Pitch,Shape,Price,Stock
0.7,Pan,10,376
0.8,Round,13.59,502
1,Button,10.5,465
1.25,Pan,12,1091
1.5,Round,16.69,562

既定では、writetable はテーブル変数の名前を列見出しとして含むコンマ区切りデータを書き込み、行名は書き込みません。

テーブル T をタブ区切りテキスト ファイル tabledata2.txt にエクスポートし、行名を出力の最初の列に書き込みます。Delimiter の名前と値の組の引数を使用してタブ区切り記号を指定し、WriteRowNames の名前と値の組の引数を使用して行名を含めます。

writetable(T,'tabledata2.txt','Delimiter','\t','WriteRowNames',true)

ファイルを表示します。

type tabledata2.txt
Row	Pitch	Shape	Price	Stock
M4	0.7	Pan	10	376
M5	0.8	Round	13.59	502
M6	1	Button	10.5	465
M8	1.25	Pan	12	1091
M10	1.5	Round	16.69	562

セル配列のテキスト ファイルへのエクスポート

関数 fprintf によるセル配列のエクスポート

この例では、関数 fprintf を使用して、セル配列をテキスト ファイルにエクスポートする方法を説明します。

エクスポートするサンプル セル配列 C を作成します。

C = {'Atkins',32,77.3,'M';'Cheng',30,99.8,'F';'Lam',31,80.2,'M'}
C = 

    'Atkins'    [32]    [77.3000]    'M'
    'Cheng'     [30]    [99.8000]    'F'
    'Lam'       [31]    [80.2000]    'M'

ファイル celldata.dat を書き込み用に開きます。

fileID = fopen('celldata.dat','w');

fopen は、ファイル識別子 fileID を返します。このファイル識別子を fprintf で呼び出して、そのファイルに書き込みます。

書式指定子を使用して、ファイルのデータのパターンを記述します。標準的な書式指定子には、文字列の '%s'、整数の '%d'、浮動小数点数の '%f' などがあります 個々の書式指定子をスペースで区切って、出力ファイルにスペース区切り記号を指定します。各データ行の終端に改行文字 ('\n') を挿入します。

formatSpec = '%s %d %2.1f %s\n';

Microsoft® のメモ帳など、一部の Windows® のテキスト エディターでは、'\n' ではなく、 '\r\n' の改行シーケンスを使用する必要があります。ただし、Microsoft Word や ワードパッドでは '\n' で問題なく機能します。

C のサイズを決定します。次に、関数 fprintf を使用して、1 度に 1 行ずつデータをエクスポートします。

[nrows,ncols] = size(C);
for row = 1:nrows
fprintf(fileID,formatSpec,C{row,:});
end

fprintf はスペース区切りファイルを書き込みます。

ファイルを閉じます。

fclose(fileID);

ファイルを表示します。

type celldata.dat
Atkins 32 77.3 M
Cheng 30 99.8 F
Lam 31 80.2 M

エクスポートするテーブルへのセル配列の変換

この例では、テキストと数値データが混在するセル配列をテーブルに変換してから、データをテキスト ファイルに書き込む方法を説明します。テーブルは、列方向データや表形式データに適しています。これにより、関数 writetable を使用して、テーブルをテキスト ファイルに書き込むことができます。

関数 cell2table を使用して、前述の例のセル配列 C をテーブルに変換します。VariableNames の名前と値の組の引数を使用して、各データ列に変数名を追加します。

T = cell2table(C,'VariableNames',{'Name','Age','Result','Gender'});

テーブル T をテキスト ファイルに書き込みます。

writetable(T,'tabledata.dat');

ファイルを表示します。

type tabledata.dat
Name,Age,Result,Gender
Atkins,32,77.3,M
Cheng,30,99.8,F
Lam,31,80.2,M

参考

| | | |

この情報は役に立ちましたか?