メインコンテンツ

coder.write

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

R2023a 以降

    説明

    coder.write 関数を使用して、生成されたコードが実行時に読み取ることができるデータ ファイルを作成します。これらのファイルの拡張子は .coderdata です。この関数は、MATLAB® の実行でのみ使用し、C/C++ コード生成に使用する MATLAB コードでは使用しません。

    MATLAB 実行および生成コードで .coderdata ファイルからデータを読み取るには、coder.read 関数を使用します。.coderdata ファイルには、そのファイルに格納されているデータの型とサイズを指定する "タイプ ヘッダー" が含まれています。coder.read 関数は、ファイルの内容を解釈するときにこの情報を使用します。

    coder.write(filename,data) は、変数 data を現在のフォルダー内の filename.coderdata という名前のファイルに格納します。

    coder.write(filename,data,Name=Value) は、次のために使用できる追加の名前と値の引数を受け入れます。

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

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

    この構文を使用して、"タイプ ヘッダー ファイル" を作成します。これは、coder.read 関数にデータの型とサイズを指定するために使用する .coderdata ファイルです。

    すべて折りたたむ

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

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

    c = rand(20);

    この変数を、現在のフォルダー内の storageFile.coderdata という名前のファイルに格納します。

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

    複数の変数用のストレージ ファイルを作成します。

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

    var_a = rand(10);
    var_b = rand(20);

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

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

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

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

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

    実行時に複数の .coderdata ファイルを読み取ることができるコードを生成するとします。これらのファイルには、型は同じですがサイズが異なる配列データが含まれています。この目標を達成するには、個々のすべてのデータ ファイルと一致するタイプ ヘッダー ファイルを、エントリポイント関数内の coder.read 関数呼び出しに渡す必要があります。この例では、このようなタイプ ヘッダー ファイルを作成する方法を示します。実際のコード生成のワークフローについては、実行時にサイズが変化する可能性のあるデータの読み取りを参照してください。

    コマンド ラインで、両方とも double 型だがサイズが異なる変数 var_avar_b を作成します。coder.write 関数を使用して、これらの配列をファイル file_a.coderdatafile_b.coderdata にそれぞれ格納します。

    var_a = rand(10,20);
    var_b = rand(5,30);
    coder.write("file_a.coderdata",var_a)
    coder.write("file_b.coderdata",var_b)

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

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

    var_avar_b の両方の配列と互換性をもつように file_a.coderdata のヘッダー情報を変更します。変更したファイルを、必要な共通のタイプ ヘッダー ファイルとして使用できます。

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

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

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

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

    coder.write("file_b.coderdata",var_b,TypeHeader=common_type,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(data) です。

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

    例: 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)

    MATLAB コマンド ラインで .coderdata ファイルを書き込むときにステータス メッセージを表示するオプション。true または false として指定します。

    バージョン履歴

    R2023a で導入