欢迎光临散文网 会员登陆 & 注册

关于(全通函数)半对数相频特性曲线的绘制

2021-05-07 14:37 作者:永远的修伊  | 我要投稿

最小相位系统

如果一个线性时不变系统的开环传递函数极点和零点的实部都小于或等于零,则称它是最小相位系统

非最小相位系统

如果开环传递函数中有正实部的零点或极点,或有延迟环节(这个可以使用pade近似),则称系统是非最小相位系统。


在根轨迹的绘制和频域分析时需要考虑是否为最小相位系统


全通函数:

      一个稳定的传递函数如果在复平面的虚轴上所有点处幅值均为1,那么这个函数就是全通函数。全通函数来源于全通滤波器。(见参考文献)

保证极点实部为负

用matlab绘制一下它的伯德图,以s0=0.3,0.6,0.9为例

>> s = tf('s');

>> sys = (s-0.3)/(s+0.3);

>> sys1 = (s-0.6)/(s+0.6);

>> sys2 = (s-0.9)/(s+0.9);

>> bode(sys,sys1,sys2)

s = tf('s');

sys = -(s-0.3)/(s+0.3);

sys1 = -(s-0.6)/(s+0.6);

sys2 = -(s-0.9)/(s+0.9);

bode(sys,sys1,sys2)

我在思考能否从底层实现相频图的绘制

Ver1

 w = logspace(-2,2,1000);

phi = atan(-0.6*w./(0.3^2-w.^2));

 plot(w,phi)

什么鬼,继续尝试

Ver2

w = logspace(-2,2,1000);

sys = -(j*w-0.3)./(j*w+0.3);

plot(w,angle(sys))

感觉有地方出了问题

横坐标没问题(取值无问题,不符合对数规范),纵坐标是弧度制,但图形有问题

Ver3

w = logspace(-2,2);

phi = atan(-0.6*w./(0.3^2-w.^2));

semilogx(w,phi)

grid on

重新换了函数,semilog半对数坐标画图,loglog双对数坐标画图

Ver4

 w = logspace(-2,2);

sys = -(j*w-0.3)./(j*w+0.3);

semilogx(w,angle(sys))

grid on

现在正常了,但是纵坐标是弧度制

Ver5

 w = logspace(-2,2);

sys = -(j*w-0.3)./(j*w+0.3);

phi = atan2d(imag(sys),real(sys));

semilogx(w,phi)

OK,基本与bode函数效果一致

再加一些标注

Ver6

>> title('Bode Plot')

>> xlabel('Frequency (rad/s)')

>> ylabel('Phase (deg)')

>> grid on

小结:

从底层绘制phi-w图,在matlab中arctan不太好使,而plot本身会忽略复数的虚部,只能考虑其他方法,关键还是数学公式

关于前述全通函数

      A(s)引起相位延迟,且对于同一频率的输入信号,不同的A(s)输出响应的相位延迟大小不同.

Q1:

复数(z =x+j y)里面有关于辐角及辐角主值的定义,argZ 属于(-pi,pi】,与 arctan(y/x)属于[-pi/2,pi/2]有相应的计算公式,根据坐标 (x,y) 的位置。

而matlab内置函数是否完全符合这些规则,前述尝试出问题根源何在?



参考文献

http://zhuanlan.zhihu.com/X-Domain


关于(全通函数)半对数相频特性曲线的绘制的评论 (共 条)

分享到微博请遵守国家法律