📄 mmusic.m
字号:
%改进双向空间平滑music算法 7阵元等距阵波达方向估计(d=λ/2),2信源, 4个子阵(4阵元) 最小范数
clear all
clc
d=1;
lma=2;
N=2000; %设定采样点数
SNR=[3 3 2];
fs=8;
f=[1 1 2]; %设两个信号元的频率,单位为MHz
w=[18 20 60]*pi/180; %入射方向角向量
phi=[20 35 60]*pi/180; %两入射信号初始相位
M=17; %设定阵元数
P=3;
AMP=10.^(SNR./20);
m=0:M-1;
n=0:N-1;
S=repmat(AMP',1,N).*exp(-j*(2*pi*f.'/fs*n+phi'*ones(1,N))); %产生两个远场正弦信号
A=exp(-j*2*pi*d*m'*(sin(w)/lma)); %方向矩阵
X=A*S;
noise=randn(M,N)+j*randn(M,N);
X=X+noise; %接受数据矩阵
r=X*(X)'/N;
J=rot90(eye(9));
for k=1:9
b=sprintf('r%d',k);
c=sprintf('rb%d',k);
rk=sprintf('rk%d',k);
F=[zeros(9,k-1) eye(9) zeros(9,9-k)];
f=F.';
eval([b,'=','F','*r*','f;']);
eval([c,'=J*conj(',b,')*J;']);
eval([rk,'=(',b,'+',c,')./2;']);
end
Rx=(rk1+rk2+rk3+rk4+rk5+rk6+rk7+rk8+rk9)/9;
I=rot90(eye(9))
Rxx=Rx+I*conj(Rx)*I
[U,S,V]=svd(Rxx);
Vu=U(:,P+1:9);
S(9,9)=0;S(9,9)=0;S(9,9)=0;
Ss=S;
R=U*Ss*conj(V)
[Uu,Sss,Vv]=svd(R);
Vuu=Uu(:,P+1:9);
Vm=(Vuu+Vu)./2;
II=Vm*(Vm)'
w=[-pi/2:pi/1800:pi/2];
for l=1:length(w)
ao=[exp(-j*pi*sin(w(l))*[0:8])].';
pm(l)=(ao)'*(ao)/((ao)'*II*(ao));
p(l)=10*log10(abs(pm(l)));
end
figure(1)
polar(w,p);title('P(f/b)')
figure(2)
t=w*180/pi;
plot(t,p);grid;
title('改进MUSIC算法');
ylabel('P(\theta) (dB)');
xlabel('\theta (deg)');
hold on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -