日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

维纳(Wiener)滤波及Matlab代码

發(fā)布時間:2023/12/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 维纳(Wiener)滤波及Matlab代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 維納(Wiener)濾波
    • 模型結構
    • 使用條件
    • 原理公式推導
    • 仿真分析——Matlab代碼
      • 一、參考信號d(n)d(n)d(n)為原始信號s(n)s(n)s(n)
      • 二、參考信號d(n)d(n)d(n)為加性高斯白噪聲v(n)v(n)v(n)
      • 三、參考信號d(n)d(n)d(n)為輸入信號自身x(n)x(n)x(n)
    • 總結

維納(Wiener)濾波

Wiener濾波的核心目標就是使均方誤差最小,從而可以推導出維納-霍夫方程。

在信號處理中,濾波器可以分為FIR和IIR兩種,在這里主要介紹維納FIR濾波器,如下圖1所示。換句話說,就是要想方設法求出最優(yōu)濾波器的系數。

圖1 Wiener濾波的橫向濾波器

模型結構

首先,先來看一下wiener濾波器的一般結構,如下圖2所示。

圖2 wiener濾波的原理框圖

其中s(n)s(n)s(n)是輸入的原始信號,經過噪聲信道v(n)v(n)v(n)后,變成了x(n)x(n)x(n),濾波器后輸出得到s′(n)s'(n)s(n),期望響應是d(n)d(n)d(n) ,那誤差e(n)=d(n)?s′(n)e(n)=d(n)-s'(n)e(n)=d(n)?s(n) ,濾波器的系數為h(n)h(n)h(n)

對于信號s(n)s(n)s(n)和噪聲v(n)v(n)v(n)的混合體x(n)=s(n)+v(n)x(n)=s(n)+v(n)x(n)=s(n)+v(n),按照均方誤差最小的準則,從x(t)x(t)x(t)中分離出信號s(t)s(t)s(t)的理論,稱為維納濾波理論

這里要著重說明的一點是,期望響應d(n)d(n)d(n)一般上來說是對原始信號的s(n)s(n)s(n)估計,后面會講到別的情況。如果你想要對一個未知的信號進行濾波,用wiener濾波的方法是不行的。因為,在設計濾波器系數的時候,必須用到期望信號d(n)d(n)d(n)。所以,必須要知道d(n)d(n)d(n),或者d(n)d(n)d(n)的一些其他的特征。

使用條件

1、輸入信號是寬平穩(wěn)信號。那么寬平穩(wěn)是什么呢?通俗的來說就是與時間無關的信號,或者與時間的起點無關,只與時間間隔有關。

2、必須知道期望信號,或者它的一些信號特征才行(具體看下面的公式推導部分)。

原理公式推導

為了簡便運算,假設所使用的信號是實信號。

輸出信號s′(n)=h(n)?x(n)=∑k=?∞+∞h(n)x(n?k)s'(n)=h(n)*x(n)=\sum_{k=-\infty}^{+\infty} h(n) x(n-k)s(n)=h(n)?x(n)=k=?+?h(n)x(n?k)

誤差e(n)=d(n)?s′(n)==d(n)?∑k=?∞+∞h(n)x(n?k)e(n)=d(n)-s'(n)==d(n)-\sum_{k=-\infty}^{+\infty} h(n)x(n-k)e(n)=d(n)?s(n)==d(n)?k=?+?h(n)x(n?k)

均方誤差J(h)=E[e2(n)]J(h)=E[{e^2}(n)]J(h)=E[e2(n)]

為了使均方誤差最小,需要對JJJ進行求導,并讓導數為0,即可得到最佳濾波器的系數了。

?hJ=?2E[x(n?k)e(n)]{\nabla _h}J = - 2E[ x(n - k)e(n)] ?h?J=?2E[x(n?k)e(n)]

所以,
E[x(n?k)e(n)]=0(1)E[x(n - k)e(n)]=0\quad\quad\quad\quad\quad(1) E[x(n?k)e(n)]=0(1)

