1. clear;
    2. close;
    3. clc;
    4. Frequence0 = 60; %单位:Hz
    5. Frequence1 = 130; %单位:Hz
    6. Frequence2 = 1e3; %单位:Hz
    7. SampleFre = 4e3; %单位:Hz
    8. SampleLen = SampleFre; %采样点数
    9. %% Main
    10. %-------------------产生三路信号
    11. t = 0:1/SampleLen:1/SampleFre*(SampleLen-1);
    12. SignalData0 = sin(2*pi*Frequence0*t);
    13. SignalData1 = sin(2*pi*Frequence1*t);
    14. SignalData2 = sin(2*pi*Frequence2*t);
    15. SignalData3 = SignalData0+SignalData1+SignalData2;
    16. figure;plot(t(1:150),SignalData3(1:150))
    17. title('三路信号求和')
    18. LPF_Coe = load('LPF_60.mat');
    19. LPF_Data = filter(LPF_Coe.Num,1,SignalData3);
    20. figure;plot(t,LPF_Data)
    21. title('低通滤波之后的波形')
    22. %-------------------带通滤波
    23. % BPF_Coe = load('BPF_130M.mat');
    24. % BPF_Data = filter(BPF_Coe.BPF_130M,1,SignalData3);
    25. % figure;plot(t,BPF_Data)
    26. % title('带通滤波之后的波形')
    27. %-------------------频谱分析
    28. % FFT_Data = fft(SignalData3);
    29. % Amplitude = abs(FFT_Data);
    30. % Amplitude = Amplitude/length(Amplitude);
    31. % Amplitude(2:end) = 2*Amplitude(2:end);
    32. % Frequence = (0:(length(Amplitude)/2-1))/length(Amplitude)*SampleFre;
    33. % figure;plot(Frequence,Amplitude(1:length(Frequence)))
    34. % title('三路信号叠加频谱')
    35. % %-------------------低通滤波之后频谱分析
    36. % FFT_LPF_Data = fft(LPF_Data);
    37. % Amplitude_LPF = abs(FFT_LPF_Data);
    38. % Amplitude_LPF = Amplitude_LPF/length(Amplitude_LPF);
    39. % Amplitude_LPF(2:end) = 2*Amplitude_LPF(2:end);
    40. % Frequence = (0:(length(Amplitude_LPF)/2-1))/length(Amplitude_LPF)*SampleFre;
    41. % figure;plot(Frequence,Amplitude_LPF(1:length(Frequence)))
    42. % title('低通滤波之后的频谱')
    43. % %-------------------带通滤波之后频谱分析
    44. % FFT_BPF_Data = fft(BPF_Data);
    45. % Amplitude_BPF = abs(FFT_BPF_Data);
    46. % Amplitude_BPF = Amplitude_BPF/length(Amplitude_BPF);
    47. % Amplitude_BPF(2:end) = 2*Amplitude_BPF(2:end);
    48. % Frequence = (0:(length(Amplitude_BPF)/2-1))/length(Amplitude_BPF)*SampleFre;
    49. % figure;plot(Frequence,Amplitude_BPF(1:length(Frequence)))
    50. % title('带通滤波之后的频谱')

    image.pngimage.png
    image.pngimage.png
    低通滤波器设计

    • 基于fdatool的低通滤波器的设计

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

    image.png
    导出方式是到MAT-File:
    image.png
    如果选择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);