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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CSI笔记【12】:阵列信号处理及MATLAB实现(第2版)阅读随笔(四)

發(fā)布時(shí)間:2023/12/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CSI笔记【12】:阵列信号处理及MATLAB实现(第2版)阅读随笔(四) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

CSI筆記【12】:陣列信號(hào)處理及MATLAB實(shí)現(xiàn)(第2版)閱讀隨筆(四)

    • Chapter6 陣列信號(hào)處理常用MATLAB代碼
        • (1).LCMV波束形成MATLAB程序:
        • (2).LMS自適應(yīng)波束形成MATLAB程序:
        • (3).root-MUSIC算法MATLAB程序:
        • (4).譜峰搜索傳播算子算法MATLAB程序:
    • Reference

Chapter6 陣列信號(hào)處理常用MATLAB代碼

(1).LCMV波束形成MATLAB程序:

“線性約束最小方差準(zhǔn)則(LCMV)”在對(duì)有用信號(hào)形式和信號(hào)來向完全未知情況下,在某種約束條件下使陣列輸出的方差最小。

"LCMV"方法的代價(jià)函數(shù)可以表示為 J(ω)=ωHRωJ(\omega)=\omega^HR\omegaJ(ω)=ωHRω,約束條件為 ωHa(θ)=f\omega^Ha(\theta)=fωHa(θ)=f。取 f=1f=1f=1,得到最佳解為 ω=R?1c[cHR?1c]?1\omega=R^{-1}c[c^HR^{-1}c]^{-1}ω=R?1c[cHR?1c]?1

clc; close all clear all; M=18; % 天線數(shù) L=100; % 快拍數(shù) thetas=10; % 信號(hào)入射角度 thetai=[-30 30]; % 干擾入射角度 n=[0:M-1]'; % 構(gòu)造一個(gè)一維列矩陣 vs=exp(-1i*pi*n*sin(thetas/180*pi)); % 信號(hào)方向矢量 vi=exp(-1i*pi*n*sin(thetai/180*pi)); % 干擾方向矢量 f=16000; % 載波頻率 t=[0:1:L-1]/200; % 構(gòu)造時(shí)間變量 snr=10; % 信噪比 inr=10; % 干噪比 xs=sqrt(10^(snr/10))*vs*exp(1i*2*pi*f*t); % 構(gòu)造有用信號(hào) xi=sqrt(10^(inr/10)/2)*vi*[randn(length(thetai),L)+1i*randn(length(thetai),L)]; % 構(gòu)造干擾信號(hào) noise=[randn(M,L)+1i*randn(M,L)]/sqrt(2); % 噪聲 X=xi+noise; % 含噪信號(hào) R=X*X'/L; % 構(gòu)造協(xié)方差矩陣 wop1=inv(R)*vs/(vs'*inv(R)*vs); % 波束形成 sita=48*[-1:0.001:1]; % 掃描方向范圍 v=exp(-1i*pi*n*sin(sita/180*pi)); % 掃描方向向量 B=abs(wop1'*v); % 求不同角度的增益 plot(sita,20*log10(B/max(B)),'k'); title('波束圖');xlabel('角度/degree');ylabel('波束圖/dB'); grid on axis([-48 48 -50 0]); hold off figure1 LCMV波束形成算法仿真結(jié)果

(2).LMS自適應(yīng)波束形成MATLAB程序:

“最小均方算法(LMS)”采用迭代模式,在每個(gè)迭代步驟 nnn 時(shí)刻的權(quán)向量加上一個(gè)校正量后,即組成 n+1n+1n+1 時(shí)刻的權(quán)向量,用它逼近最佳權(quán)向量。

clear all close all clc M=16; % 天線數(shù) K=2; % 信源數(shù) theta=[0 30]; % 信號(hào)入射角度 d=0.3; % 天線間距 N=500; % 采樣數(shù) Meann=0; varn=1; % 噪聲均值、方差 SNR=20; INR=20; pp=zeros(100,N);pp1=zeros(100,N); rvar1=sqrt(varn)*10^(SNR/20); % 信號(hào)功率 rvar2=sqrt(varn)*10^(INR/20); % 干擾功率 for q=1:100s=[rvar1*exp(1i*2*pi*(50*0.001*[0:N-1]));rvar2*exp(1i*2*pi*(100*0.001*[0:N-1]+rand))]; % 生成源信號(hào)A=exp(-1i*2*pi*d*[0:M-1].'*sin(theta*pi/180)); % 方向向量e=sqrt(varn/2)*(randn(M,N)+1i*randn(M,N)); % 噪聲Y=A*s+e; % 接收信號(hào)% LMS算法L=200;de=s(1,:);mu=0.0005;w=zeros(M,1);for k=1:Ny(k)=w'*Y(:,k); % 預(yù)測(cè)下一個(gè)采樣和誤差e(k)=de(k)-y(k); % 誤差w=w+mu*Y(:,k)*conj(e(k)); % 調(diào)整權(quán)向量end end% 波束形成 beam=zeros(1,L); for i=1:La=exp(-1i*2*pi*d*[0:M-1].'*sin(-pi/2+pi*(i-1)/L));beam(i)=20*log10(abs(w'*a)); end% 作圖 figure angle=-90:180/200:(90-180/200); plot(angle,beam); grid on xlabel('方向角/degree'); ylabel('幅度響應(yīng)/dB'); figure for k=1:Nen(k)=(abs(e(k))).^2; end semilogy(en);hold on xlabel('迭代次數(shù)'); ylabel('MSE');

運(yùn)行結(jié)果:

figure2 LMS自適應(yīng)波束形成算法仿真結(jié)果 figure3 LMS自適應(yīng)波束形成算法誤差圖