E[x(n?k)(d(n)?∑i=?∞∞h(i)x(n?i))]=0E\left[x(n-k)\left(d(n)-\sum_{i=-\infty}^{\infty} h(i)x(n-i)\right)\right]=0 E[x(n?k)(d(n)?i=??h(i)x(n?i))]=0

∑i=?∞∞h(i)E[x(n?k)x(n?i)]=E[x(n?k)d(n)]\sum_{i=-\infty}^{\infty} h(i) E\left[x(n-k) x(n-i)\right]=E\left[x(n-k)d(n)\right] i=??h(i)E[x(n?k)x(n?i)]=E[x(n?k)d(n)]

∑i=?∞∞h(i)rx(i?k)=rxd(?k)\sum_{i=-\infty}^{\infty} h(i)r_{x}(i-k)=r_{x d}(-k) i=??h(i)rx?(i?k)=rxd?(?k)

針對MMM階FIR濾波器,維納-霍夫方程(Wiener-Hopf)為∑i=0M?1h(i)rx(i?k)=rxd(?k)\sum_{i=0}^{M-1} h(i)r_{x}(i-k)=r_{x d}(-k)i=0M?1?h(i)rx?(i?k)=rxd?(?k),那么,寫成矩陣的形式就是
Rh=rxdh=R?1rxd\begin{array}{l} Rh={r}_{x d} \\ h=R^{-1}{r}_{x d} \end{array} Rh=rxd?h=R?1rxd??
其中RRR是信號x(n)x(n)x(n)的自相關矩陣,rxdr_{x d}rxd?是信號x(n)和d(n)x(n)和d(n)x(n)d(n)的互相關矩陣。

仿真分析——Matlab代碼

由于Wiener濾波器的參數求解過程中必須要用到參考信號,所以這里仿真采用的信號Signal為
s=A?sin(2πf1t)+B?sin(2πf2t)s = A*sin\left( {2\pi {f_1}t} \right){\rm{ }} + {\rm{ }}B*sin\left( {2\pi {f_2}t} \right)s=A?sin(2πf1?t)+B?sin(2πf2?t)
即為兩個疊加的正弦信號。其中A=10,B=15,f1=1000,f2=2000A = 10,B = 15,{f_1} = 1000,{f_2} = 2000A=10,B=15,f1?=1000,f2?=2000
根據采樣定理,這里假定采樣頻率fs=100000{f_s} = 100000fs?=100000,采樣間隔T=1/fsT = 1/{f_s}T=1/fs?,則sa(t)∣t=nT=sa(nT)(0≤n≤999){s_a}(t)\left| {_{t = nT}} \right. = {s_a}(nT){\rm{ }}(0 \le n \le 999)sa?(t)t=nT?=sa?(nT)(0n999)
對于不同的nnn值,s(n)s(n)s(n)是一個有序的數字序列:s(n)={sa(0),sa(T),sa(2T),?}s(n) = \left\{ {{s_a}(0),{s_a}(T),{s_a}(2T), \cdots } \right\}s(n)={sa?(0),sa?(T),sa?(2T),?}。信號傳輸過程中,信道中的噪聲為加性高斯白噪聲。原始信噪比定義為SNR=3。

上面提到期望信號d(n)d(n)d(n)是必不可少的,所以,對期望信號的設定也會決定結果的好壞。所以,d(n)d(n)d(n)也可以稱作參考信號。有以下幾種不同的情況:

  • 參考信號d(n)d(n)d(n)為原始信號s(n)s(n)s(n)
  • 參考信號d(n)d(n)d(n)為加性高斯白噪聲v(n)v(n)v(n)
  • 參考信號d(n)d(n)d(n)為輸入信號自身x(n)x(n)x(n)

下面對三種不同的情形進行仿真與對比分析, 其中濾波器系數長度N均為100。
(全部三種完整的MATLAB代碼整合版在我的資源“維納(Wiener)濾波及Matlab代碼”中)

一、參考信號d(n)d(n)d(n)為原始信號s(n)s(n)s(n)

