一维数据序列滤波的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 %*************************************