構造体および配列内の定数のコード生成
コード ジェネレーターは次の場合に定数の構造体フィールドまたは配列要素を認識しません。
次のコードでは、コード ジェネレーターは構造体フィールド 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 コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)