%% wiener filter for different d(n) %% StarryHuang 2021.1.9 close all; clear; clc; %% 信號產生,對原始信號進行采樣 A=10; % 信號的幅值 B=15; % 信號的幅值 f1=1000; % 信號1的頻率 f2=2000; % 信號2的頻率 fs=10^5; % 采樣頻率 t=0:999; % 采樣點t = [0,999],長度1000 M = length(t); % 信號長度 s=A*sin(2*pi*f1*t/fs) + B*sin(2*pi*f2*t/fs); % 采樣正弦波信號為Signal SNR = 3; % 初始信噪比 x=awgn(s,SNR,'measured'); %觀測信號 x=s+v.,給正弦波信號加入信噪比為-3dB的高斯白噪聲 v=x - s; % 高斯白噪聲,誤差信號,每次運行都不一樣 %% 第一種情況——期望信號d(n)為感興趣的原信號Signal d = s; %% 第二種情況——期望信號d(n)為Noise v % d = v; %% 第三種情況—— 期望信號d(n)x(n-1) % d = [x(1),x(1:end-1),]; % d(n)=x(n-1)%% 維納濾波 N = floor(length(x)*0.1); % 濾波器的階數,向下取整 % N=100; % 維納濾波器階數 Rxx=xcorr(x,N-1,'biased'); % 自相關函數1*(2N-1)維度,返回一個延遲范圍在[-N,N]的互相關函數序列,對稱的 % 變成矩陣 N*N維度 for i=1:Nfor j=1:NmRxx(i,j)=Rxx(N-i+j); % N*N維度end end%產生維納濾波中x 方向上觀測信號與期望信號d的互相關矩陣 Rxd=xcorr(x,d,N-1,'biased'); % 互相關函數1*(2N-1)維度% 變成矩陣1*N維度 for i=1:NmRxd(i)=Rxd(N-1+i); % 1*N維度 endh = inv(mRxx)*mRxd'; % 由wiener-Hopf方程得到濾波器最優(yōu)解, h是N*1維度%% 檢驗wiener濾波效果 y = conv(x,h); % 濾波后的輸出,長度為M+N-1,要截取前M個。 y = y(1:M); % yy = filter(h,1,x); % 用卷積或者直接用filter都可以 Py=sum(power(y,2))/M; %濾波后信號y的功率 e = d - y; % 輸出減去期望等于濾波誤差 J = sum(power(e,2))/M % 濾波后噪聲功率 SNR_after = 10*log10((Py-J)/J) % 濾波后信噪比 db單位 imv = 10*log10((Py-J)/J/power(10,SNR/10)) % 濾波后較濾波前信噪比提高了imv dB。%% 畫圖 % 原始信號x,噪聲v,觀測波形d figure(1), subplot(311) plot(t,s) % 輸入函數 title(' Signal原信號')subplot(312) plot(t,v) % 輸入函數 title(' Noise噪聲')subplot(313) plot(t,x) % 輸入函數 title(' X(n)觀測波形')%% d = s % 期望和濾波后的信號對比 figure(2), subplot(211) plot(t, d, 'r:', t, y, 'b-','LineWidth',1); legend('期望信號','濾波后結果'); title('期望信號與濾波結果對比'); xlabel('觀測點數');ylabel('信號幅度'); axis([0 1000 -50 50])subplot(212), plot(t, e); title('輸出誤差'); xlabel('觀測點數');ylabel('誤差幅度'); axis([0 1000 -50 50])% 濾波前后對比 figure(3), subplot(211) plot(t, x); title('維納濾波前'); xlabel('觀測點數');ylabel('信號幅度'); axis([0 1000 -50 50])subplot(212), plot(t, y); title('維納濾波后'); xlabel('觀測點數');ylabel('誤差幅度'); axis([0 1000 -50 50])



濾波后信噪比SNR_after = 13.187dB;濾波后較濾波前信噪比提高了10.4dB。

二、參考信號d(n)d(n)d(n)為加性高斯白噪聲v(n)v(n)v(n)

只要將代碼的開頭d換成v,畫圖函數修改為%% d=v部分即可。

