使用matlab中的tfestimate函数生成系统的悬架加速度和车桥加速度对路面输入的时域响应函数曲线
时间: 2024-05-08 11:21:05 浏览: 164
要使用MATLAB中的`tfestimate`函数生成系统的悬架加速度和车桥加速度对路面输入的时域响应函数曲线,需要先定义系统的传递函数,然后使用输入输出数据进行估计。
假设系统的传递函数为$G(s)$,输入为路面输入$u(t)$,输出为悬架加速度$a_s(t)$和车桥加速度$a_b(t)$,则有:
$$ a_s(t) = G(s)u(t)\\ a_b(t) = H(s)u(t) $$
其中,$H(s)$为车桥加速度与路面输入的传递函数。
接下来,我们使用MATLAB中的`tfestimate`函数来估计系统的传递函数。假设我们已经将路面输入、悬架加速度和车桥加速度数据存储在向量`u`、`a_s`和`a_b`中,代码如下:
```matlab
fs = 1000; % 采样频率
nfft = 1024; % FFT点数
window = hann(nfft); % 窗函数
noverlap = nfft/2; % 重叠长度
[as2u,Pas2u] = tfestimate(u,a_s,window,noverlap,nfft,fs); % 估计悬架加速度与路面输入的传递函数
[ab2u,Pab2u] = tfestimate(u,a_b,window,noverlap,nfft,fs); % 估计车桥加速度与路面输入的传递函数
```
上述代码中,我们使用了汉宁窗函数进行信号分析,并将FFT点数设置为1024,重叠长度设置为FFT点数的一半。`tfestimate`函数返回的`as2u`和`ab2u`分别表示悬架加速度与路面输入的传递函数和车桥加速度与路面输入的传递函数,`Pas2u`和`Pab2u`分别表示这两个传递函数的功率谱密度。
最后,我们可以使用MATLAB中的`bode`函数或`freqs`函数来绘制系统的频率响应曲线,代码如下:
```matlab
w = logspace(-2,2,1000); % 角频率范围
s = 1i*w;
G = as2u./Pab2u; % 悬架加速度与车桥加速度传递函数比
H = ab2u./Pas2u; % 车桥加速度与悬架加速度传递函数比
[mag_G,phase_G] = bode(G,w); % 计算悬架加速度与路面输入的幅值和相位
[mag_H,phase_H] = bode(H,w); % 计算车桥加速度与路面输入的幅值和相位
subplot(2,1,1); semilogx(w,20*log10(mag_G)); grid on; % 绘制悬架加速度与路面输入的幅频特性
ylabel('Magnitude (dB)'); title('Suspension Acceleration / Road Input');
subplot(2,1,2); semilogx(w,phase_G); grid on; % 绘制悬架加速度与路面输入的相频特性
xlabel('Frequency (Hz)'); ylabel('Phase (deg)');
figure;
subplot(2,1,1); semilogx(w,20*log10(mag_H)); grid on; % 绘制车桥加速度与路面输入的幅频特性
ylabel('Magnitude (dB)'); title('Bridge Acceleration / Road Input');
subplot(2,1,2); semilogx(w,phase_H); grid on; % 绘制车桥加速度与路面输入的相频特性
xlabel('Frequency (Hz)'); ylabel('Phase (deg)');
```
上述代码中,我们使用了对数刻度的角频率范围,并使用`bode`函数计算幅值和相位。绘制图形时,我们使用`semilogx`函数来绘制对数坐标的幅频和相频特性。