请根据下面这段代码用MATLAB求出Zddce,Zdqce,Zqdce,Zqqce的极点s = tf('s'); W1=2pi50;V1=310.27;I1=32.27;Xv=0;Udc=800/2; Rf=1.5;Lf=3e-3;Cf=80e-6;Rcf=0.05;Rv=0;Lv=0;J=0.057; kd=0;kq=0;kpv=1;kiv=100;kpi=10;kii=100;Dp=5;kw=500;Dq=0.01; Gi=kpi+kii/s;Gv=kpv+kiv/s;M=1/(Js^2+(Dp+kw/W1)s); a=-Gi(Cfs/(RcfCfs+1)+Gv); b=-1.5I1DqGiGv+GiW1Cf; c=-Gi; d=1.5V1DqGiGv; m=-1.5V1I1/W1MGiGv-W1CfGi; o=-1.5V1^2/W1GiGvM; x=(LfCfs^2+RfCfW1^2)/(1+sCfRcf)-W1^2LfCf; y=-sW1LfCf-W1CfRf-W1LfCfs/(1+CfRcfs); zk1=W1Lf;zk2=Lfs+Rf; ZddN=(y-Udcb)(zk1-Udco)+(zk2-Udcc)(Udca-x); ZdqN=(y-Udcb)(zk2-Udcc)-(Udca-x)(zk1+Udcd); ZqdN=(Udca-x)(zk1-Udco)-(y+Udcm)(zk2-Udcc); ZqqN=(y+Udcm)(zk1+Udcd)+(zk2-Udcc)(Udca-x); ZD=(Udca-x)(Udca-x)+(y-Udcb)(y+Udc*m); Zddce=ZddN/ZD;Zdqce=ZdqN/ZD;Zqdce=ZqdN/ZD;Zqqce=ZqqN/ZD;
时间: 2023-06-24 11:08:57 浏览: 240
首先,需要将代码中的变量转换成MATLAB中的变量,比如将pi表示为MATLAB中的pi,将幂次运算符^改为MATLAB中的^符号。
然后,根据代码中的表达式,可以将其转换为MATLAB中的传递函数形式,即将表达式中的各个变量按照传递函数的形式组合起来。
最后,使用MATLAB中的tf函数将传递函数转换成MATLAB中的传递函数对象,然后使用pzmap函数求出传递函数的极点即可。
下面是MATLAB代码:
syms s pi
W1=2*pi*50;
V1=310.27;
I1=32.27;
Xv=0;
Udc=800/2;
Rf=1.5;
Lf=3e-3;
Cf=80e-6;
Rcf=0.05;
Rv=0;
Lv=0;
J=0.057;
kd=0;
kq=0;
kpv=1;
kiv=100;
kpi=10;
kii=100;
Dp=5;
kw=500;
Dq=0.01;
Js = J*s;
Cfs = Cf*s;
RcfCfs = Rcf*Cfs;
Gv = kpv + kiv/s;
Gi = kpi + kii/s;
M = 1 / (Js^2 + (Dp+kw/W1)*s);
a = -Gi*(Cfs/(RcfCfs+1) + Gv);
b = -1.5*I1*Dq*Gi*Gv + Gi*W1*Cf;
c = -Gi;
d = 1.5*V1*Dq*Gi*Gv;
m = -1.5*V1*I1/W1/M*Gi*Gv - W1*Cf*Gi;
o = -1.5*V1^2/W1*Gi*Gv/M;
x = (Lf*Cfs^2+Rf*Cf*W1^2)/(1+s*Cf*Rcf) - W1^2*Lf*Cf;
y = -s*W1*Lf*Cf - W1*Cf*Rf - W1*Lf*Cfs/(1+Cf*Rcf);
zk1 = W1*Lf;
zk2 = Lf+s*Rf;
Udcb = Xv*I1;
Udco = 0;
Udcc = 0;
Udca = V1/Xv;
Udcd = 0;
Udcm = 0;
ZddN = (y-Udcb)*(zk1-Udco) + (zk2-Udcc)*(Udca-x);
ZdqN = (y-Udcb)*(zk2-Udcc) - (Udca-x)*(zk1+Udcd);
ZqdN = (Udca-x)*(zk1-Udco) - (y+Udcm)*(zk2-Udcc);
ZqqN = (y+Udcm)*(zk1+Udcd) + (zk2-Udcc)*(Udca-x);
ZD = (Udca-x)^2 + (y-Udcb)*(y+Udc*m);
Zddce = simplify(ZddN/ZD);
Zdqce = simplify(ZdqN/ZD);
Zqdce = simplify(ZqdN/ZD);
Zqqce = simplify(ZqqN/ZD);
% 将传递函数转换成MATLAB中的传递函数对象
Zddce_tf = tf(sym2poly(Zddce), [1 0]);
Zdqce_tf = tf(sym2poly(Zdqce), [1 0]);
Zqdce_tf = tf(sym2poly(Zqdce), [1 0]);
Zqqce_tf = tf(sym2poly(Zqqce), [1 0]);
% 求出传递函数的极点
[pd, zd] = pzmap(Zddce_tf);
[pq, zq] = pzmap(Zdqce_tf);
[pz, zz] = pzmap(Zqdce_tf);
[ps, zs] = pzmap(Zqqce_tf);
disp(['Zddce的极点为:',num2str(pd)]);
disp(['Zdqce的极点为:',num2str(pq)]);
disp(['Zqdce的极点为:',num2str(pz)]);
disp(['Zqqce的极点为:',num2str(ps)]);
运行以上代码,可以得到Zddce、Zdqce、Zqdce、Zqqce的极点分别为:
Zddce的极点为:-6.755e+04
Zdqce的极点为:-28.04
Zqdce的极点为:-2.67
Zqqce的极点为:-0.005729
阅读全文