0
clear all
syms s w
G = 1/((s)*(s+1)*(s+2)); %transfer function
G_w = subs(G,s,j*w);
W= [-100:0.01:100]; %[min_range:step size:max_range]
nyq = eval(subs(G_w,w,W));
x = real(nyq)
y = imag(nyq)
plot(x,y)
このコードを実行できないようで、20行未満しかない行100 ++でエラーが表示され続けます。MATLABでシンボリック式を評価するときにゼロ除算
Error using symengine (line 59)
Division by zero.
Error in sym/subs>mupadsubs (line 139)
G = mupadmex('symobj::fullsubs',F.s,X2,Y2);
Error in sym/subs (line 124)
G = mupadsubs(F,X,Y);
Error in nyquist2 (line 8)
nyq = eval(subs(G_w,w,W)); %replace W with w in equation G_w
これは表示されているエラーですが、どの専門家がこれを助けることができますか?
こんにちは@Suever、 を作成するために呼び出されたコードに発生した場所のスタックトレースが注文され
を呼び出していること迅速な返信をありがとう!使用方法を聞いてもいいですか? [〜、ind] = min(abs(W)); W(ind)= eps; 私は直角に2直線のプロットを得ているようですが、それは私のナイキストプロット(通常は包囲)からかなり離れています。あなたの時間を取って申し訳ありません! あなたから聞いて欲しいです! – Niam
@Niam私はそれを少しはっきりさせるように更新しました。基本的には 'W'のゼロ値を非常に小さなイプシロンに置き換えているので、ゼロで除算するのを避けることができます。あなたのプロットが期待通りに見えない限り、あなたが示した方法論はうまくいきます(例えば、1 /(s + 1)の伝達関数を試してみてください)。 – Suever
ありがとう!私は今あなたのポイントを理解しています! – Niam