Simulinkに2つの入力を受け取り、出力を生成するMatlab関数ブロックを持っています。シミュレーションの経過中、いくつかの時点で、入力の1つがゼロになります。私はその特定の入力値がゼロであるときはいつでも、関数に最も最近の非ゼロ入力を使用したいと思います。どうすればこれを達成できますか?最近の非ゼロの入力値を更新する永続変数を作成しようとしましたが、それはうまくいかないようです。SimulinkのMatlab関数 - 以前の非ゼロの入力値を保持
EDIT 1(コードを含める):
function y = fcn(u)
persistent ref_val
if isEmpty(ref_val)
ref_val=10.0
end
if(u(1)<=25)
y=20.0
else
if(u(2)>0)
y=u(2)
ref_val=u(2)
else
y=ref_val
end
end
EDIT 2:今のところ、私は最近の非ゼロの入力値を保持するために静的変数を使用してCコードを書くことにより、問題を修正。しかし、私はMatlab関数で直接これを実現するための提案/解決策を歓迎しています。
この入力を使用して、関数は、永続変数はこれを行う方法です。あなたのコードを私たちに教えてください。 –
フィル、申し訳ありませんがコードを含める必要があります。編集をご覧ください。 – arun
コードが正しいようですか?例外として、 "isEmpty"は "isempty"でなければならないと思います。なぜなら、MATLABは組み込み関数に対して大文字と小文字を区別するからです。 – DMR