怎样用MATLAB计算一个传递函数的幅值和相角?

怎样用MATLAB计算一个传递函数的幅值和相角?,第1张

楼主你好,我们讲频域法,常用s域中的传递函数,令s=jw来求得A(w)=|G(jw)|,fai(w)=fai(G(jw))

具体到本题,将s用jw代换,有G(jw)=(1+jw)/(2+jw),这是一个复数

由复数乘积(商)的幅值等于各因子幅值的乘积(商),那么|G(jw)|=|1+jw|/|2+jw|

一个复数的模值M=√(Re^2+Im^2),或者说从原点到这个复数的点的距离

那么|1+jw|=√(1+w^2),而|2+jw|=√(4+w^2),故|G(jw)|=√[(1+w^2)/(4+w^2)],这就是你结果的前面一部分,即幅值部分

而复数的乘积(商)的相角等于各因子相角的和(差),那么fai(w)=fai(1+jw)-fai(2+jw)

对于相角的求法,各个象限有不同,不过对1象限(或者说系统稳定时的零极点),还是很容易的

如1+jw,将这个复数与原点0+j0相连,容易知道这条线的幅角为arctan(w/1)=arctanw

同时2+jw的幅角为arctan(w/2)

因此fai(w)=arctanw-arctan(w/2),这就是结果的后一部分,即相角部分

还是很行的吧哈哈

连续传递函数Ds用tf输入最方便,不知道为什么偏要用zpk。

频率预修正的双线性变换法需要指定截止频率,这里取了个2。

;; Ds=zpk([],[-1+sqrt(2)i -1-sqrt(2)i],1);

;; Dz1=zpk(c2d(Ds,1,;zoh;));

;; Dz1Variable=;z^-1;

Zero/pole/gain:

022856 z^-1 (1+04884z^-1)

-----------------------------

(1 - 01147z^-1 + 01353z^-2)

Sampling time: 1

Overloaded functions or methods (ones with the same name in other directories)

doc ident/c2d

;; Dz2=zpk(c2d(Ds,1,;tustin;));

;; Dz2Variable=;z^-1;

Zero/pole/gain:

0090909 (1+z^-1)^2

-----------------------------

(1 - 01818z^-1 + 02727z^-2)

Sampling time: 1

;; Dz3=zpk(c2d(Ds,1,;matched;));

;; Dz3Variable=;z^-1;

Zero/pole/gain:

01701 z^-1 (1+z^-1)

-----------------------------

(1 - 01147z^-1 + 01353z^-2)

Sampling time: 1

;; Dz4=zpk(c2d(Ds,1,;prewarp;,2));

;; Dz4Variable=;z^-1;

Zero/pole/gain:

013855 (1+z^-1)^2

-----------------------------

(1 + 03743z^-1 + 02883z^-2)

Sampling time: 1

x=[];

t = (-2:001:2);

for j=(-2:001:2);

if j==0

x=[x,1];

else x=[x,0];

end

end

plot(t,x);

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13494010.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存