help, pls how can i convert from syms to double
2 ビュー (過去 30 日間)
古いコメントを表示
abdulwahab ibrahim
2016 年 3 月 16 日
コメント済み: Javier Bastante
2016 年 3 月 28 日
clc
clear all
syms s
Kw= 0.05;Ka=0.01;
T=0.1; R=500;
f=50; L=2500*10^-6;
X=2*pi*f*L;
d0_1=-0.019; d0_2=0.019; dw1=0.5; dw2=-0.5; dV1=0; dV2=0;
dPavg1=-10; dPavg2=10; dQavg1=0; dQavg2=0;
M=4*X + X^3/R^2;
t=(0:0.2:2)
V1eq=23;
V2eq=23;
O1eq=0.019;
O2eq=-0.019;
a1=(2*X*V1eq/R + 2*V2eq*sin(O1eq - O2eq) + X*V2eq/R*cos(O1eq - O2eq))/4*X + X^3/R^2;
b1=(2*V1eq*sin(O1eq - O2eq) + (X/R)*V1eq*cos(O1eq - O2eq))/M;
c1=(2*V1eq*V2eq*cos(O1eq - O2eq) - (X/R)*V1eq*V2eq*sin(O1eq - O2eq))/M;
d1=-c1;
a2=(2*V2eq*sin(O2eq - O1eq) + (X/R)*V2eq*cos(O2eq - O1eq))/M;
b2=(2*V2eq*X/R + 2*V1eq*sin(O2eq - O1eq) + V1eq*(X/R)*cos(O2eq -O1eq))/M;
c2=(-2*V1eq*V2eq*cos(O2eq - O1eq) + (X/R)*V1eq*V2eq*sin(O2eq - O1eq))/M;
d2= -c2;
a3=(2*(X^2/R^2 + 2)*V1eq - 2*V2eq*cos(O1eq - O2eq) + X/R*V2eq*sin(O1eq - O2eq))/M;
b3=(-2*V1eq*cos(O1eq - O2eq) + X/R*V1eq*sin(O1eq - O2eq))/M;
c3=(2*V1eq*V2eq*sin(O1eq - O2eq) + X/R*V1eq*V2eq*cos(O1eq - O2eq))/M;
d3= -c3;
a4= (-2*V2eq*cos(O2eq - O1eq) + (X/R)*V2eq*sin(O2eq - O1eq));
b4=(2*(2+X^2/R^2)*V2eq - 2*V1eq*cos(O2eq - O1eq) + X/R * V1eq*sin(O2eq - O1eq))/M;
c4=(-2*V1eq*V2eq*sin(O2eq - O1eq) - X/R*V1eq*V2eq*cos(O2eq - O1eq));
d4=-c4;
X1=[d0_1; d0_2; dw1; dw2; dV1; dV2; dPavg1; dPavg2; dQavg1; dQavg2];
A1=[0 1 0 0 0 0 0 0 0 0;
0 0 0 1 0 0 0 0 0 0;
(-Kw*c1)/T (-Kw*d1)/T -1/T 0 (-Kw*a1)/T (-Kw*b1)/T 0 0 0 0;
(-Kw*c2)/T (-Kw*d2)/T 0 -1/T (-Kw*a2)/T (-Kw*b2)/T 0 0 0 0;
(-Ka*c3)/T (-Ka*d3/T) 0 0 (1+Ka*a3)/T (-Ka*b3/T) 0 0 0 0;
(-Ka*c4)/T (-Ka*d4)/T 0 0 (-Ka*a4)/T -(1+Ka*b4)/T 0 0 0 0;
c1/T d1/T 0 0 a1/T b1/T -1/T 0 0 0;
c2/T d2/T 0 0 a2/T b2/T 0 -1/T 0 0;
c3/T d3/T 0 0 a3/T b3/T 0 0 -1/T 0;
c4/T d4/T 0 0 a4/T b4/T 0 0 0 -1/T]
sX1=A1*X1
plot(t,dPavg1)
3 件のコメント
Walter Roberson
2016 年 3 月 16 日
Note that your dPavg1 is just the scalar value -10 so you would have trouble seeing your plot.
採用された回答
Javier Bastante
2016 年 3 月 16 日
編集済み: Javier Bastante
2016 年 3 月 28 日
It's true that you haven't used s but the answer to your question is as easy as this:
>> syms s
>> number=s+s-3/4 %The result will be 3/4 as symbolic
>> number2=double(number) %Now the result is 0.7500
So, the function is double(var)
Hope it's useful. Regards
1 件のコメント
Javier Bastante
2016 年 3 月 28 日
I wrote syms x instead of syms s. Sorry about that. It's already been corrected
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!