% %% d = v % figure(2) % plot(t, d, 'r:', t, y, 'b-','LineWidth',1); % legend('期望信號','濾波后結果'); title('期望信號與濾波結果對比'); % xlabel('觀測點數');ylabel('信號幅度'); % axis([0 1000 -50 50]) % % figure(3) % plot(t, s, 'r:', t, x - y, 'b-','LineWidth',1); % legend('Signal原始信號','噪聲抵消后結果'); title('Signal原始信號與噪聲抵消后結果對比'); % xlabel('觀測點數');ylabel('信號幅度'); % axis([0 1000 -50 50])



濾波后信噪比SNR_after = 10.023dB;濾波后較濾波前信噪比提高了7dB。

三、參考信號d(n)d(n)d(n)為輸入信號自身x(n)x(n)x(n)

只要將代碼的開頭d換成x即可。


濾波后信噪比SNR_after = -0.812dB;濾波后較濾波前信噪比提高了-3.812dB。

總結

參考信號選為原始信號時的濾波效果最好。雖然在第三種方案中,參考信號選為自身信號時的濾波效果不好,第三種Wiener濾波器模型對于許多應用仍然具有很大的實用價值, 因為在許多實際應用中, 既無法提前獲知系統的期望響應, 也不具備獲得與輸入信號高相關噪聲的條件。

總結

以上是生活随笔為你收集整理的维纳(Wiener)滤波及Matlab代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 蜜桃视频日韩 | 欧美在线视频一区二区 | 快射视频网站 | 免费播放片大片 | 69国产精品视频 | 丁香花国语版普通话 | 成人在线观看a | 3o一40一50一6o女人毛片 | 91一起草| 亚洲专区在线视频 | 日韩在线观看av | 五月网 | 麻豆一区二区三区四区 | 四级黄色片 | 国产妻精品一区二区在线 | 中国a毛片| 日韩亚洲欧美一区二区三区 | 夜夜爽爽 | 天天碰免费视频 | 日本熟女一区二区 | 爽妇网国产精品 | 飘花影院伦理片 | 肉大榛一进一出免费视频 | 欧美日本韩国一区 | 少妇性l交大片免潘金莲 | 日本视频一区二区三区 | 99视频在线免费 | 少妇高潮av久久久久久 | 成人免费在线视频 | 一区二区三区三区在线 | 午夜在线影院 | 丁香花国语版普通话 | 国产福利91 | 不卡av在线 | 先锋影音av在线 | 人与拘一级a毛片 | 福利片在线看 | 亚洲欧美日韩综合 | 亚洲拍拍| 手机看片日韩福利 | 黄色avav| 日韩精品视频一区二区 | www.sesehu.com| 天天干天天色 | 欧美怡红院视频一区二区三区 | 国产精品美女 | 国产欧美视频一区 | 思思精品视频 | 亚洲激情四射 | 免费毛片软件 | 韩国三级av | 青青草网址 | 无码人妻丰满熟妇啪啪网站 | 97视频免费看 | 久久久精彩视频 | 久久精品国产清自在天天线 | 91色区| 日韩成人精品一区 | 日本成人精品视频 | 男女高h视频 | 六月婷婷七月丁香 | 91av中文字幕 | 俄罗斯毛片 | 欧洲精品免费一区二区三区 | 日本少妇色视频 | 日韩v在线 | 久久久成人免费视频 | 丁香婷婷成人 | 色戒电影未测减除版 | a级片国产 | 台湾三级伦理片 | 日本中文字幕精品 | 特级新鲜大片片 | 日日摸日日操 | 国产精品香蕉国产 | 亚洲一区欧美二区 | 最新黄网 | 国产豆花视频 | 黑丝国产一区 | 五月花成人网 | 黄色片91 | 色秀视频网 | 黑料视频在线 | 五十路在线观看 | 日本在线一区 | 激情欧美综合 | 精品无码成人久久久久久免费 | 97超碰人人模人人人爽人人爱 | 婷婷视频| 黄网站在线观看视频 | 日韩和欧美的一区二区 | 国产精品久久九九 | 日韩avxxx | 一呦二呦三呦精品网站 | 国产污视频| 亚洲视频自拍偷拍 | 久久频| 99视频网 | 亚洲蜜桃视频 |