美文网首页
信号滤波方法

信号滤波方法

作者: 赵小赵的花花世界 | 来源:发表于2020-11-08 17:12 被阅读0次

    学号:20021211189       姓名:赵治伟

    【嵌牛导读】滤波(Wave filtering)是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施,滤波分为经典滤波和现代滤波。

    【嵌牛鼻子】信号的滤波方法

    【嵌牛正文】

    1.巴特沃斯低通滤波器去噪

    在[B,A]=butter(n,wn)中,n是滤波器的阶数,Wn是截止频率,Wc = 截止频率*2/采样频率

    Wc=2*50/Fs;                                          %截止频率 50Hz

    [b,a]=butter(4,Wc);

    Signal_Filter=filter(b,a,Mix_Signal_1);

    2.FIR低通滤波器去噪

    F   =  [0:0.05:0.95];

    A  =  [1    1      0     0     0    0      0     0     0    0     0     0     0     0     0     0    0   0   0   0] ;

    b  =  firls(20,F,A);

    Signal_Filter = filter(b,1,Mix_Signal_1);

    3. 移动平均滤波去噪

    b  =  [1 1 1 1 1 1]/6;

    Signal_Filter = filter(b,1,Mix_Signal_1);

    4. 中值滤波去噪

    Signal_Filter=medfilt1(Mix_Signal_1,10);

    5. 维纳滤波去噪

    维纳滤波是以均方误差最小(LMS(Least MeanSquare)为准则的,它根据过去观测值和当前观测值来估计信号的当前值,因此它的解形式是系统的传递函数或单位脉冲响应。

    Rxx=xcorr(Mix_Signal_1,Mix_Signal_1);              %得到混合信号的自相关函数

    M=100;                                                             %维纳滤波器阶数

    for i=1:M                                                           %得到混合信号的自相关矩阵

    for j=1:M

    rxx(i,j)=Rxx(abs(j-i)+N);

    end

    end

    Rxy=xcorr(Mix_Signal_1,Signal_Original_1);       %得到混合信号和原信号的互相关函数

    for i=1:M

    rxy(i)=Rxy(i+N-1);

    end                                                                  %得到混合信号和原信号的互相关向量

    h = inv(rxx)*rxy';                                               %得到所要涉及的wiener滤波器系数

    Signal_Filter=filter(h,1, Mix_Signal_1);               %将输入信号通过维纳滤波器

    6. 自适应滤波去噪

    维纳滤波器参数是固定的,适合于平稳随机信号。卡尔曼滤波器参数是时变的,适合于非平稳随机信号

    N=1000;                                             %输入信号抽样点数N

    k=100;                                                  %时域抽头LMS算法滤波器阶数

    u=0.001;                                             %步长因子

    %设置初值

    yn_1=zeros(1,N);                                  %output signal

    yn_1(1:k)=Mix_Signal_1(1:k);                 %将输入信号SignalAddNoise的前k个值作为输出yn_1的前k个值

    w=zeros(1,k);                                        %设置抽头加权初值

    e=zeros(1,N);                                        %误差信号

    %用LMS算法迭代滤波

    for i=(k+1):N

    XN=Mix_Signal_1((i-k+1):(i));

    yn_1(i)=w*XN';

    e(i)=Signal_Original_1(i)-yn_1(i);

    w=w+2*u*e(i)*XN;

    end

    7. 小波去噪

    [xd,cxd,lxd] = wden(Mix_Signal_1,'sqtwolog','s','one',2,'db3');

    plot(xd);                                                 %Mix_Signal_1 小波滤波后信号

    相关文章

      网友评论

          本文标题:信号滤波方法

          本文链接:https://www.haomeiwen.com/subject/puuhbktx.html