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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LMS自适应波束形成算法(MATLAB)

發布時間:2023/12/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LMS自适应波束形成算法(MATLAB) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、自適應波束形成的最佳權矢量
  • 二、MATLAB實現
    • 1.代碼邏輯
    • 2.代碼實現
    • 3.實驗結果


前言

記錄陣列信號處理的學習過程。


一、自適應波束形成的最佳權矢量

一般來說,并不希望直接求解方程,其理由如下:①由于移動用戶環境是時變的,所以權向量的解必須能及時更新;②由于估計最佳解需要的數據是含噪聲的,所以希望使用一種更新技術,可利用已求出的權向量求平滑最佳響應的估計,以減小噪聲的影響。因此,希望使用自適應算法周期更新權向量。
實際上就是自適應濾波的工程,使得輸出不斷向期望信號收斂。這里以MMSE(最小均方誤差)為例,說明如何把他變成一種自適應算法。
1.MMSE方法
MMSE準則就是使誤差y(k)?d(k)y(k)-d(k)y(k)?d(k)的均方值最小化,即代價函數取J(wq)=E[∣wqHx(k)?dq(k)∣2]J(w_q)=E[|w^H_qx(k) - d_q(k)|^2]J(wq?)=E[wqH?x(k)?dq?(k)2]實際上就是數學中的問題,給了y,要去求使得y取得最小最小值的x,在一維中我們直接求導數就可以,在二維和高維中,我們利用雅可比行列式,實際上是和一元差不多。在一元函數中,我們尋找最優點往往就是先給定初始xxx,然后以一個步長往梯度的反方向步進,在這里也是一樣。
我們將上式子展開
J(wq)=wHE[x(k)xH(k)]wq?E[dq(k)xH(k)]wq?wqHE[x(k)dq?(k)]+E[dq(k)dq?(k)]J(w_q)=w^HE[x(k)x^H(k)]w_q-E[d_q(k)x^H(k)]w_q-w_q^HE[x(k)d^*_q(k)]+E[d_q(k)d^*_q(k)]J(wq?)=wHE[x(k)xH(k)]wq??E[dq?(k)xH(k)]wq??wqH?E[x(k)dq??(k)]+E[dq?(k)dq??(k)]對上式子對wqw_qwq?求導數(矩陣求導,下次抽空了寫一下),求得
??wqJ(wq)=2E[x(k)xH(k)]wq?2E[x(k)dq?(k)]=2Rxwq?rxd\frac{\partial}{\partial w_q}J(w_q)=2E[x(k)x^H(k)]w_q-2E[x(k)d^*_q(k)]=2R_xw_q-r_{xd}?wq???J(wq?)=2E[x(k)xH(k)]wq??2E[x(k)dq??(k)]=2Rx?wq??rxd?
只要求出了梯度,我們就可以迭代,一步一步沿著梯度的方向去步進。

