如何使用MATLAB绘制单自由度系统的相频特性曲线
时间: 2024-10-06 18:05:34 浏览: 144
simulink_单自由度系统_matlab_secondzj2_
5星 · 资源好评率100%
在MATLAB中,绘制单自由度系统(如弹簧-质量-阻尼系统)的相频特性曲线通常涉及到频率响应分析。以下是基本步骤:
1. **设置系统模型**:
首先,你需要定义系统的传递函数。对于简单的弹簧-质量-阻尼系统,它可以用以下形式表示:`H(s) = K/m * (s^2 + 2*ζ*w_n*s + w_n^2)`,其中 `K` 是弹性系数,`m` 是质量,`ζ` 是阻尼比,`w_n = sqrt(K/m)` 是自然频率。
2. **频率范围**:
定义你要计算相位和幅度的频率范围,可以使用` linspace`函数创建一个从0到系统带宽(例如阻尼后的最大值)的等间距数组,比如`w = linspace(0, w_n, 1000)`。
3. **计算复数频率**:
将频率数组转换为复数频率,因为MATLAB的`tf`函数需要实部和虚部作为输入。`j`是MATLAB中的虚数单位,`w = [real(w) j*imag(w)]`.
4. **绘制相位特性**:
使用`angle`函数计算幅角 (`phase(H(w)))`,然后利用`plot`函数将频率对角线(`real(w)`)和幅角(`unwrap(angle(H(w))))`画出来,得到相位曲线。
5. **绘制幅度特性**:
使用`abs`函数计算系统的幅值 (`mag(H(w)))`),并同样用`plot`画出幅频特性。
6. **标注图例和轴**:
添加标题、坐标轴标签以及必要的图例信息。
```matlab
% 系统参数
K = 1; % 弹性系数
m = 1; % 质量
ζ = 0.5; % 阻尼比
% 创建频率向量
w = linspace(0, w_n, 1000); % 替换 w_n 为你系统的自然频率
w_complex = [real(w) imag(w)];
% 计算传递函数
sys = tf(K/m, [1 2*ζ*w_n 1]);
% 绘制相位和幅值特性
[H_real, H_imag] = step(sys, w_complex);
phase_angle = unwrap(angle(H_real + 1i*H_imag));
mag = abs(H_real + 1i*H_imag);
figure;
subplot(2,1,1)
plot(real(w), phase_angle, 'b', 'LineWidth', 2);
xlabel('Frequency (rad/s)');
ylabel('Phase (degrees)');
title('Phase Plot');
subplot(2,1,2)
plot(real(w), mag, 'r', 'LineWidth', 2);
xlabel('Frequency (rad/s)');
ylabel('Magnitude');
title('Magnitude Plot');
```
完成以上步骤后,你就得到了单自由度系统的相频特性曲线。
阅读全文