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

3 visualizzazioni (ultimi 30 giorni)
圭祐
圭祐 il 10 Nov 2022
Commentato: 圭祐 il 10 Nov 2022
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からの時系列データです。

Risposte (1)

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

Accedi per commentare.

Categorie

Scopri di più su プログラムによるモデル編集 in Help Center e File Exchange

Prodotti


Release

R2016b

Community Treasure Hunt

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

Start Hunting!