MATLAB Functionを用​いた可変サイズのデー​タの出力方法

조회 수: 25 (최근 30일)
Osamu Sekino
Osamu Sekino 2018년 7월 14일
답변: Naoya 2018년 7월 24일
MATLAB Functionの入力として行の数を入力し、その入力した行数の0が出力されるようなモデルを作成したいと考えています。
上記のように、Constantブロックで作成したい行数を入力しております。
MATLAB Functionの中身は下記のようになっております。
function y = fcn(u)
y = zeros(u,1);
これでDisplayに5行の0というデータが出るようにしたいのですが、下記のようなエラーが発生します。
データ 'y' は可変サイズの行列と推定されますが、モデル エクスプローラーのプロパティでは継承されたサイズまたは固定サイズと指定されています。[可変サイズ] チェック ボックスをオンにし、サイズのフィールドで上限を指定してください。
そこで、yという変数を可変サイズに設定し、サイズの上限を定義しました。
しかしながら次は下記のようなエラーが発生します。
計算された最大サイズは有界ではありません。
静的なメモリ割り当ては、すべてのサイズが有界である必要があります。
計算されたサイズは [:? x 1] です。
上記内容はどのように解決できますでしょうか。
※諸事情により、Constantブロックでの行数の定義は必要となります。 ※特定のハードウェア向けのコード生成をしたく、当モデルを作成しております。

채택된 답변

Naoya
Naoya 2018년 7월 24일
assert 関数と関係演算子を使い、u に対して明示的にの上限を設定することで問題が回避できます。
以下はMATLAB Function ブロック内部のソースコード修正例となります。
function y = fcn(u)
assert(u<=10);
y = zeros(u,1);

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 User-Defined Functions에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!