⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music3.m

📁 MUSIC算法对信号DOA的估计 无修正的线阵算法源码
💻 M
字号:
%--------------------------------------------%相干信号DOA估计MD(矩阵分解)算法 %适用于均匀线阵%修正后的music算法%程序分为信源、全局变量定义、信号产生、预处理算法、DF算法、做图等几部分%盒子 于200803~200805期间研学,无版权%--------------------------------------------clc;%1:信源%--------------------------------------------Pd=2000;Fd=1;Fs=4*Fd;R=0.5;Delay=5;M=4;x1=randint(Pd,1,M); %生成一个随机数为2000*1的矩阵,输出范围为0~3x2=randint(Pd,1,M);y1=modmap(x1,Fd,Fs,'qask',M);%数字信号调制模拟信号,modmap可用scatterplot代替y2=modmap(x2,Fd,Fs,'qask',M);[rcv_a1,ti]=rcosflt(y1,Fd,Fs,'fir/sqrt/Fs',R,Delay);%对输入信号进行升余弦滤波[rcv_a2,ti]=rcosflt(y2,Fd,Fs,'fir/sqrt/Fs',R,Delay);s1=amodce(rcv_a1,10,'qam');%输出复包络,amodce可用ammod来代替,s1为8040*1% s2=amodce(rcv_a2,10,'qam');s2=s1; %假设信号s1和s2相关save sig3 s1 s2 %把变量s1,s2保存为sig3.mat文件%--------------------------------------------%2:全局变量定义%--------------------------------------------% clearm=8; %阵元数angle1=-50;%信号角度angle2=60;th=[angle1;angle2];%th为2*1矩阵nn=1024;%采样数SN1=10;%信号的SNRSN2=10;SN3=12;sn=[SN1;SN2];%sn为2*1矩阵degrad=pi/180;%--------------------------------------------%3:生成离散信号%--------------------------------------------load sig3 %把sig3.mat文件中的s1,s2变量装入内存tt=1:nn;S=[s1(tt).';s2(tt).'];%S为2*1024矩阵nr=randn(m,nn);%nr为8*1024矩阵,为正态分布随机阵ni=randn(m,nn);U=nr+j*ni; %构造噪声源,U为8*1024复数矩阵Ps=S*S'/nn;%信号的协方差矩阵,Ps为2*2矩阵ps=diag(Ps);%取主对角线上值,ps为2*1矩阵refp=2*10.^(sn/10);tmp=sqrt(refp./ps);%tmp为2*1矩阵S2=diag(tmp)*S;%S2为2*1024矩阵%--------------------------------------------%4:协方差矩阵及前后向平滑%--------------------------------------------tmp2=[0:m-1]'; %阵元位置A=exp(-i*pi*tmp2*sin(th'*degrad)); %A为8*2矩阵,方向矩阵由公式得出X=A*S2+U;%X为8*1024矩阵,1024次采集后得到的数据,阵列接受信号Rxx=X*X'/nn;%Rxx为8*8矩阵,阵列接受信号协方差a=eye(8);b=a(:,8:-1:1);%构造交换矩阵RXX=(Rxx+b*Rxx.'*b)/2;%--------------------------------------------%5:奇异值分解%--------------------------------------------[Q,SS,W]=svd(RXX); Vu=Q(:,3:8 ); %小特征值对应的特征向量,即噪声子空间%--------------------------------------------%6:做图%--------------------------------------------th2=[-90:90]';tmp2=[0:m-1]';a2=-i*tmp2*pi*sin(th2'*degrad);A2=exp(a2);num=diag(A2'*A2);Ena=Vu'*A2;den=diag(Ena'*Ena);doa=num./den;semilogy(th2,abs(doa));axis([-90 90 0.1 1e5]);grid on;hold on;%-------------------------------------------- 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -