MATLAB Functioを使用して 配列に動的な値を代入する方法

Function y=fcn(u,i)
y=zeros(1,1000);
y(1,i)=u;
end
※ i はsimulinkから代入しており、i=1からインクリメントしています。
この場合、yの配列を確認したらすべての要素に0が代入されています。
やりたいこととしては、y(1,i)の要素にuを代入したいです。
uはFrom spreadsheetからの時系列データです。

回答(1 个)

変数yが MATLAB Function ブロックを呼び出す度にzeros(1,1000)に書き換えられているために、過去のタイムステップに格納した情報を保持できていません。"persistent"を使って静的な変数を定義する必要があります。
例えば以下のように記述します。
function y = fcn(u,i)
persistent vec;
if isempty(vec)
vec = zeros(1, 1000);
end
vec(1,i) = u;
y = vec;
end
静的変数を初期化するために、「if isempty」の所はほぼ必ず必要になります。
実行すると以下のようになります。
本モデルは添付しました。

1 个评论

圭祐
圭祐 2022-11-10
ご丁寧な説明ありがとうがございました。解決することができました。

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Simulink Function 的更多信息

产品

版本

R2016b

提问:

2022-11-10

评论:

2022-11-10

Community Treasure Hunt

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

Start Hunting!