clear;close;clc;Frequence0 = 60; %单位:HzFrequence1 = 130; %单位:HzFrequence2 = 1e3; %单位:HzSampleFre = 4e3; %单位:HzSampleLen = SampleFre; %采样点数%% Main%-------------------产生三路信号t = 0:1/SampleLen:1/SampleFre*(SampleLen-1);SignalData0 = sin(2*pi*Frequence0*t);SignalData1 = sin(2*pi*Frequence1*t);SignalData2 = sin(2*pi*Frequence2*t);SignalData3 = SignalData0+SignalData1+SignalData2;figure;plot(t(1:150),SignalData3(1:150))title('三路信号求和')LPF_Coe = load('LPF_60.mat');LPF_Data = filter(LPF_Coe.Num,1,SignalData3);figure;plot(t,LPF_Data)title('低通滤波之后的波形')%-------------------带通滤波% BPF_Coe = load('BPF_130M.mat');% BPF_Data = filter(BPF_Coe.BPF_130M,1,SignalData3);% figure;plot(t,BPF_Data)% title('带通滤波之后的波形')%-------------------频谱分析% FFT_Data = fft(SignalData3);% Amplitude = abs(FFT_Data);% Amplitude = Amplitude/length(Amplitude);% Amplitude(2:end) = 2*Amplitude(2:end);% Frequence = (0:(length(Amplitude)/2-1))/length(Amplitude)*SampleFre;% figure;plot(Frequence,Amplitude(1:length(Frequence)))% title('三路信号叠加频谱')% %-------------------低通滤波之后频谱分析% FFT_LPF_Data = fft(LPF_Data);% Amplitude_LPF = abs(FFT_LPF_Data);% Amplitude_LPF = Amplitude_LPF/length(Amplitude_LPF);% Amplitude_LPF(2:end) = 2*Amplitude_LPF(2:end);% Frequence = (0:(length(Amplitude_LPF)/2-1))/length(Amplitude_LPF)*SampleFre;% figure;plot(Frequence,Amplitude_LPF(1:length(Frequence)))% title('低通滤波之后的频谱')% %-------------------带通滤波之后频谱分析% FFT_BPF_Data = fft(BPF_Data);% Amplitude_BPF = abs(FFT_BPF_Data);% Amplitude_BPF = Amplitude_BPF/length(Amplitude_BPF);% Amplitude_BPF(2:end) = 2*Amplitude_BPF(2:end);% Frequence = (0:(length(Amplitude_BPF)/2-1))/length(Amplitude_BPF)*SampleFre;% figure;plot(Frequence,Amplitude_BPF(1:length(Frequence)))% title('带通滤波之后的频谱')




低通滤波器设计
基于fdatool的低通滤波器的设计
在MATLAB命令行执行filterDesigner命令,弹出滤波器设计交互窗口,根据自己的需求设计符合自己要求的滤波器,这是我设计的低通滤波器见下图

导出方式是到MAT-File:
如果选择Coefficient,那么保存为后缀.mat的文件之后,对于FIR滤波器的代码调用形式为:BPF=load(‘BPF.mat’); dataFiltered=filter(BPF.Num,1,dataRaw);
对于IIR滤波器的代码调用形式为:BPF=load(‘IIR.mat’); [b a]=SOS2tf(BPF.SOS,BPF.G); dataFiltered=filter(b, a, breath_signal);
如果选择Object,那么保存为.mat文件之后,调用形式为:BPF=load(‘BPF.mat’); dataFiltered=filter(BPF.BBPPFF,dataRaw);
