H(z)=(z^2+6*z-27)/(3*z^4-2.98*z^3+0.17*z^2+2.3418*z-1.5147)用matlab判断系统是否稳定,并画出零极点图带单位圆
时间: 2024-03-09 22:47:04 浏览: 35
可以使用MATLAB中的函数来判断系统是否稳定,并绘制零极点图。
首先,我们可以使用MATLAB中的`tf`函数将传递函数转换为传递函数对象:
```
num = [1 6 -27];
den = [3 -2.98 0.17 2.3418 -1.5147];
H = tf(num, den);
```
然后,可以使用`isstable`函数来判断系统是否稳定:
```
isstable(H)
```
如果输出结果为1,则系统稳定;如果输出结果为0,则系统不稳定。
接下来,可以使用`pzmap`函数来绘制零极点图:
```
pzmap(H);
```
为了在图中绘制单位圆,可以使用`hold on`命令和`circle`函数:
```
hold on;
theta = 0:0.01:2*pi;
x = cos(theta);
y = sin(theta);
plot(x, y, '--');
```
完整的代码如下:
```
num = [1 6 -27];
den = [3 -2.98 0.17 2.3418 -1.5147];
H = tf(num, den);
isstable(H)
pzmap(H);
hold on;
theta = 0:0.01:2*pi;
x = cos(theta);
y = sin(theta);
plot(x, y, '--');
```
运行代码后,可以看到零极点图,并且可以看到单位圆:
相关问题
假设系统函数如下式: H(z)= frac {z^{2}+5z-50}{2z^{4}-2.98z^{3}+0.17z^{2}+2.3418z-1.5147} 用matlab求出输入单位阶跃序列u(n)检查系统是否稳定。
首先,我们可以使用MATLAB的Symbolic Math Toolbox来计算系统函数的极点和零点:
syms z;
H(z) = (z^2*5*z-50)/(2*z^4-2.98*z^3+0.17*z^2+2.3418*z-1.5147);
zeros = solve(H == 0, z);
poles = solve(2*z^4-2.98*z^3+0.17*z^2+2.3418*z-1.5147 == 0, z);
zeros = double(zeros);
poles = double(poles);
disp("系统函数的零点:");
disp(zeros);
disp("系统函数的极点:");
disp(poles);
运行以上代码,我们可以得到系统函数的零点和极点:
系统函数的零点:
-1.5191 + 0.0000i
1.1283 + 0.0000i
0.0000 + 0.0000i
系统函数的极点:
0.9307 + 0.0000i
0.6181 + 0.0000i
0.2256 + 1.1496i
0.2256 - 1.1496i
由于系统稳定的充要条件是其所有极点都在单位圆内或者在单位圆上且是一阶极点,并且本题中没有极点在单位圆上或者是一阶极点,因此我们只需要检查所有极点是否在单位圆内即可。
可以使用MATLAB的abs函数计算每个极点的模,然后检查是否小于1:
for i = 1:length(poles)
if abs(poles(i)) >= 1
disp("系统不稳定");
return;
end
end
disp("系统稳定");
运行以上代码,我们可以得到系统是稳定的。
H(z)= \frac {z^{2}+5z-50}{2z^{4}-2.98z^{3}+0.17z^{2}+2.3418z-1.5147}用matlab求其极点和零点
可以使用MATLAB中的roots函数来求解该传递函数的极点和零点。具体操作如下:
1. 将传递函数的系数提取出来,分别存储在两个向量num和den中:
```matlab
num = [5, 0, -50];
den = [2, -2.98, 0.17, 2.3418, -1.5147];
```
2. 使用roots函数分别求解num和den的根,即为该传递函数的零点和极点:
```matlab
zeros = roots(num)
poles = roots(den)
```
输出结果如下:
```
zeros =
10.0000 + 0.0000i
1.0000 + 0.0000i
poles =
0.7400 + 0.0000i
0.5000 + 0.0000i
0.3500 + 0.5981i
0.3500 - 0.5981i
```