![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1187548/image.png)
MATLAB Functioを使用して 配列に動的な値を代入する方法
1 回表示 (過去 30 日間)
古いコメントを表示
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からの時系列データです。
0 件のコメント
回答 (1 件)
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」の所はほぼ必ず必要になります。
実行すると以下のようになります。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1187548/image.png)
本モデルは添付しました。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!