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

如题,求实例代码,多谢... 如题,求实例代码,多谢 展开
 我来答
set姜雨希u
2014-01-02
知道答主
回答量:9
采纳率:0%
帮助的人:7.8万
展开全部
楼主你好,我们讲频域法,常用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),这就是结果的后一部分,即相角部分 还是很行的吧哈哈
追问
谢谢,那请问MATLAB中有直接计算传递函数的幅值和相角的命令吗?
星爵归来
2019-05-06 · TA获得超过115个赞
知道答主
回答量:31
采纳率:0%
帮助的人:7.3万
展开全部

没找到答案,自己终于摸索出来了。这里以求取w=100pi rad/s处的幅值和相位为例

首先,这个提问有问题。应该是:怎样用MATLAB求取一个传递函数在某频率(角频率)处的幅值和相角。matlab代码如下:

w=logspace(2.4969,2.4972);  %%选取逼近w=100pi rad/s的角频率上下限,对应(314,314.2)
H= freqresp(sys,w);         %%计算周边频率的频率响应数据点,默认50个,数据为复数格式
abs(H(:,:,25))                  %%计算中间点的幅值,作为w=100pi rad/s处的幅值
angle(H(:,:,25))*180/pi    %%计算中间点的相位,作为w=100pi rad/s处的相位

一句话概括上述方法:求取无限逼近w=100pi rad/s 周边角频率对应的幅值和相位,并选取这些值的中间值作为w=100pi rad/s 的幅值和相位。

角频率上下限的确定方法,100pi在(314,314.2)之间。(314,314.2)≈(10e2.4969,10e2.4972)

类似插值方法,有点拗口,不过方法确实可行!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式