Main Content

coder.write

実行時に生成コードで読み取るデータ ファイルを作成

R2023a 以降

    説明

    coder.write(fileName,data) は、引数 data を現在のディレクトリにある名前 fileName.coderdata のファイルに格納します。この関数は、MATLAB® の実行でのみ使用し、C/C++ コード生成に使用する MATLAB コードでは使用しません。

    MATLAB および生成コードで .coderdata ファイルからデータを読み取るには、関数 coder.read を使用します。

    .coderdata ファイルには、そのファイルに格納されているデータの型とサイズを指定する "タイプ ヘッダー" が含まれています。関数 coder.read の生成コードでは、実行時に任意の .coderdata ファイルを読み取ることができ、その型とサイズは、コード生成時に coder.read に提供する型とサイズの情報と一致したものになります。

    coder.write(fileName,data,Name=Value) は、"タイプ ヘッダー ファイル" を作成します。これは、関数 coder.read にデータの型とサイズを指定するために使用する .coderdata ファイルです。名前と値の引数は次の目的に使用します。

    • 変数 data と一致する .coderdata ファイルのカスタム タイプ ヘッダーを指定する。

    • 実際のデータを省略し、タイプ ヘッダーのみを含む .coderdata ファイルを作成する。

    すべて折りたたむ

    この例では、単一の変数用のストレージ ファイルを作成する方法を示します。このストレージ ファイルは、関数 coder.read を使用して実行時に読み取ることができます。

    ワークスペースに 20 行 20 列の double 型の配列を作成します。

    c = rand(20);

    この変数を現在のディレクトリ内の storageFile.coderdata という名前のファイルに格納します。

    coder.write("storageFile.coderdata",c);

    この例では、複数の変数用のストレージ ファイルを作成する方法を示します。

    ワークスペースに 2 つの double 型の配列を作成します。配列 a のサイズは 10 行 10 列で、配列 b は 20 行 20 列です。

    a = rand(10);
    b = rand(20);

    配列 ab をフィールドに格納する構造体 s を作成します。

    s = struct('a',a,'b',b);

    構造体 s.coderdata ファイルに格納します。

    coder.write("storageFile.coderdata",s);

    あるいは、cell 配列を使用して複数の変数を .coderdata ファイルに格納できます。

    この例では、実行時に複数の .coderdata ファイルを読み取ることができる coder.read コマンドのコードを生成します。これらのファイルには、型は同じですがサイズが異なる配列データが含まれています。コードを生成するには、個々のすべてのデータ ファイルと一致するタイプ ヘッダー ファイルを関数 coder.read の呼び出しに渡す必要があります。

    double 型の配列データをもつ 2 つの変数を格納するストレージ ファイル file_a.coderdata を作成します。変数 ab はサイズが異なります。

    a = rand(10,20);
    b = rand(5,30);
    coder.write("file_a.coderdata",a);

    a および b の両方の変数と一致する coder.Type オブジェクトでは、次元を可変サイズにする必要があります。2 つの配列次元の上限は、それぞれ少なくとも 10 と 30 でなければなりません。これらの範囲をもつ可変サイズの double 型を表す coder.Type オブジェクトを作成します。

    t = coder.typeof(a,[10 30],[1 1])
    t = 
    
    coder.PrimitiveType
       :10×:30 double

    file_a.coderdata のヘッダー情報を変更し、変更したファイルをタイプ ヘッダー情報のソースとして使用できます。

    coder.write("file_a.coderdata",a,TypeHeader=t);

    次のコマンドを実行して、必要なタイプ ヘッダー情報をもつ file_b.coderdata ファイルを作成することもできます。

    coder.write("file_b.coderdata",b,TypeHeader=t);

    あるいは、実際のデータは含めずに、既存のすべてのストレージ ファイルと互換性があるタイプ ヘッダーのみを含む独立したタイプ ヘッダー ファイル myTypeHeader.coderdata を作成できます。

    coder.write("file_b.coderdata",b,TypeHeader=t,TypeHeaderOnly=true);

    このようなタイプ ヘッダー ファイルは、大きなデータ ファイルを扱う場合に、生成されたファイルをタイプ ヘッダー ファイルとしてのみ使用するのに便利です。

    入力引数

    すべて折りたたむ

    新規または既存のストレージ ファイルの名前または絶対ファイル パス。string スカラーまたは文字ベクトルとして指定します。生成されるストレージ ファイルの名前は fileName.coderdata になります。提供した値に既に拡張子がある場合は、そのまま fileName になります。

    ストレージ ファイルに保存するデータ ソース。単一の配列か、構造体または cell 配列内に格納された複数の配列として指定します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | cell | categorical | sparse
    複素数のサポート: あり

    名前と値の引数

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

    R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

    例: coder.write('example.coderdata',rand(1000),TypeHeader=coder.typeof(1,[1000 1000],1 1]),TypeHeaderOnly=true)

    ストレージ データの型情報。coder.Type オブジェクトとして指定します。この型オブジェクトは、入力引数 data と互換性がなければなりません。

    型オブジェクトを作成するには、関数 coder.typeof (MATLAB Coder) または coder.newtype (MATLAB Coder) を使用します。coder.Type オブジェクトの作成と編集は、コード生成の型エディターを使用して対話形式で行うこともできます。コード生成の型エディターを使用した入力の型の作成と編集 (MATLAB Coder)を参照してください。

    例: coder.write('example.coderdata',rand(10),TypeHeader=coder.typeof(1,[10 10],1 1]))

    データを省略してタイプ ヘッダーのみを含む .coderdata ファイルを作成するかどうかを指定するオプション。true または false として指定します。data が大きな配列の場合に .coderdata ファイルをタイプ ヘッダー ファイルとしてのみ使用するには、この引数を true に設定します。

    例: coder.write('example.coderdata',rand(1000),TypeHeaderOnly=true)

    .coderdata ファイルへの書き込み時に MATLAB コマンド ラインでレポートするかどうかを指定するオプション。true または false として指定します。

    バージョン履歴

    R2023a で導入