📄 matrix_decompose.m
字号:
%MATRIX_DECOMPOSE__MUSIC ALOGRITHM
%DOA ESTIMATION BY MATRIX_DECOMPOSE__MUSIC
clear all;
close all;
clc;
source_number=2;%信元数
sensor_number=8;%阵元数
N_x=1024; %信号长度
snapshot_number=N_x;%快拍数
w=[pi/4 pi/4].';%信号频率
l=[(2*pi*3e8)/w(1) (2*pi*3e8)/w(2)];%信号波长
d=[0.5*l(1) 0.5*l(2)];%阵元间距
m=4;%每个子阵阵元数
l0=3;%l0<(M-m)
snr=10;%信噪比
source_doa=[45 -60];%两个信号的入射角度
A=[exp(-j*(0:sensor_number-1)*d(1)*2*pi*sin(source_doa(1)*pi/180)/l(1));exp(-j*(0:sensor_number-1)*d(2)*2*pi*sin(source_doa(2)*pi/180)/l(2))].';%阵列流型
s=sqrt(10)*exp(j*w*[0:N_x-1]);%仿真信号
%x=awgn(s,snr);
x=A*s+(1/sqrt(2))*(randn(sensor_number,N_x)+j*randn(sensor_number,N_x));%加了高斯白噪声后的阵列接收信号
R=x*x'/snapshot_number;
%进行矩阵重构
R0=R([1:4],:);
R1=R([2:5],:);
R2=R([3:6],:);
R3=R([4:7],:);
Rm=[R0 R1 R2 R3];
%对重构的矩阵进行奇异值分解
%[U,S,V]=svd(Rm);
%Un=V(:,1:m-source_number);
%Gn=Un*Un';
[U,S,V]=svd(Rm);
Un=U(:,source_number+1:m);
Gn=Un*Un';
searching_doa=-90:0.1:90;%线阵的搜索范围为-90~90度
for i=1:length(searching_doa)
a_theta=exp(-j*(0:m-1)'*2*pi*d*sin(pi*searching_doa(i)/180)/l);
Pmusic(i)=1./abs((a_theta)'*Gn*a_theta);
end
figure (2);
plot(searching_doa,10*log(Pmusic));
%axis([-90 90 -90 90]);
xlabel('入射角/度');
ylabel('谱峰、dB');
legend('MATRIX-DECOMPOSE-MUSIC SPECTRUM');
title('矩阵分解MUSIC估计');
grid on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -