Error: " Conversion to Logical from sym is impossible"

4 ビュー (過去 30 日間)
Yibo Li
Yibo Li 2013 年 1 月 12 日
I have my code here, it is very simple, I just want to solve the equation in "solve" function and then do a "if judgement", but error comes out and shows like this:
Code:
syms t t1 t2 Vds Vds1 Vds2 x y;
t1=0:1e-8:1e-6;
t2=1e-6:1e-8:2e-6;
t=[t1,t2];
Vpeak=1.5;
Vrise=(Vpeak/1e-6)*t1;
Vfall=(-Vpeak/1e-6)*t2+3;
t=[t1,t2];
Vsweep=[Vrise,Vfall];
Ce=2.2e-12;
Vgs=1.86;
Vt=1.742;
xpre=0;
tpre=0;
a=zeros(1,55);
for k=1:55
solve(0.032*((Vgs-Vt)*x-(0.5)*x^2)+Ce*((x-xpre)/(t(k)-tpre))==7.0063e-5*(Vsweep(k)-x)^2+2.2929e-5*(Vsweep(k)-x));
if x(1)<(Vgs-Vt)
Vds(k)=x(1);
else
Vds(k)=x(2);
end
xpre=a(1,k);
tpre=t(k);
end
Error:
Conversion to logical from sym is not possible.
Error in Codetest (line 32)
if x(1)<(Vgs-Vt)
Could somebody help me, thx.

回答 (1 件)

Walter Roberson
Walter Roberson 2013 年 1 月 12 日
You do the solve() but you throw away the answer.
You then have
if x(1)<(Vgs-Vt)
but x is still a symbol from the "syms", so you are trying to compare a symbol (that has no value other than its own name) to a numeric value. You cannot test that in a MATLAB "if" statement as it is simultaneously true and not true.
If your solve() had been solving for "x" then you would probably still have a problem because x would then at best be a symbolic number rather than a floating point number. You would need to test it with
if double(x(1)) < (Vgs-Vt)

カテゴリ

Help Center および File ExchangeSymbolic Math Toolbox についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by