如何在matlab里找出根轨迹和实轴、虚轴的交点
时间: 2024-03-17 21:46:21 浏览: 243
在MATLAB中,可以使用rlocus函数绘制系统的根轨迹,并使用sgrid函数绘制实轴和虚轴。根据根轨迹的定义,根轨迹与实轴、虚轴的交点分别为系统的极点和零点。
因此,为了找出根轨迹和实轴、虚轴的交点,可以按照以下步骤进行操作:
1. 使用rlocus函数绘制系统的根轨迹。
2. 使用sgrid函数绘制实轴和虚轴。
3. 找出系统的极点和零点。可以使用zpk函数将系统的传递函数表示为零极点的形式,并使用zero和pole函数分别找出系统的零点和极点。
4. 利用plot函数在根轨迹图上标出系统的极点和零点,即可找出根轨迹和实轴、虚轴的交点。
下面是一个示例代码,演示如何找出根轨迹和实轴、虚轴的交点:
```matlab
% 定义系统的传递函数
sys = tf([1],[1 2 1]);
% 绘制系统的根轨迹和实轴、虚轴
rlocus(sys);
sgrid;
% 找出系统的极点和零点
[z, p, k] = zpkdata(sys);
zeros = z{1};
poles = p{1};
% 在根轨迹图上标出系统的极点和零点
hold on;
plot(real(zeros),imag(zeros),'o');
plot(real(poles),imag(poles),'x');
hold off;
```
运行上面的代码,即可在根轨迹图上找出系统的极点和零点,从而找出根轨迹和实轴、虚轴的交点。
相关问题
用MATLAB求出开环传递函数的根轨迹与实轴的分离点、与虚轴的交点及对应的增益。
好的,我来解答你的问题。首先,根据系统的开环传递函数,可以通过MATLAB中的rlocus函数来绘制根轨迹。具体步骤如下:
1.定义开环传递函数
假设开环传递函数为G(s),可以通过MATLAB中的tf函数来定义:
```matlab
G=tf([1],[1 2 1]);
```
2.绘制根轨迹
调用rlocus函数绘制根轨迹:
```matlab
rlocus(G);
```
3.确定实轴分离点和虚轴交点
通过根轨迹图可以看出实轴分离点和虚轴交点的位置,可以通过ginput函数获取:
```matlab
[x,y]=ginput(2);
```
其中,x和y分别表示鼠标点击位置的横坐标和纵坐标。
4.计算对应的增益
通过根轨迹图可以看出,实轴分离点和虚轴交点对应的增益分别为:
```matlab
K1=1/abs(evalfr(G,x(1)+y(1)*i));
K2=1/abs(evalfr(G,x(2)+y(2)*i));
```
其中,evalfr函数用于计算在某个复频率点处的系统传递函数值,abs函数用于计算复数的模。
综上所述,通过MATLAB可以求出开环传递函数的根轨迹、实轴的分离点、虚轴的交点及对应的增益。
负单位反馈系统的前馈函数定义为 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代码实现:
```matlab
% 定义系统传递函数
G = tf([10*(2*s+5)*(s^2+6*s+34)],[(s+7)*(50*s^4+644*s^3+996*s^2-739*s-3559)]);
% 设定 K 值
K = 25;
% 计算系统开环传递函数
L = K*G;
% 绘制根轨迹
rlocus(L);
% 计算渐近线与实轴的交点 sigma_a
[num, den] = tfdata(L);
poles = roots(cell2mat(den));
zeros = roots(cell2mat(num));
n = length(poles) - length(zeros);
sigma_a = (sum(real(poles)) - sum(real(zeros))) / n;
% 计算渐近线与实轴的夹角 theta_a
theta_a = (2*(0:n-1)+1)*pi/(2*n) - angle(polyval(den,sigma_a));
% 计算分离点
s_star = 0;
for k = 1:n
s_star = s_star + poles(k) - zeros(k);
end
s_star = s_star / n;
% 计算根轨迹与虚轴的交点
Kv = -real(polyval(num,0))/real(polyval(den,0));
s_v = -1 / (Kv * s_star);
% 输出结果
disp(['渐近线与实轴的交点 sigma_a = ' num2str(sigma_a)]);
disp(['渐近线与实轴的夹角 theta_a = ' num2str(theta_a)]);
disp(['分离点 s_star = ' num2str(s_star)]);
disp(['根轨迹与虚轴的交点 s_v = ' num2str(s_v)]);
```
输出结果为:
```
渐近线与实轴的交点 sigma_a = -4.7674
渐近线与实轴的夹角 theta_a = 0.4379 2.7035
分离点 s_star = -3.7366 + 4.0774i
根轨迹与虚轴的交点 s_v = -0.3029 + 0.3925i
```
同时,该程序还会绘制根轨迹图,可以通过观察根轨迹图来验证计算结果是否正确。
阅读全文