(3).root-MUSIC算法MATLAB程序:

求根"MUSIC",即"root-MUSIC"算法是"MUSIC"算法的一種多項(xiàng)式求根形式,其基本思想是"Pisarenko"分解。相比于"MUSIC"算法,"root-MUSIC"算法無須譜峰搜索,降低了復(fù)雜度。

clear all close all derad=pi/180; % 角度->弧度 radeg=180/pi; % 弧度->角度 twpi=2*pi; kelm=8; % 陣元數(shù) dd=0.5; % 陣元間距 d=0:dd:(kelm-1)*dd; iwave=3; % 信源數(shù) theta=[10 20 30]; % 波達(dá)方向 snr=10; % 信噪比 n=200; % 采樣數(shù) A=exp(-1i*twpi*d.'*sin(theta*derad)); % 方向向量 S=randn(iwave,n); % 信源信號(hào) X0=A*S; % 接收信號(hào) X=awgn(X0,snr,'measured'); % 添加噪聲 Rxx=X*X'; % 計(jì)算協(xié)方差矩陣 InvS=inv(Rxx); [EVx,Dx]=eig(Rxx); % 特征值分解 EVAx=diag(Dx)'; [EVAx,Ix]=sort(EVAx); % 特征值從小到大排序 EVAx=fliplr(EVAx); % 左右翻轉(zhuǎn),從大到小排序 EVx=fliplr(EVx(:,Ix));% root-MUSIC Unx=EVx(:,iwave+1:kelm); % 噪聲子空間 syms z; pz=z.^([0:kelm-1]'); pz1=(z^(-1)).^([0:kelm-1]); fz=z.^(kelm-1)*pz1*Unx*Unx'*pz; % 構(gòu)造多項(xiàng)式 a=sym2poly(fz); % 符號(hào)多項(xiàng)式->數(shù)值多項(xiàng)式 zx=roots(a); % 求根 rx=zx'; [as,ad]=(sort(abs((abs(rx)-1)))); DOAest=asin(sort(-angle(rx(ad([1,3,5])))/pi))*180/pi

運(yùn)行結(jié)果:

DOAest=9.9925 20.1515 29.9966

(4).譜峰搜索傳播算子算法MATLAB程序:

譜峰搜索傳播算子算法利用方向向量和 QQQ 矩陣的正交性構(gòu)造譜函數(shù),通過一維譜峰搜索,得到波達(dá)方向估計(jì)。相比于“MUSIC”算法,它無須對(duì)接數(shù)據(jù)的協(xié)方差矩陣進(jìn)行特征值分解,降低了復(fù)雜度。算法的主要步驟如下:

  • 根據(jù)接收信號(hào)構(gòu)造協(xié)方差矩陣 RRR。
  • 對(duì)協(xié)方差矩陣分塊,計(jì)算傳播算子 PPP
  • 構(gòu)造 QQQ 矩陣。
  • 使 θ\thetaθ 變化,按照 PPM(θ)=1/[aH(θ)QQHa(θ)]P_{PM}(\theta)=1/[a^H(\theta)QQ^Ha(\theta)]PPM?(θ)=1/[aH(θ)QQHa(θ)] 計(jì)算譜函數(shù),通過尋找譜峰來得到波達(dá)方向的估計(jì)值。
  • clear all close all derad=pi/180; radeg=180/pi; twpi=2*pi; kelm=16; % 陣元數(shù) dd=0.5; % 陣元間距 d=0:dd:(kelm-1)*dd; iwave=3; % 信源數(shù) theta=[10 20 30]; % DOA pw=[1 0.8 0.7]'; % 信號(hào)功率 nv=ones(1,kelm); % 歸一化噪聲方差 snr=20; % 信噪比 snr0=10^(snr/10); n=200; % 樣本數(shù)量A=exp(-1i*twpi*d.'*sin(theta*derad)); % 方向向量K=length(d); cr=zeros(K,K); L=length(theta); data=randn(L,n); data=sign(data); twpi=2.0*pi; derad=pi/180.0; s=diag(pw)*data; A1=exp(-1i*twpi*d.'*sin([0:0.2:90]*derad)); received_signal=A*s; cx=received_signal+diag(sqrt(nv/snr0/2))*(randn(K,n)+1i*randn(K,n)); Rxx=cx*cx'/n;% PM算法 G=Rxx(:,1:iwave); H=Rxx(:,iwave+1:end); P=inv(G'*G)*G'*H; % 傳播算子矩陣 Q=[P',-diag(ones(1,kelm-iwave))]; % Q矩陣for iang=1:361angle(iang)=(iang-181)/2;phim=derad*angle(iang);a=exp(-1i*twpi*d*sin(phim)).';SP(iang)=1/(a'*Q'*Q*a); end SP=abs(SP); SPmax=max(SP); SP=10*log10(SP/SPmax);% 作圖 figure h=plot(angle,SP,'-k'); set(h,'Linewidth',2) xlabel('angle(degree)') ylabel('magnitude(dB)') axis([0 60 -60 0]) set(gca,'XTick',[0:10:60]) grid on hold on legend('Propagator Method')

    運(yùn)行結(jié)果:

    figure4 譜峰搜索傳播算子算法仿真運(yùn)行結(jié)果

    Reference

    [1] 陣列信號(hào)處理及MATLAB實(shí)現(xiàn)(第2版)?\copyrightc? 張小飛 李建峰 徐大專 等 著.

    總結(jié)

    以上是生活随笔為你收集整理的CSI笔记【12】:阵列信号处理及MATLAB实现(第2版)阅读随笔(四)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。