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 小波濾波后信號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM