clc
clear
close all
fs=15000; % sample freq 采样频率
n=0:1/fs:1;%0为初始值,1为终止值,步长为1/15000
N=100; % data snapshot 快拍数
SNR=10;
As1=10^(SNR/20); % amplitude 振幅
fc=2000; % freq of carrier 载波频率
Fm=As1*sin(2*pi*fc*n);%%%%%%信号1
%SNR=-20; %SNR为信噪比
As=10^(SNR/20);
fa=500;
Am=As*cos(2*pi*fa*n); %%%% 信号2
S=[Fm;Am]; %S为2行15000列的矩阵
M=7; %% 阵列数
a =45; % %%%%%%%%%%%%%%%信号1到达角度
b = 60; %%%%%%%%%%%%%%%%%%信号2 到达角度
a1=exp(-j*pi*[0:M-1]'*sin(a*pi/180));%[0:M-1]=0 1 2...6,A'为转置矩阵
a2=exp(-j*pi*[0:M-1]'*sin(b*pi/180));
A=[a1 a2]; %方向矩阵A7x2
ni=randn(M,length(n))+j*randn(M,length(n)); % 定义噪声
X=A*S+ni;
X1=X*X'./N;% 得到协方差矩阵X1
[V D]=eig(X1); %%对协方差矩阵进行特征值分解(V特征向量,D特征值)
[lambda,index] = sort((diag(D))); %对特征值进行升序排列
UU=V(:,index(1:5)); %%取出较小特征值((个数为:阵元数-信号个数))对应的特征向量得到噪声空间
%%%%UU为噪声子空间
%%%下一步得到信号子空间,运用music估计公式来估计DOA
i=1;
for alpha1=0:0.1:90
n=[0:(M-1)]';
aa=exp(-j*2*pi*0.5*n*sin(alpha1*pi./180)) ;%%%%%%MUSIC算法实现过程
ww=aa'*UU*UU'*aa;
smusic(i)=abs(1./ww);%%%%abs函数求绝对值或复数模长
i=i+1;
end
alpha=0:0.1:90;
figure(1);
plot(alpha,20*log10(smusic),'k');%%%%画图,alphao0到180为横坐标
title('MUSIC功率谱');
xlabel('方位角/°');
grid on;