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

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

Accepted Answer

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

More Answers (0)

Community Treasure Hunt

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

Start Hunting!