0

私は現在、simulink を大量に使用するより大きなプロジェクトの基礎を学ぼうとしています。現時点では、フィードバックを使用して独自の simulink ブロックをコーディングしたいと考えています。これは、入力の 1 つが出力でもあることを意味します (すべてが正しく行われるように、それらの間に「メモリ」ブロックがあります!)。

私のコードは次のようになります

function out = func(cmd,in)

if in == 0 && cmd == 1
    out = 1;
elseif in == 1 && cmd == 0
    out = 0;
else
    disp('error')
end

先ほど言ったように、「in」は「out」につながっています。残念ながら、out の初期値を設定する必要があります。そうしないと、エラーが発生します。もちろん、そのようなコードではできません:

out = 0;

その場合、値 'out' は各タイム ステップで 0 に設定されます。

それを行うためのアドバイスはありますか?S-Function とフラグを使用できると読みましたが、どのように機能するかわかりません。

4

2 に答える 2

0

さて、私はその問題を解決したと思います。私はそれをここに置きました、私は他の誰かを助けることができました

  • クロックを追加し、ifステートメントで初期化しますif time <=0 out = ... 。ただし、余分な入力を追加する必要があり、あまり便利ではありません。誰かがそれを解決する方法を教えてくれるかもしれません。
  • if適切に実行し、終了しますelse out = in;

ここが一番の問題だったと思います。また、matlab-function ブロックを、初期化するマスクを使用してサブシステムに配置しincmd.

またお世話になりました、大変助かりました。ただし、ステートメントif t<0が何らかの理由で機能しないため、私の問題はまだ解決されていません。

于 2016-10-28T08:34:16.380 に答える