構造体および配列内の定数のコード生成
コード ジェネレーターは次の場合に定数の構造体フィールドまたは配列要素を認識しません。
次のコードでは、コード ジェネレーターは構造体フィールド s.a
および s.b
が定数であると認識します。
function y = mystruct()
s.a = 3;
s.b = 5;
y = zeros(s.a,s.b);
構造体フィールドが制御構造内で代入される場合、コード ジェネレーターは定数フィールドを認識しません。この制限は定数要素をもつ配列にも適用されます。以下のコードについて考えます。
function y = mystruct(x) s.a = 3; if x > 1 s.b = 4; else s.b = 5; end y = zeros(s.a,s.b);
コード ジェネレーターは s.a
および s.b
が定数であると認識しません。可変サイズが有効の場合、y
は可変サイズの配列として扱われます。可変サイズが無効の場合、コード ジェネレーターはエラーを報告します。
次のコードでは、コード ジェネレーターは a(1)
が定数であると認識します。
function y = myarray()
a = zeros(1,3);
a(1) = 20;
y = coder.const(a(1));
次のコードでは、a(1)
は非スカラー インデックスを使用して代入されているため、コード ジェネレーターは a(1)
が定数であると認識しません。
function y = myarray()
a = zeros(1,3);
a(1:2) = 20;
y = coder.const(a(1));
定数と非定数の両方のフィールドをもつ出力構造体については、コード ジェネレーターは定数フィールドを認識しません。この制限は定数と非定数の要素をもつ配列にも適用されます。以下のコードについて考えます。
function y = mystruct_out(x) s = create_structure(x); y = coder.const(s.a); function s = create_structure(x) s.a = 10; s.b = x;
create_structure
は、1 つの定数フィールドと 1 つの非定数フィールドをもつ構造体 s
を返すため、コード ジェネレーターは s.a
が定数であると認識しません。coder.const
は定数ではないため、s.a
の呼び出しは失敗します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)