メインコンテンツ

h5create

HDF5 データセットの作成

説明

h5create(filename,ds,sz) は、HDF5 ファイル filename に、sz で指定されたサイズで、完全な場所を含む名前をもつデータセット ds を作成します。

h5create(filename,ds,sz,Name=Value) は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、ChunkSize=[5 5] は HDF5 ファイルに個別に格納することができるデータセットの 5 行 5 列のチャンクを指定します。

すべて折りたたむ

絶対パスが /g1/g2/myDataset の固定サイズ 100×200×300 のデータセット myDataset を作成します。

h5create("myFile.h5","/g1/g2/myDataset",[100 200 300])

myDataset にデータを書き込みます。myDataset の次元が固定されているので、書き込まれるデータ量はデータセットのサイズと一致していなければなりません。

myData = ones(100,200,300);
h5write("myFile.h5","/g1/g2/myDataset",myData)
h5disp("myFile.h5")
HDF5 myFile.h5 
Group '/' 
    Group '/g1' 
        Group '/g1/g2' 
            Dataset 'myDataset' 
                Size:  100x200x300
                MaxSize:  100x200x300
                Datatype:   H5T_IEEE_F64LE (double)
                ChunkSize:  []
                Filters:  none
                FillValue:  0.000000

それぞれ 1000 行 2000 列のデータセットを含む 2 つの HDF5 ファイルを作成します。最初のデータセットには最大圧縮を指定した deflate フィルターを使用し、2 番目のデータセットにはエントロピー エンコードを指定した SZIP フィルターを使用します。圧縮フィルターを適用するときは、チャンク サイズを指定する必要があります。

h5create("myFileDeflate.h5","/myDatasetDeflate",[1000 2000], ...
         ChunkSize=[50 80],Deflate=9)
h5create("myFileSZIP.h5","/myDatasetSZIP",[1000 2000], ...
         ChunkSize=[50 80],SZIPEncodingMethod="entropy")

2 つのファイルの内容を表示し、さまざまなフィルターを確認します。

h5disp("myFileDeflate.h5")
HDF5 myFileDeflate.h5 
Group '/' 
    Dataset 'myDatasetDeflate' 
        Size:  1000x2000
        MaxSize:  1000x2000
        Datatype:   H5T_IEEE_F64LE (double)
        ChunkSize:  50x80
        Filters:  deflate(9)
        FillValue:  0.000000
h5disp("myFileSZIP.h5")
HDF5 myFileSZIP.h5 
Group '/' 
    Dataset 'myDatasetSZIP' 
        Size:  1000x2000
        MaxSize:  1000x2000
        Datatype:   H5T_IEEE_F64LE (double)
        ChunkSize:  50x80
        Filters:  szip
        FillValue:  0.000000

ランダム化されたデータを各データセットに書き込みます。

myData = rand([1000 2000]);
h5write("myFileDeflate.h5","/myDatasetDeflate",myData)
h5write("myFileSZIP.h5","/myDatasetSZIP",myData)

結果のファイルのサイズを調べて、圧縮フィルターを比較します。このデータの場合、deflate フィルターで、より大きな圧縮が得られます。

deflateListing = dir("myFileDeflate.h5");
SZIPListing = dir("myFileSZIP.h5");
deflateFileSize = deflateListing.bytes
deflateFileSize = 
15117631
SZIPFileSize = SZIPListing.bytes
SZIPFileSize = 
16027320
sizeRatio = deflateFileSize/SZIPFileSize
sizeRatio = 
0.9432

2 番目の次元に沿って無制限の 2 次元データセット myDataset3 を作成します。データセットの次元を Inf に設定する場合は、名前と値の引数 ChunkSize を指定する必要があります。

h5create("myFile.h5","/myDataset3",[200 Inf],ChunkSize=[20 20])

myDataset3 にデータを書き込みます。2 番目の次元は無制限であるため、2 番目の次元に沿って任意のサイズのデータを書き込むことができます。さらに、データセットの 1 つの次元が無制限であるため、データセットにデータを書き込むときに start および count 引数を指定する必要があります。

myData = rand(200,500);
h5write("myFile.h5","/myDataset3",myData,[1 1],[200 500])

HDF5 ファイルの内容全体を表示します。

h5disp("myFile.h5")
HDF5 myFile.h5 
Group '/' 
    Dataset 'myDataset3' 
        Size:  200x500
        MaxSize:  200xInf
        Datatype:   H5T_IEEE_F64LE (double)
        ChunkSize:  20x20
        Filters:  none
        FillValue:  0.000000

入力引数

すべて折りたたむ

HDF5 ファイルの名前。string スカラーまたは文字ベクトルとして指定します。filename がまだ存在しない場合、h5create 関数がファイルを作成します。

書き込み先の場所によって、filename は次のいずれかの形式にできます。

位置

形式

現在のフォルダー

現在のフォルダーに書き込むには、ファイルの名前を filename に指定します。

例: "myFile.h5"

その他のフォルダー

現在のフォルダーとは異なるフォルダーに書き込むには、絶対パス名または相対パス名を filename に指定します。

例: "C:\myFolder\myFile.h5"

例: "/myFolder/myFile.h5"

リモートの場所

リモートの場所に書き込むには、次の形式の Uniform Resource Locator (URL) として filename を指定します。

scheme_name://path_to_file/my_file.h5

