2017-11-24 6 views
1

SimulinkのMATLAB Functionブロックでは、永続変数を実装できます。しかし、MATLABの関数ブロックやその他の同様のスクリプティング手法を使用することなく、誰かが同じことをどのように実装するのでしょうか?言い換えれば、Simulinkの永続変数の動作を基本/基本ブロック(外部ツールボックスなし)で複製することは可能ですか?Simulinkで永続変数に相当するものを実装する方法は?

function y = fcn(u) 
%#codegen 
persistent n; 
if isempty(n) %%initialize persistent variable 
    n = 1; 
end 
if u == 4 || n == 1 
    y = 0; 
    n = 2; 
elseif n == 2 
    if ... 
     n = 1; 
    else ... 
     n = 3; 
    end 
else 
    n = -1; 
end 
+1

このような永続メモリは[ユニット遅延](https://www.mathworks.com/help/simulink/slref/unitdelay.html)と同等です。あなたの例では、初期条件は1で、ブロック出力は_old_nであり、コード内のロジックは_new_nである(単位遅延)ブロック入力信号を計算するために使用されます。 –

答えて

1

ブロックData Store Memoryを使用すると、永続変数をシミュレートできます。

永続変数は関数呼び出しで値を保持するが、その関数内でしかアクセスできないため、データストアメモリブロック(永続変数を表す)を含むSimulinkサブシステム(関数を表す)を設定できます。

関連する問題