2.LMS算法
MMSE方法可以用LMS算法實現。
考慮隨機梯度算法,其更新權矢量的一般公式為
wq(k+1)=wq(k)?12u?w_q(k+1) = w_q(k) - \frac{1}{2}u\nabla wq?(k+1)=wq?(k)?21?u?
式中?=??wq(k)J(wq(k))\nabla = \frac{\partial}{\partial w_q(k)}J(w_q(k))?=?wq?(k)??J(wq?(k))uuu是收斂因子,實際上就是步長,這個步長,選長了,容易收斂不了,就一直在最優點旁邊左右移動,選短了,需要的迭代次數增加。
上面已經求出
?=2(E[x(k)xH(k)]wq(k)?E[x(k)dq?(k)])\nabla = 2(E[x(k)x^H(k)]w_q(k) - E[x(k)d^*_q(k)])?=2(E[x(k)xH(k)]wq?(k)?E[x(k)dq??(k)])
但是E[]E[]E[]這個東西是個什么呢?在實際運算中,我們如何求EEE呢?實際上EEE是一個總體的特征,當樣本足夠多時,我們可以去估計它,但是我們現在要求實時更新,也就是采一次樣,那么就利用LMS算法去更新一次,現在有EEE是不可以的,LMS算法的基本思路是把數學期望用各自的瞬時值代替,即得到kkk時刻的梯度估計值如下
?~(k)=2x(k)[xH(k)wq(k)?dq?(k)]=?2x(k)f(k)\tilde{\nabla}(k) = 2x(k)[x^H(k)w_q(k)-d^*_q(k)]=-2x(k)f(k)?~(k)=2x(k)[xH(k)wq?(k)?dq??(k)]=?2x(k)f(k)實際上
E[?~]=?E[\tilde{\nabla} ] = \nablaE[?~]=?,即?~\tilde{\nabla}?~?\nabla?的一個無偏估計,在某些情況下,我們是可以替代的。
我們將梯度值代回權矢量的更新公式,得到了LMS算法為
w(k+1)=w(k+1)+ux(k)f(k)w(k+1) = w(k+1)+ux(k)f(k)w(k+1)=w(k+1)+ux(k)f(k)

算法初始化更新公式
LMSw0=0w_0=0w0?=0y(k)=wH(k)x(k)f(k)=d(k)?y(k)w(k+1)=w(k)+ux(k)f?(k)y(k)=w^H(k)x(k) \\ f(k)=d(k)-y(k) \\ w(k+1) = w(k) + ux(k)f^*(k)y(k)=wH(k)x(k)f(k)=d(k)?y(k)w(k+1)=w(k)+ux(k)f?(k)

二、MATLAB實現

1.代碼邏輯

實際上LMS實現比較簡單。
1.kkk時刻計算y(k)=wH(k)x(k)y(k)=w^H(k)x(k)y(k)=wH(k)x(k)
2.計算f(k)=d(k)?y(k)f(k)=d(k)-y(k)f(k)=d(k)?y(k)
3.更新權矢量w(k+1)=w(k)+ux(k)f?(k)w(k+1) = w(k) + ux(k)f^*(k)w(k+1)=w(k)+ux(k)f?(k)
4.進行第k+1k+1k+1次迭代

2.代碼實現

clear; clc; M = 16; thetas = [0 30 60]; lambda = 10; d = lambda /2;N = 1000; n = 0:N-1; f0 = 2000; s = [1*sin(2*pi*f0 *n/(8*f0));...2*sin(2*pi*2*f0 *n/(8*f0));...3*sin(2*pi*3*f0 *n/(8*f0))]; % 生成方向矢量 A = exp(-1i * 2 * pi * d * (0:M-1)' * sind(thetas) / lambda); St = A*s + randn(M,N); % LMS 算法 開始 進行自適應濾波 di = s(1,:); % 第一行為期望信號 u = 0.0005; w = zeros(M,1); % 初始化權重向量for k = 1:Ny(k) = w'*St(:,k);e(k) = di(k) - y(k);w = w + u * St(:,k) * conj(e(k)); end scan_theta = [-89:90]; beam = zeros(1,length(scan_theta)); for i = 1 :length(scan_theta)% 構造該方向的方向向量v = exp(-1i * 2 * pi *d* (0:M-1)'.*sind(scan_theta(i))/lambda);beam(i) = abs(w'*v); end figure; plot(scan_theta,20*log10(beam/max(beam))) title('方向圖') figure; for k = 1:Nen(k) = (abs(e(k)))^2; end semilogy(en); hold on; xlabel('迭代次數') ylabel('MSE') title('MSE')

3.實驗結果

當以0度入射的信號為期望信號時

當以30度信號為期望信號時。



可見權值都收斂到了正確的方向圖方向。

主要參考:張小飛.陣列信號處理及MATLAB實現[M].電子工業出版社

總結

以上是生活随笔為你收集整理的LMS自适应波束形成算法(MATLAB)的全部內容,希望文章能夠幫你解決所遇到的問題。

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