リモートの場所に基づいて、scheme_name には次の表の値のいずれかを指定できます。

リモートの場所scheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasb, wasbs

詳細については、リモート データの操作を参照してください。

例: "s3://my_bucket/my_path/my_file.h5"

データセット名。作成されるデータセットの絶対パス名を含む string スカラーまたは文字ベクトルとして指定します。現在存在しないデータセットを指定すると、h5create 関数によってデータセットが作成されます。さらに、現在存在しない中間グループを指定すると、h5create 関数によってそのグループが作成されます。

例: "/myDataset"

例: "/g1/g2/myNestedDataset"

データセットのサイズ。スカラーまたは行ベクトルとして指定します。無制限の次元を指定するには、sz の対応する要素を Inf として指定します。この場合は、ChunkSize も指定しなければなりません。

例: 50

例: [2000 1000]

例: [100 200 Inf]

データ型: double

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: h5create("myFile.h5","/dataset1",[1000 2000],ChunkSize=[50 80],CustomFilterID=307,CustomFilterParameters=6) は、50 行 80 列のチャンク、登録された bzip2 フィルター (識別子 307)、圧縮ブロックサイズ 6 を使用して、HDF5 ファイル myFile.h5 に 1000 行 2000 列のデータセット dataset1 を作成します。

データセットのデータ型。次の値のいずれかとして指定して、MATLAB® データ型を表します。

  • "double"

  • "single"

  • "uint64"

  • "int64"

  • "uint32"

  • "int32"

  • "uint16"

  • "int16"

  • "uint8"

  • "int8"

  • "string"

データ型: string | char

チャンク サイズ。チャンクの次元を含むスカラーまたは行ベクトルとして指定します。sz のいずれかのエントリが Inf である場合、ChunkSize を指定しなければなりません。ChunkSize の長さは sz の長さと等しくなければならず、ChunkSize の各エントリは sz の対応する各エントリ以下でなければなりません。

例: 10

例: [20 10 100]

データ型: double

deflate 圧縮レベル。0 ~ 9 の整数スカラー値として指定します。既定値 0 は、圧縮なしを示します。値 1 は最小圧縮を示し、値 9 は最大圧縮を示します。Deflate を指定した場合は、ChunkSize も指定しなければなりません。

DeflateSZIPEncodingMethod の両方を同じ関数呼び出しで指定することはできません。

データ型: double

数値データセットの欠損データの埋め込み値。数値として指定します。

データ型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

32 ビットの Fletcher チェックサム フィルター。数値として、あるいは logical 1 (true) または 0 (false) として指定します。Fletcher チェックサム フィルターは、ファイル内の転送データにエラーがないことを検証します。Fletcher32 を指定した場合は、ChunkSize も指定しなければなりません。

データ型: logical | double

シャッフル フィルター。数値として、あるいは logical 1 (true) または 0 (false) として指定します。シャッフル フィルターはメモリに格納されているデータのバイト順を再配列することで圧縮率を改善します。Shuffle を指定した場合は、ChunkSize も指定しなければなりません。

データ型: logical | double

テキスト エンコード。次の値のいずれかとして指定します。

  • "UTF-8" — UTF-8 エンコードを使用して文字を表す。

  • "system" — システム エンコードを使用して文字をバイトとして表す (非推奨)。

データ型: string | char

The HDF Group によって割り当てられた登録済みフィルター プラグインのフィルター識別子。正の整数として指定します。登録済みフィルターのリストについては、The HDF Group の Web サイトの Filters ページを参照してください。

CustomFilterID に値を指定しなかった場合、データセットは動的に読み込まれるフィルターを圧縮に使用しません。

CustomFilterID を指定した場合は、ChunkSize も指定しなければなりません。

データ型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

サードパーティ フィルターのフィルター パラメーター。数値スカラーまたは数値行ベクトルとして指定します。この引数を指定せずに CustomFilterID を指定した場合、h5create 関数は空ベクトルを HDF5 ライブラリに渡し、フィルターは既定のパラメーターを使用します。

この名前と値の引数は、HDF5 ライブラリ内の関数 H5Pset_filtercd_values 引数に対応しています。

CustomFilterParameters を指定した場合は、CustomFilterID も指定しなければなりません。

データ型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

R2024b 以降

SZIP 圧縮のエンコード方式。"entropy" または "nearestneighbor" として指定します。entropy 方式は、既に処理されたデータに最適です。nearestneighbor 方式はデータを前処理してから、entropy 方式を適用します。SZIPEncodingMethod を指定した場合は、ChunkSize も指定しなければなりません。

SZIPEncodingMethodDeflate の両方を同じ関数呼び出しで指定することはできません。

データ型: string | char

R2024b 以降

SZIP 圧縮のブロックあたりのピクセル (HDF5 データ要素) の数。2 ~ 32 の偶数として指定します。SZIPPixelsPerBlock を指定した場合は、SZIPEncodingMethod も指定しなければなりません。SZIPPixelsPerBlock の値は、各データセット チャンク内の要素の数以下でなければなりません。

例: 32

データ型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

詳細

すべて折りたたむ

ヒント

  • 同じデータセットで deflate フィルターと SZIP フィルターの両方を有効にするには、低水準の H5P.set_deflate 関数と H5P.set_szip 関数を使用します。

バージョン履歴

R2011a で導入

すべて展開する