查看: 654|回复: 5|关注: 0

[已解决] 已知传递函数和零极点,画波特图

[复制链接]

新手

29 麦片

财富积分


050


6

主题

15

帖子

0

最佳答案
  1. %定义各种参数%
  2. syms s C L1 L2 C2 u1 ui uo Vlow D R Z P n d
  3. %定义传递函数%
  4. syms M E H Q
  5. %带入实际数据%
  6. L1=1*10^(-4);
  7. L2=1*10^(-3);
  8. C=5*10^(-6);
  9. C2=5*10^(-6);
  10. R=5;
  11. Vlow=50;
  12. D=3/4;

  13. %Boost模式下计算矩阵A的逆%
  14. A=[0,D-1,0,0;0.5*(1-D),0,-0.5*(1+D),0;0,1+D,0,-1;0,0,1,-1/R];
  15. A1=inv(A);

  16. %Boost模式下计算He(s)%
  17. eqns=[((1-D)^2/((1+D)^2*s*L1)+s*C/(2*(1+D)^2)+1/(s*L2))*u1==(ui*(1-D)^2)/((1+D)^2*s*L1)+uo/(s*L2),...
  18.    (1/R+1/(s*L2)+s*C2)*uo==u1/(s*L2)];
  19. vars=[ui,uo];
  20. [solui,soluo]=solve(eqns,vars);
  21. H=soluo/solui;

  22. %Boost模式下计算控制到输出的传函Q%
  23. E=(4*R*Vlow*(1-D)^2-4*s*L1*(1+D)^2+s^2*L1*C*R*(1-D)*Vlow)/(2*R*(1+D)*(1-D)^3);
  24. M=(1+D)/(1-D);
  25. Q=H*M*E;
  26. Q=collect(Q,s);%合并同类项%
  27. %Q=pretty(Q);%

  28. %计算零极点Z P;先分离传函的分子和分母%
  29. [n,d]=numden(Q);
  30. Z=vpasolve(n);
  31. P=vpasolve(d);
  32. %画BODE图%
  33. bode(zpk(Z,P,1));
复制代码
Q为传递函数,Z\P为零极点,最后画波特图的时候报错,
错误使用 zpk (line 309)
The values of the "Z" and "P" properties must be vectors or cell arrays of vectors containing numeric data without any NaN's or Inf's.


但零极点都不是无穷大的。
P =

                                       -36921.091033734674350194639219485
                                       -868.43421619152194795934175662065
- 1105.2373750369036029937202485225 + 39473.815627701435132599091015267i
- 1105.2373750369036029937202485225 - 39473.815627701435132599091015267i

Z =

19600.000000000001717029296521844 - 40197.512360841436874164999124688i
19600.000000000001717029296521844 + 40197.512360841436874164999124688i


求教大神

新手

19 麦片

财富积分


050


0

主题

17

帖子

2

最佳答案
发表于 2019-9-27 21:30:42 | 显示全部楼层 |此回复为最佳答案
zpk(double(Z),double(P),1)

新手

29 麦片

财富积分


050


6

主题

15

帖子

0

最佳答案
 楼主| 发表于 2019-9-28 08:34:50 | 显示全部楼层
kateaihua 发表于 2019-9-27 21:30
zpk(double(Z),double(P),1)

谢谢大佬!所以是因为Z/P是符号型变量,所以要把他们变成double型吗?
但是如果在定义Z时,Z=sym('Z','rational'), 把Z定义为有理数,还是不行?

新手

19 麦片

财富积分


050


0

主题

17

帖子

2

最佳答案
发表于 2019-9-28 20:17:58 | 显示全部楼层
MOMO233 发表于 2019-9-28 08:34
谢谢大佬!所以是因为Z/P是符号型变量,所以要把他们变成double型吗?
但是如果在定义Z时,Z=sym('Z','ra ...

就算这样定义Z,Z在工作区中的数据类型也是sym,我理解zpk函数只能用数值型,所以需要将符号型转成数值型
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表