我是靠谱客的博主 心灵美唇彩,最近开发中收集的这篇文章主要介绍Matlab函数allmargin()函数用法&在自动控制中的应用一、allmargin(),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一、allmargin()
该函数可以求系统传函的幅值裕度、相位裕度、幅值裕度穿越0dB的频率(也就是截止频率)、相位裕度穿越-180°时的频率、还可以判断系统的稳定性。
二、举例说明该函数用法
eg1、某一开环传递函数的表达式:G(s)=(0.0167s+1)/[s*(0.03s+1)*(0.0025s+1)*(0.001s+1)],求该传递函数的幅值裕度、相位裕度以及系统是否稳定?
Matlab编程如下:
num=[0.0167,1];
den=conv(conv([1,0],[0.03,1]),conv([0.0025,1],[0.001,1]));
G=tf(num,den);
Y=allmargin(G)
运行结果如下:
Y =
struct with fields:
GainMargin: 2.2763e+03
GMFrequency: 602.4232
PhaseMargin: 89.0382
PMFrequency: 0.9996
DelayMargin: 1.5546
DMFrequency: 0.9996
Stable: 1
从运行结果可以得到幅值裕度(这里需要取20log)20*log10(2276.63)=67dB,相位裕度89.0382°,截止频率602.4232Hz。
eg2、高阶开环传递表达式如下:G(s)=k*(0.0167s+1)/[s*(0.03s+1)*(0.0025s+1)*(0.001s+1)],求增益k=5、500、800、3000时,系统的稳定性?
Matlab编程如下:
k=[5,500,800,3000];
for j=1:4
num=k*[0.0167,1]
den=conv(conv([1,0],[0.03,1]),conv([0.0025,1],[0.001,1]))
G=tf(num,den)
Y(j)=allmargin(G)
end
Y(1);Y(2);Y(3);Y(4);
运行结果如下:
>> Y(1)
ans =
struct with fields:
GainMargin: 455.2548
GMFrequency: 602.4232
PhaseMargin: 85.2751
PMFrequency: 4.9620
DelayMargin: 0.2999
DMFrequency: 4.9620
Stable: 1
>> Y(2)
ans =
struct with fields:
GainMargin: 4.5525
GMFrequency: 602.4232
PhaseMargin: 39.7483
PMFrequency: 237.7216
DelayMargin: 0.0029
DMFrequency: 237.7216
Stable: 1
>> Y(3)
ans =
struct with fields:
GainMargin: 2.8453
GMFrequency: 602.4232
PhaseMargin: 27.7092
PMFrequency: 329.9063
DelayMargin: 0.0015
DMFrequency: 329.9063
Stable: 1
ans =
struct with fields:
GainMargin: 0.7588
GMFrequency: 602.4232
PhaseMargin: -6.7355
PMFrequency: 690.5172
DelayMargin: 0.0089
DMFrequency: 690.5172
Stable: 0
根据运算结果可以看出,随着增益K的不断增大,系统的幅值裕度和相位裕度不断减小,K=3000时,系统的相位裕度变成-6.7°,系统也处于不稳定状态。
最后
以上就是心灵美唇彩为你收集整理的Matlab函数allmargin()函数用法&在自动控制中的应用一、allmargin()的全部内容,希望文章能够帮你解决Matlab函数allmargin()函数用法&在自动控制中的应用一、allmargin()所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复