📄 tracking_doa.m
字号:
function [Count_signals, sorted_matrix,sorted_value]=music_doa(No_signals,Angle_arrivals,...
Freq_signal,No_elements,Element_spacing,lambda,No_samples)
Kappa=2*pi/lambda;
d=Element_spacing;
%generating signals:
Total_signal=zeros(No_signals,No_samples);
k=1:No_samples;
for i=1:No_signals
theta=180*(2*rand-1);
theta=theta*pi/180;
Total_signal(i,:)=sqrt(2)*sin(2*Freq_signal(i)*pi*k); %+theta:frequency offset
Total_signal(i,:)=randBW(No_samples);
end
%generating noise:add to the signal at each of the rx. element:
noise=zeros(No_signals,No_samples);
SNR=20;
noise_var=1/(10^(SNR/10));
for i=1:No_elements
noise(i,:)=sqrt(noise_var)*randn(1,No_samples);
end
%Generating the array propagation vector(steering vector) for each signal:
Prop_matrix=zeros(No_elements,No_signals);
k=0:No_elements-1;
for i=1:No_signals
temp=exp(-j.*k*Kappa*d*sin(Angle_arrivals(i)));
Prop_matrix(:,i)=temp.';
end
% waveform received at the elements:
U=zeros(No_elements,No_samples);
for i=1:No_samples
U(:,i)= Prop_matrix*Total_signals(:,i)+noise(:,i);
end
%Estimate the input covariance matrix:
Cov_matrix=zeros(No_elements,No_elements);
for i=1:No_samples
temp=U(:,i)*(U(:,i)');
Cov_matrix=Cov_matrix+temp;
end
Cov_matrix=Cov_matrix/No_samples;
%find the Eigen values and the corresponding eign vectors:
[Eig_matrix,Eig_value]=eig(Cov_matrix,'nobalance');
%Estimate the number of incident signals:
[sorted_matrix,sorted_value,Count_signals,V_matrix]=Eigsort(Eig_matrix,...
Eig_value,No_elements,noise_var);
figure(1)
plot([1:elements],abs(fliplr(sorted_value)),'-+');
grid on
hold on
plot([1:elements],noise_var*[ones(1,No_elements)],'-o');
legend('Eigen values', 'Array elements');
xlabel('index');
ylabel('Eigen value');
title('Magnitude plot of Eigen values of the correlation matrix of rxd. signal');
%plot the spectrum:
plotspectrum(V_matrix,No_elements,Kappa,d);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -