MATLAB Functionを用いた可変サイズのデータの出力方法
24 ビュー (過去 30 日間)
古いコメントを表示
MATLAB Functionの入力として行の数を入力し、その入力した行数の0が出力されるようなモデルを作成したいと考えています。

上記のように、Constantブロックで作成したい行数を入力しております。
MATLAB Functionの中身は下記のようになっております。
function y = fcn(u)
y = zeros(u,1);
これでDisplayに5行の0というデータが出るようにしたいのですが、下記のようなエラーが発生します。
データ 'y' は可変サイズの行列と推定されますが、モデル エクスプローラーのプロパティでは継承されたサイズまたは固定サイズと指定されています。[可変サイズ] チェック ボックスをオンにし、サイズのフィールドで上限を指定してください。
そこで、yという変数を可変サイズに設定し、サイズの上限を定義しました。

しかしながら次は下記のようなエラーが発生します。
計算された最大サイズは有界ではありません。
静的なメモリ割り当ては、すべてのサイズが有界である必要があります。
計算されたサイズは [:? x 1] です。
上記内容はどのように解決できますでしょうか。
※諸事情により、Constantブロックでの行数の定義は必要となります。 ※特定のハードウェア向けのコード生成をしたく、当モデルを作成しております。
0 件のコメント
採用された回答
Naoya
2018 年 7 月 24 日
assert 関数と関係演算子を使い、u に対して明示的にの上限を設定することで問題が回避できます。
以下はMATLAB Function ブロック内部のソースコード修正例となります。
function y = fcn(u)
assert(u<=10);
y = zeros(u,1);
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で User-Defined Functions についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!