Matlab 实现振动信号低通滤波
附件 txt 中的数字是一个实测振动信号,采样频率为 5000Hz,试设计一个长度
为 M=32 的 FIR 低通滤波器,截止频率为 600Hz,用此滤波器对此信号进行滤波。
要求:
(1) 计算数字截止频率;
(2) 给出滤波器系数;
(3) 绘出原信号波形;
(4) 绘出滤波后的信号波形;
解答过程:
第一部分:数字截止频率的计算
数字截止频率等于截止频率除以采样频率的一半,即 n =600/5000/2=0.24
第二部分:滤波器系数的确定
在 matlab 中输入如下程序,即可得到滤波器系数:
n=32
Wn=0.24
b=fir1(n,Wn)
得到的滤波器系数b为
Columns 1 through 9
-0.0008
-0.0018
-0.0024
-0.0014
0.0021
0.0075
0.0110
0.0077
-0.0054
Columns 10 through 18
-0.0242
-0.0374
-0.0299
0.0087
0.0756
0.1537
0.2166
0.2407
0.2166
Columns 19 through 27
0.1537
0.0756
0.0087
-0.0299
-0.0374
-0.0242
-0.0054
0.0077
0.0110
Columns 28 through 33
0.0075
0.0021
-0.0014
-0.0024
-0.0018
-0.0008
第三部分:原信号波形
将附件4中的dat文件利用识别软件读取其中的数据,共1024个点,存在TXT
文档中,取名bv.txt,并复制到matlab的work文件夹。
在matlab中编写如下程序:
x0=load('zhendong.txt');
t=0:1/5000:1023/5000;
%找到信号数据地址并加载数据。
%将数据的1024个点对应时间加载
figure(1);
plot(t,x0);
xlabel('t/s');
ylabel('幅值');
运行之后就得到如下波形,即振动信号的原始波形图:
1.5
1
0.5
值
幅
0
-0.5
-1
-1.5
0
0.05
0.1
t/s
0.15
0.2
0.25
第四部分:滤波后的波形图
在matlab窗口中输入如下程序,即可得到滤波后的波形图:
x0=load('zhendong.txt');
t=0:1/5000:1023/5000;
figure(1);
plot(t,x0);
xlabel('t/s');
ylabel('幅值');
fs=5000;
n=32;
Wn=0.24;
b=fir1(n,Wn);
y0=filter(b,1,x0);
figure(2);
plot(t,y0);
xlabel('t/s');
ylabel('幅值');
%求滤波系数
%用matlab自带的filter函数进行滤波
程序运行后就可以得到滤波后的波形,如下图所示:
值
幅
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
0
0.05
0.1
t/s
0.15
0.2
0.25