zoukankan      html  css  js  c++  java
  • matlab对信号的滤波方法

    https://blog.csdn.net/colapin/article/details/52840075;

    关于信号的滤波方法:

    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 小波滤波后信号

  • 相关阅读:
    怎么查看这个历史最大连接session数
    16G 手机清理
    维骨力Glucosamine的最关键的几点...
    转 OGG Troubleshooting-Database error 1 (ORA-00001: unique constraint ...)
    Steps to Resolve the Database JAVAVM Component if it Becomes INVALID After Applying an OJVM Patch
    数据库sql 使用 lag 和OVER 函数和 like 使用 小技巧
    log file sync
    转 多个版本的数据库在同一服务器上ORA-12557
    datapatch meet ORA-01422
    运维题目(七)
  • 原文地址:https://www.cnblogs.com/rjjhyj/p/8878498.html
Copyright © 2011-2022 走看看