matlab画0°根轨迹
时间: 2023-08-06 14:20:08 浏览: 233
要画出0°根轨迹,需要进行以下步骤:
1. 首先,通过Matlab的控制系统工具箱中的rlocus函数,画出系统在开环情况下的根轨迹。
2. 通过调整系统参数,使得根轨迹经过实轴负半轴上的点。
3. 最后,通过调整系统参数,使得根轨迹与实轴负半轴的夹角为0°。
以下是一个简单的Matlab代码示例:
```matlab
% 定义系统传递函数
num = [1 2];
den = [1 3 2];
sys = tf(num, den);
% 画出根轨迹
figure;
rlocus(sys);
% 调整参数,使得根轨迹经过实轴负半轴上的点
sgrid(0, []);
hold on;
% 调整参数,使得根轨迹与实轴负半轴的夹角为0°
k = rlocfind(sys, 0);
rlocus(sys,k);
```
运行上述代码后,就可以得到0°根轨迹的图像。
相关问题
负单位反馈系统的前馈函数定义为 G(s) = 10* (2s + 5) * (s^2 + 6s + 34) / ((s + 7) * (50s^4 + 644s^3 + 996s^2 - 739s - 3559)) 系统的输入为r (t) = u (t)。其中K=25。 您将需要提供一个Matlab代码来计算以下值,在命令行窗口输出值,并且显示在根轨迹图中。 (1)渐近线与实轴的交点σa (2)渐近线与实轴的夹角ϴa (3)分离点 (4)根轨迹与虚轴的交点。 解释:渐近线是无穷远处极点或零点的线,由其与实数轴的交点和其与实数轴的夹角确定。分离点为两个极点间存在根轨迹会在一个点进行分离。
以下是计算步骤和Matlab代码:
步骤1:计算系统的开环传递函数
```
num = 10 * [2, 5, 1, 34]; % 分子系数
den = conv([1, 7], [50, 644, 996, -739, -3559]); % 分母系数
G = tf(num, den); % 创建传递函数
```
步骤2:计算系统的根轨迹
```
rlocus(K * G); % 绘制根轨迹
```
步骤3:计算渐近线和分离点
```
[num, den] = tfdata(G);
p = roots(den);
z = roots(num);
n = length(p) - length(z);
sigma_a = real(sum(p) - sum(z)) / n; % 计算渐近线与实轴的交点
theta_a = (2 * (0:n-1) + 1) * pi / (2 * n) - angle(den(end)); % 计算渐近线与实轴的夹角
sep_points = rlocus(K * G, 1i * linspace(-10, 10, 10000)); % 计算根轨迹与虚轴的交点
sep_points = sep_points(imag(sep_points) ~= 0);
```
步骤4:在命令行窗口输出结果
```
disp(['渐近线与实轴的交点: ', num2str(sigma_a)]);
disp(['渐近线与实轴的夹角: ', num2str(theta_a * 180 / pi), '°']);
disp(['分离点: ', num2str(sep_points)]);
```
步骤5:显示根轨迹图
```
title('Root Locus');
xlabel('Real Axis');
ylabel('Imaginary Axis');
grid on;
```
完整的Matlab代码如下:
```matlab
num = 10 * [2, 5, 1, 34]; % 分子系数
den = conv([1, 7], [50, 644, 996, -739, -3559]); % 分母系数
G = tf(num, den); % 创建传递函数
K = 25; % 比例增益
rlocus(K * G); % 绘制根轨迹
[num, den] = tfdata(G);
p = roots(den);
z = roots(num);
n = length(p) - length(z);
sigma_a = real(sum(p) - sum(z)) / n; % 计算渐近线与实轴的交点
theta_a = (2 * (0:n-1) + 1) * pi / (2 * n) - angle(den(end)); % 计算渐近线与实轴的夹角
sep_points = rlocus(K * G, 1i * linspace(-10, 10, 10000)); % 计算根轨迹与虚轴的交点
sep_points = sep_points(imag(sep_points) ~= 0);
disp(['渐近线与实轴的交点: ', num2str(sigma_a)]);
disp(['渐近线与实轴的夹角: ', num2str(theta_a * 180 / pi), '°']);
disp(['分离点: ', num2str(sep_points)]);
title('Root Locus');
xlabel('Real Axis');
ylabel('Imaginary Axis');
grid on;
```
阅读全文