matlab数据序列的几种滤波器

这篇博客主要介绍了在MATLAB中进行一维数据序列滤波的方法,包括使用butterworth滤波器、FIR滤波器、移动平均滤波、中值滤波、维纳滤波和自适应滤波等。内容适用于处理如心电信号等数据的100Hz左右带通滤波。之后还提及了将滤波器用C语言重构的实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一维数据序列滤波的matlab代码,

其实和之前做的图像滤波大同小异,

只是图像的噪声情况复杂得多,

而且是二维的。

做这个主要是手上有个心电的的mens传感器,

蓝牙把数据传过来做一个数据的100Hz左右的带通滤波,

用butterworht做个带通滤波,

再用c语言重构一下。

 

 1 %****************************************************************************************
 2 %  
 3 %                      创建两个信号Mix_Signal_1 和信号 Mix_Signal_2 
 4 %
 5 %***************************************************************************************
 6 
 7 Fs = 1000;                                                                        %采样率
 8 N  = 1000;                                                                        %采样点数
 9 n  = 0:N-1;
10 t   = 0:1/Fs:1-1/Fs;                                                            %时间序列 
11 Signal_Original_1 =sin(2*pi*10*t)+sin(2*pi*20*t)+sin(2*pi*30*t); 
12 Noise_White_1    = [0.3*randn(1,500), rand(1,500)];           %前500点高斯分部白噪声,后500点均匀分布白噪声
13 Mix_Signal_1   = Signal_Original_1 + Noise_White_1;        %构造的混合信号
14 
15 Signal_Original_2  =  [zeros(1,100), 20*ones(1,20), -2*ones(1,30), 5*ones(1,80), -5*ones(1,30), 9*ones(1,140), -4*ones(1,40), 3*ones(1,220), 12*ones(1,100), 5*ones(1,20), 25*ones(1,30), 7 *ones(1,190)]; 
16 Noise_White_2     =  0.5*randn(1,1000);                                 %高斯白噪声
17 Mix_Signal_2        =  Signal_Original_2 + Noise_White_2;      %构造的混合信号

 

一、butterworth filter

 

 1 %****************************************************************************************
 2 %  
 3 %                信号Mix_Signal_1 和 Mix_Signal_2  分别作巴特沃斯低通滤波。
 4 %
 5 %***************************************************************************************
 6 
 7 %混合信号 Mix_Signal_1  巴特沃斯低通滤波
 8 figure(1);
 9 Wc=2*50/Fs;                                          %截止频率 50Hz
10 [b,a]=butter(4,Wc);
11 Signal_Filter=filter(b,a,Mix_Signal_1);
12 
13 subplot(4,1,1);                                        %Mix_Signal_1 原始信号                 
14 plot(Mix_Signal_1);
15 axis([0,1000,-4,4]);
16 title('原始信号 ');
17 
18 subplot(4,1,2);                                        %Mix_Signal_1 低通滤波滤波后信号  
19 plot(Signal_Filter);
20 axis([0,1000,-4,4]);
21 title('巴特沃斯低通滤波后信号');
22 
23 %混合信号 Mix_Signal_2  巴特沃斯低通滤波
24 Wc=2*100/Fs;                                          %截止频率 100Hz
25 [b,a]=butter(4,Wc);
26 Signal_Filter=filter(b,a,Mix_Signal_2);
27 
28 subplot(4,1,3);                                        %Mix_Signal_2 原始信号                 
29 plot(Mix_Signal_2);
30 axis([0,1000,-10,30]);
31 title('原始信号 ');
32 
33 subplot(4,1,4);                                       %Mix_Signal_2 低通滤波滤波后信号  
34 plot(Signal_Filter);
35 axis([0,1000,-10,30]);
36 title('巴特沃斯低通滤波后信号');

 

 

 

二、FIR

 

 1 %*************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值