ImportMatrix - ファイルから行列をインポート
ExportMatrix - 行列をファイルにエクスポート
|
使い方
|
|
ImportMatrix(f, opts)
ExportMatrix(f, M, opts)
|
|
パラメータ
|
|
f
|
-
|
string または symbol; 行列の格納先ファイル名
|
M
|
-
|
Matrix または Matrix のリスト; ファイル f に保存するオブジェクト; Matrix のリストは MATLAB バイナリファイルにしか書き込めません。
|
opts
|
-
|
(オプション)下記のオプションのうちのひとつまたは複数
|
|
|
|
|
ImportMatrix オプション
|
|
データソースのフォーマットを指定。ただし、s は Matlab、MatrixMarket、csv、delimited のうちのひとつ。MATLAB も Matlab と同意として受け付けられます。
結果の行列のデータ型を設定。ただし、d は入力データに合った Maple の型。
t が all のとき名前と行列を、t が matrices のときは行列だけを返す。このオプションは MATLAB バイナリファイルだけに適用されます。デフォルトは all。
ファイルの先頭 n 行を無視する。ただし、n は非負整数。このオプションはテキストファイルにのみ適用され、n のデフォルト値は 0。
|
|
ExportMatrix オプション
|
|
データターゲットの形式を指定します。ただし、t は Matlab、MatrixMarket、delimited のうちのひとつ。MATLAB も Matlab と同意として受け付けられます。
MATLAB 配列名を指定します。ただし、m は文字列または文字列のリスト。m のデフォルト値は mat。このオプションは MATLAB バイナリファイルにのみ適用されます。
|
|
ImportMatrix と ExportMatrix の両方で使われるオプション
|
|
ファイルの内容を区切る文字を指定します。ただし、s は単一文字の文字列。このオプションはテキストファイルにのみ適用され、デフォルト値は、MATLAB ASCII ファイル以外に対しては \t (タブ文字)、MATLAB ASCII ファイルに対しては " " (空白文字)となります。
データ格納方法を指定します。ただし、f は rectangular、entries、vectors の名前のひとつで、デフォルトは rectangular。詳細は下記の概要セクションをご覧ください。
インポートまたはエクスポートされているデータを転置するかどうかを指定します。t の値は true または false で、transpose を単独で指定すると transpose=true に相当。デフォルト値は false。
MATLAB ファイルの種類を指定します。ASCII、Version 6 バイナリ・ファイル、Version 7 バイナリ・ファイルがサポートされており、それぞれに対応する m の値は ascii、v6、v7 となります。binary も v7 と同意として受け付けます。
|
|
概要
|
|
•
|
ImportMatrix によりインポートするファイルの種類は source オプションで指定します。場合により、ImportMatrix コマンドは自動的にファイルの種類を検出することができる場合があり、そのときは source オプションは省略することができます。ImportMatrix コマンドは通常単独の行列を、MATLAB バイナリ・ファイルのときは名前と行列から成るリストの列を返します。
|
•
|
ExportMatrix によりエクスポートするファイルの種類は target オプションで指定します。ExportMatrix コマンドは、行列または行列のリストを与えられたファイル名に書き込み、書き込んだバイト数を返します。行列のリストリストは MATLAB バイナリ・ファイルにのみ書き込み可能で、その他のファイルの種類のときはパラメータ M は単独の行列しか受け付けません。
|
•
|
ASCII ファイルに対して format オプションが利用できます。このオプションは MATLAB バイナリ・ファイルのときは該当せず、無視されます。format オプションでは指定可能な値が 3 つあり、デフォルト値は rectangular。
|
|
rectangular 形式では、データが行優先順に与えられ、ファイル中の各行は行列内の行を表します。
|
|
entries 形式では、格納する値が行・列・値の 3 つの値の組で提供され、値の順番は任意となります。実数データの場合各行に丁度 3 つの値、複素数データの場合は各行に丁度 4 つの値が必要です。
|
|
vectors 形式では、行インデックスのベクトル、列インデックスのベクトル、値のベクトルがその順に与えられます。これらのベクトルを r、c、v とすると、行列 M の要素は として与えられ、ベクトル中の順序は任意です。
|
•
|
サポートされている各ファイル形式に対する詳細情報は下の各セクションをご覧ください。
|
|
|
MATLAB バイナリ形式
|
|
•
|
MATLAB バイナリ・ファイルは source=Matlab オプションを用いてインポートします。MATLAB のバージョン 5、6、7 で作成したバイナリ・ファイルは、ほとんどの場合 ImportMatrix が自動的に検出できるので source オプションは省略できます。それよりも昔のバージョンのバイナリ・ファイルはサポートされていません。
|
|
ImportMatrix は、MATLAB 配列の名前を表す文字列とインポートする行列から成るリストの列を返します。行列だけの列を取得するには output=matrices オプションを指定してください。
|
|
疎・密両方の配列をインポートすることができます。MATLAB の疎配列と密配列は、それぞれ Maple の疎行列と長方形行列としてインポートされます。この場合 format は該当しません。
|
|
2 より大きな次元を持つ MATLAB オブジェクト、セル配列、構造体、配列はインポートできません。検出された場合は警告を発し飛ばして処理を続けます。
|
•
|
単一の行列または行列のリストは target=Matlab オプションを用いて MATLAB バイナリーファイルにエクスポートできます。このオプションは、デフォルトとして Maple でサポートされている最新の MATLAB バージョンを生成します。現在の最新バージョンは Version 7 で、StringTools[Compress] ヘルプページの説明にあるデータ圧縮を伴います。MATLAB Version 6 対応の、圧縮無しのファイルを作成するには、呼び出し列に mode=v6 のオプションを指定してください。
|
|
ExportMatrix は、エクスポートする行列に自動的に生成された名前を割り当て、倍精度 MATLAB 配列として書き出します。エクスポートできるのは数値データのみです。
|
|
Maple の疎行列と長方形行列は、それぞれ MATLAB 疎配列と密配列としてエクスポートされます。
|
|
ファイルに書き込まれる名前は arraynames=m オプションで指定できます。m がリストのとき、丁度 n 個の名前が入っていることが必要です(ただし、n は M 内の行列の数)。m が文字列で n>1 のとき、m を元に固有の名前を必要数生成します。
|
•
|
datatype および transpose の両オプションは利用可能(前者は ImportMatrix のみ)ですが、delimiter と skiplines のオプションは無視されます。format オプションも無視されます。
|
|
|
MATLAB ASCII 形式
|
|
•
|
MATLAB ASCII ファイルは source=Matlab および mode=ascii の各オプションを用いてインポートされます。ただし、MATLAB からは "save ... -ascii" のコマンドを用いて行列をエクスポートしたものとします。MATLAB の dlmwrite (区切り付き書き込み)コマンドを使った場合は、source=delimited オプションを使用します。詳細は下記の一般的な区切り文字入り形式の手順を参照してください。
|
•
|
target=Matlab および mode=ascii の各オプションを使って、行列を MATLAB ASCII 形式にエクスポートできます。書き込みできるのは数値データのみです。MATLAB 長方形形式は複素数をサポートしていないため、複素数をエクスポートする場合は format=entries のオプションを使用します。
|
•
|
デフォルトの区切り文字は " " (空白文字)ですが、代わりの区切り文字を指定することができます。MATLAB を出入りするファイルは、一見通常の区切り文字入りのファイルに見えますが、幾つか違いがあります。まずは、行列の最後の要素がゼロの場合、entries 形式では行と列の次元がわかるようにその要素を明示的に指定します。次に、複素数の値は "Zg" 形式(<実部>+<虚部>I)ではなく "z g" 形式(実部と虚部間に空白)で表記されます。
|
•
|
MATLAB バイナリ・ファイル専用のものを除き全てのオプションが利用可能です。format オプションは vectors の値は受け付けません。
|
|
|
Matrix Market 形式
|
|
•
|
Matrix Market ファイルは source=MatrixMarket オプションを用いてインポートされます。Matrix Market 形式のファイルは、ファイルが Matrix Market データを含むということを示す標準のコメント行を含みます。Maple がファイルから行列をインポートするときにそのようなコメント行を検知した場合、そのファイルは Matrix Market 形式であると見なします。コメント行が無ければ一般的な区切り文字入りのファイルであると見なします。
|
|
インポートされたファイルが Matrix Market の "coordinate" フォーマットの場合、疎行列を返します。ファイルが "array" フォーマットの場合、密(長方形)行列を作成します。"pattern" フォーマットはサポートされていません。ImportMatrix は、format と delimited のオプションを無視します。
|
•
|
ExportMatrix コマンドでは、疎行列は "coordinate" フォーマットで書かれ、密行列は "array" フォーマットで書かれます。デフォルトの動作は format オプションにより変更でき、entries とすれば "coordinate" フォーマットを使用し、rectangular とすれば "array" フォーマットを使用します。vectors は受け付けません。
|
|
行列の要素が文字を含む場合、定義済みのデータ型 integer、real、complex に当てはまりません。替わりに Maple[symbolic] を使用します。
|
•
|
delimiter オプションと、MATLAB バイナリ・ファイル専用のオプションは無視されます。
|
|
|
CSV (カンマ区切り)形式
|
|
•
|
CSV 形式は ImportMatrix でのみ利用できます。source オプションの値が csv または csv[Microsoft] のとき、ImportMatrix は Microsoft CSV ファイル形式のフィールドを読み込みます。csv[standard] が指定されている場合、標準的 CSV ファイルからフィールドを読み込みます。結果は、文字列型のオブジェクトの行列です。
|
•
|
MATLAB ライブラリ・ファイル専用のもの以外の全オプションが利用可能です。
|
|
|
一般的な区切り文字入り形式
|
|
•
|
ImportMatrix で、ソースファイルのフォーマットが特定できず、かつファイルに数値データが入っているとき、そのファイルは一般的な区切り文字入り形式であると見なされます。このことは、source=delimited オプションによっても指定できます。
|
|
インポートされるデータの種類が不明であるため、行列は %s で読み込まれ、解析されます。ただし、例外として %Zf 形式で保存された複素行列は %Zf 形式で読み込まれます。詳細は scanf 命令のヘルプをご覧ください。
|
•
|
ExportMatrix は、target オプションが提供されていない場合区切り文字入りの形式を用います。
|
|
複素数は、複素数であることが明確であるよう Zg 形式(<実部>+<虚部>I)で書き込まれます。
|
|
format=rectangular オプションが与えられたときは、全ての要素が書き出されます。format が vectors または entries のときは、保存された値だけが書き出され、帯行列や疎行列のような密でない行列を効率よく保存します。sparse[upper] または sparse[lower] の保存による対称行列では、要素の半分だけが書き出されます。データをインポートするプログラムは、行列の対称性について知る必要があります。
|
•
|
MATLAB バイナリ・ファイル専用のものを除いた全てのオプションが利用可能で、デフォルト値は上記オプションのセクションで説明した通りとなります。
|
|
|
例
|
|
注意: 結果を表示するには、カレント・ディレクトリをホーム・ディレクトリに変える必要があるかもしれません。詳細は currentdir をご覧ください。
>
|
matlabFile := cat(kernelopts(datadir), `if`(kernelopts(byteorder)="little endian", "/help/ImportData/dataLE.mat", "/help/ImportData/dataBE.mat")):
|
Matlab バイナリ・データファイルをインポートします。
>
|
A := ImportMatrix(matlabFile, source=Matlab);
|
| (12.1) |
同じファイルをインポートしますが、行列だけを返します。
>
|
A := ImportMatrix(matlabFile, source=Matlab, output=matrices);
|
| (12.2) |
>
|
matlabFile := cat(kernelopts(datadir), "/help/ImportData/data"):
|
Matlab ASCII データファイルを entries 形式でインポート。
>
|
A := ImportMatrix(matlabFile, source=Matlab, format=entries, transpose=true);
|
| (12.3) |
前のデータを長方形 Matlab 形式としてエクスポート。
>
|
ExportMatrix(matlabData, A, target=Matlab, format=rectangular, mode=ascii);
|
| (12.4) |
skiplines オプションを使えば、ソースデータ冒頭の数行を飛ばすことができます。
>
|
ImportMatrix(matlabData, source=Matlab, skiplines=30);
|
| (12.5) |
>
|
delimitedFile := cat(kernelopts(datadir), "/help/ImportData/example.del"):
|
delimiter オプションを使って、データの区切り文字を指定します。
>
|
ImportMatrix(delimitedFile, delimiter=" ", datatype=string);
|
| (12.6) |
>
|
csvFile := cat(kernelopts(datadir), "/help/ImportData/excel.csv"):
|
csv ファイル形式の使用法の例を示します。
>
|
ImportMatrix(csvFile, source=csv);
|
| (12.7) |
|
|