加速度计原始数据高频噪声很严重,使用时需要设计合适的滤波器将其滤掉。
matlab对加速度计原始数据,30Hz低通滤波之后的数据进行fft分析如下:
clc;
source=simout1;
filter=simout2;
%% 原始数据
subplot(3,1,1);
plot(source.Time,source.Data,'b',filter.Time,filter.Data,'r');
title('数据');
legend('原始数据','滤波之后数据');
grid on;
%% fft
Ts=1000;
x=source.Data;
N=source.Length;
n=1:N;
n_2=1:N/2;
f=n*Ts/N;
y=fft(x,N);
mag=abs(y);
subplot(3,1,2);
plot(f(n_2), mag(n_2));
title('原始数据fft');
axis([0 Ts/2 0 3*1e6]);
grid on;
%% fft
Ts=1000;
x=filter.Data;
N=filter.Length;
n=1:N;
n_2=1:N/2;
f=n*Ts/N;
y=fft(x,N);
mag=abs(y);
subplot(3,1,3);
plot(f(n_2), mag(n_2));
title('滤波之后数据fft');
axis([0 Ts/2 0 3*1e6]);
grid on;
分析图为:
可以明显看出,原始数据的频域在高频段(如100Hz,150-300Hz等)都有很大的噪声干扰;而经过30Hz低通滤波器之后的数据经fft可以直观的看到高频段噪声已经严重衰减,而低频段(30Hz以下)依然与原始信号的fft信号保持一致,30Hz以下的信号正是飞控中使用的数据。
低通滤波器如下,
采样频率:1000Hz,
截止频率:30Hz,
阶数:2
附上源代码及加速度计原始和滤波之后的数据。