我使用的是MATLAr2016b,并且我没有注册账号,请改进上面的代码。
时间: 2024-03-15 20:44:54 浏览: 134
基于MATLAB语言的苹果糖度近红外光谱定量分析 (2004年)
好的,以下是兼容MATLAB 2016b的改进代码:
```matlab
num = 10 * [2, 5, 1, 34]; % 分子系数
den = conv([1, 7], [50, 644, 996, -739, -3559]); % 分母系数
G = tf(num, den); % 创建传递函数
K = 25; % 比例增益
rlocus(G*K); % 绘制根轨迹
[num, den] = tfdata(G);
p = roots(den{1});
z = roots(num{1});
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{1}(end)); % 计算渐近线与实轴的夹角
sep_points = rlocus(G*K, 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;
```
改进的代码主要是针对MATLAB 2016b不支持直接访问分子、分母系数的问题进行了改进,直接使用den{1}和num{1}即可访问分母、分子系数。同时,将传递函数与增益的顺序调换,使用G*K代替K*G。
阅读全文