使用Matlab给出代码,畫出系統H(s)=(s^2+4s+3)/(s^4+3s^3+4s^2+6s+4)的零點極點圖,並判斷系統的穩定性。不使用任何內置函數
时间: 2024-12-22 14:16:36 浏览: 11
在MATLAB中,绘制系统函数H(s)的零点极点图并判断其稳定性,通常需要手动计算系统的根和分母系数,然后使用`ezpolar`函数。由于题目要求不使用内置函数,我们可以自己编写一个简单的函数来计算根和绘制图形。请注意,这将涉及到一些复数数学计算。
首先,我们需要定义H(s)的分子和分母:
```matlab
% 定义系数
num = [1, 4, 3]; % 分子系数
den = [1, 3, 4, 6, 4]; % 分母系数
% 计算根
zeros = roots(num); % 零点
poles = roots(den); % 极点
```
接着,我们手动创建一个函数来计算极坐标表示的极点:
```matlab
function [radius, angle] = get_pole_rad_angle(poles)
radius = abs(poles);
angle = angle(poles) * sign(poles);
end
```
现在可以画出极点零点图:
```matlab
% 绘制零点极点图
[radius_zeros, angle_zeros] = get_pole_rad_angle(zeros);
[radius_poles, angle_poles] = get_pole_rad_angle(poles);
figure;
subplot(2, 1, 1)
hold on
plot(angle_zeros, radius_zeros, 'ro', 'MarkerSize', 8, 'LineWidth', 2, 'MarkerFaceColor', 'r')
title('Zeroes');
hold off
subplot(2, 1, 2)
plot(angle_poles, radius_poles, 'bo', 'MarkerSize', 8, 'LineWidth', 2, 'MarkerFaceColor', 'b')
title('Poles');
xlabel('Phase (degrees)');
grid on
```
为了判断稳定性,我们需要检查所有极点是否都在左半平面(实部小于0),如果是,则系统稳定;否则不稳定。这里我们将通过比较极点的实部来判断:
```matlab
is_stable = all(real(poles) < 0);
disp(['The system is ' num2str(is_stable) 'stable.']);
```
完成以上步骤,你就得到了所需的零点极点图以及稳定性判断。
阅读全文