Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

MATLAB Function ブロック内の可変サイズ配列に対するメモリ割り当ての制御

動的メモリ割り当てでは、スタックでメモリが静的に割り当てられるのではなく、実行時に必要に応じてヒープでメモリが割り当てられます。MATLAB Function ブロック内の配列に動的メモリ割り当てを使用できます。

以下に対しては、動的メモリ割り当てを使用できません。

  • 入力信号と出力信号。可変サイズの入力信号と出力信号には上限がなければなりません。

  • パラメーターまたはグローバル変数。パラメーターおよびグローバル変数は固定サイズでなければなりません。

  • バス配列のフィールド。バス配列は可変サイズのフィールドをもつことはできません。

  • MATLAB System ブロックに関連付けられた System object の離散状態プロパティ。

動的メモリ割り当ては次のような場合に便利です。

  • 配列の上限がわからない。

  • 大きい配列に対してスタックでメモリを割り当てたくない。

動的メモリ割り当てとこのメモリの解放によって、生成されたコードの実行速度が遅くなる場合があります。MATLAB Function ブロックの可変サイズ配列に対する動的メモリ割り当ての使用は、以下によって管理できます。

可変サイズの配列に対する上限の指定

制限なしの可変サイズの配列では、コード ジェネレーターはヒープでメモリを動的に割り当てます。制限付きの可変サイズの配列では、バイト単位でのサイズが動的メモリ割り当てしきい値より小さい場合、コード ジェネレーターはスタックでメモリを静的に割り当てます。動的メモリ割り当てを避けるには、バイト単位の配列のサイズが動的メモリ割り当てしきい値より小さくなるように配列の次元の上限を指定します。可変サイズ配列の上限の指定を参照してください。

MATLAB Function ブロックの動的メモリ割り当ての無効化

既定では、MATLAB Function ブロックの動的メモリ割り当ては、GRT ベースのターゲットについては有効、ERT ベースのターゲットについては無効です。この設定を変更するには、[コンフィギュレーション パラメーター] ダイアログ ボックスで [MATLAB 関数での動的メモリ割り当て] チェック ボックスをオフまたはオンにします。

動的メモリ割り当てを無効化する場合は、可変サイズの配列に対して上限を指定しなければなりません。

動的メモリ割り当てしきい値の変更

すべての可変サイズの配列の動的メモリ割り当てを無効にする代わりに、コード ジェネレーターが動的メモリ割り当てを使用する場合に、動的メモリ割り当てのしきい値を指定できます。

動的メモリ割り当てしきい値を使用して次を実行できます。

  • 小さい配列の動的メモリ割り当てを無効にする。小さい配列では、静的メモリ割り当てによって生成コードの速度が向上する場合があります。ただし、静的メモリ割り当てによって未使用のストレージ領域ができる可能性があります。未使用のストレージ領域は、小さい配列の場合はそれほど大きな考慮事項ではないと判断できます。

  • 大きい配列の動的メモリ割り当てを有効にする。大きな配列では、動的メモリ割り当ての使用によってストレージ要件を大幅に減らすことができます。

動的メモリ割り当てしきい値の既定値は 64 キロバイトです。このしきい値を変更するには、[コンフィギュレーション パラメーター] ダイアログ ボックで [MATLAB 関数での動的メモリ割り当てしきい値] パラメーターを設定します。

すべての可変サイズの配列で動的メモリ割り当てを使用するには、しきい値を 0 に設定します。

関連するトピック