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

3 次查看(过去 30 天)
圭祐
圭祐 2022-11-10
评论: 圭祐 2022-11-10
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 个)

Toshinobu Shintai
Toshinobu Shintai 2022-11-10
変数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
ご丁寧な説明ありがとうがございました。解決することができました。

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Sources 的更多信息

产品


版本

R2016b

Community Treasure Hunt

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

Start Hunting!