multibandwrite
バンドインターリーブ データのファイルへの書き込み
構文
multibandwrite(data,filename,interleave)
multibandwrite(data,filename,interleave,start,totalsize)
multibandwrite(...,param,value...)
説明
multibandwrite(data,filename,interleave) は、2 次元または 3 次元の数値または logical 配列の data を filename で指定したバイナリ ファイルに書き込みます。filename は文字ベクトルまたは string スカラーとして指定します。data の 3 次元目の長さは、ファイルに書き込む帯域数を決定するものです。帯域は interleave で指定した型で、ファイルに書き込まれます。この引数に関する詳細は、インターリーブ法を参照してください。
filename が既に存在する場合、multibandwrite は、オプションの offset パラメーターを指定しない限り、それを書き換えます。他のオプションのパラメーターの詳細については、最後の構文とその説明を参照してください。
multibandwrite(data,filename,interleave,start,totalsize) は、data をバイナリ ファイル filename に細分化された形で書き込みます。この構文で、data は全データセットの中のサブセットです。
start は、1 行 3 列の配列 [firstrow firstcolumn firstband] で、書き込むデータの始まりを指定します。firstrow と firstcolumn は、イメージ ピクセルの左上の位置を指定します。firstband は、書き込む最初の帯域のインデックスを与えます。たとえば、data(I,J,K) は、(firstband+K-1) 番目の帯域の中の [firstrow+I-1, firstcolumn+J-1] のピクセルのデータです。
totalsize は、1 行 3 列の配列 [totalrows,totalcolumns,totalbands] で、ファイルに書き込むデータのフルな 3 次元サイズを指定します。
メモ
この構文内で、ファイルにすべてのデータを書き込むには、multibandwrite を複数回呼び出す必要があります。はじめて呼び出されたとき、multibandwrite はデータ サブセットの外側にあるすべての値に対して、すべての値を使用して、ファイル全体を書き込みます。個々に連続する呼び出しの中で、multibandwrite は、これらの値を data 内のサブセットで書き換えます。パラメーター filename、interleave、offset、totalsize は、ファイルに書き込まれる場合、定数のまま使用されます。
multibandwrite(...,param,value...) は、マルチ帯域データを、次のオプション パラメーター/値のペアを指定して書き込みます。
パラメーター | 説明 |
|---|---|
| ファイルに書き込む個々の要素の形式とサイズを指定する文字ベクトルまたは string スカラー。有効な値の一覧は、関数 |
| 最初のデータ要素の前まで、スキップするバイト数。ファイルが準備されていない場合、 このオプションは、データを書き込む前、または後のいずれかにヘッダー ファイルに書き込む場合に有効です。データが書き込まれた後にファイルにヘッダーを書き込む場合は、 |
| データをファイルに書き込む形式を制御する文字ベクトルまたは string スカラー。一般的な値は、 |
| 欠損データの代わりに使用する値を指定する数字。 |
インターリーブ法
interleave は、multibandwrite がデータをファイルに書き込む際の帯域のインターリーブ法を指定する文字ベクトルまたは string スカラーです。data が 2 次元の場合、multibandwrite は引数 interleave を無視します。以下の表は、サポートされている方法の一覧を示し、例のマルチ帯域ファイルを使用して、個々の方法を示します。

インターリーブ帯域のサポートされる方法は、以下のリストになります。
メソッド | 指定値 | 説明 | 例 |
|---|---|---|---|
ライン挟み込みバンド並び |
| 個々の帯域からすべての行を書き込む | AAAAABBBBBCCCCC AAAAABBBBBCCCCC AAAAABBBBBCCCCC |
画素挟み込みバンド並び |
| 個々の帯域から 1 つのピクセルを書き込む | ABCABCABCABCABC... |
バンド順データ並び |
| 各帯域をその全体に書き込む | AAAAA AAAAA AAAAA BBBBB BBBBB BBBBB CCCCC CCCCC CCCCC |
例
メモ
これらの例を実行するためには、書き込み可能なフォルダーに移動しなければなりません。
例 1
1 回の呼び出しでファイルにすべてのデータ (ライン単位のインターリーブ) を書き込みます。
data = reshape(uint16(1:600),[10 20 3]); multibandwrite(data,"data.bil","bil")
例 2
各整列に対して 1 回の呼び出しを使って、単一の帯域の整列したイメージを書き込むこれは、各帯域のサブセットが multibandwrite の各呼び出しで利用可能な場合のみ有効です。
numBands = 1; dataDims = [1024 1024 numBands]; data = reshape(uint32(1:(1024 * 1024 * numBands)), dataDims); for band = 1:numBands for row = 1:2 for col = 1:2 subsetRows = ((row-1)*512+1):(row*512); subsetCols = ((col-1)*512+1):(col*512); upperLeft = [subsetRows(1),subsetCols(1),band]; multibandwrite(data(subsetRows,subsetCols,band), ... "banddata.bsq","bsq",upperLeft,dataDims) end end end
バージョン履歴
R2006a より前に導入
参考
multibandread | fwrite | fread