私は現在、simulinkを大量に使用するより大きなプロジェクトの基礎を学んでいます。 今、私は自分のsimulinkブロックをフィードバックしたいと思います。これは、入力の1つが出力でもあることを意味します(すべてが正しいことを保証するために、それらの間に 'メモリ'ブロックがあります)。私は「アウト」にリンクされている「に」と言ったようmatlab関数ブロック(simulink)の初期条件を設定します
私のコードは
function out = func(cmd,in)
if in == 0 && cmd == 1
out = 1;
elseif in == 1 && cmd == 0
out = 0;
else
disp('error')
end
のように見えます。不幸にも、初期値を設定する必要があります。それ以外の場合はエラーが発生します。もちろん、そのようなコードではできません:
この場合、値outは各タイムステップで0に設定されます。
アドバイスをお願いしますか?私は、S-functionとフラグを使用できると読んだことがありますが、どのように動作するのか分かりません。
ありがとうございました。 まず、 'disp'コマンドはここで私が何をしようとしているのかを説明するためのものです。これは私の実際のコードではありません。それで、そこに奇妙なものがあるのです! 'Matlab関数 'の直後に' Initial condition'ブロックを使用しようとしましたが、何も変更されていません。たぶん私は間違った方法でそれを使用しています。私はそれを調べます。 私もあなたが私に言ったことをしました。シミュレーションを実行する前に 'cmd = 0'と' in = 0'をワークスペースに設定しましたが、同じエラーメッセージが出ました_アウトパス引数 'out'がいくつかの実行パスに割り当てられていません とにかくお返事ありがとうございます – Ezor
おそらく 't = 0'を使って初期条件を設定してください。クロックと新しい入力を追加せずに私の関数で時間を得る方法を知っていますか?私はすべての私の将来のブロックのための余分な入力を追加したくない! – Ezor
ブロックへの入力として時間をかけたくありません。それの必要はありません。表示されたコードでは発生していない、コード内のすべての可能なパスに出力が割り当てられていることを確認してください。 –