ドキュメンテーションヘルプ センタードキュメンテーション
このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
コード ジェネレーターは次の場合に定数の構造体フィールドまたは配列要素を認識しません。
制御構造内でのフィールドまたは要素への代入
次のコードでは、コード ジェネレーターは構造体フィールド s.a および s.b が定数であると認識します。
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 は可変サイズの配列として扱われます。可変サイズが無効の場合、コード ジェネレーターはエラーを報告します。
y
非スカラー インデックスを使用した定数の配列要素への代入
次のコードでは、コード ジェネレーターは a(1) が定数であると認識します。
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 の呼び出しは失敗します。
create_structure
s
coder.const
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
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:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office