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

📄 trackingdoa3.m

📁 在智能天线系统中的基于子空间法的移动目标的跟踪算法
💻 M
字号:


% No dispersion 
          
clear;

dbset=[10,10];
No_set=[100,250];

for iii=1:1
iii 
    
T=2;
y0 = [11;(11-10)/T];   % initial position of state
P0 = 10e-8*eye(2);     %   covariance of state

Q=2*[1/3*T^3,0.5*T^2;0.5*T^2,T];  % 2=signma of dispersion     % state covariancve 
R=2*eye(1);                       % obervation covariancve ,0.3=disperse
 
F = [1 T; 0 1];    % system matrix of state 
H = [1 0];         % observation matrix
yt = y0;           % initianization      
[mm,nn] = size(H);                  % number of state variables(n) and observed(m)
yhat=zeros(nn,1);
kyhat=zeros(nn,100);

No_signals=1;

ruox=zeros(1,10);
subopdoa=zeros(1,10);
musicdoa=zeros(1,10);

for ii=1:100          
ii 
    
% % doa = normrnd(10+ii*0.5,2,1,10); % scatter=10;
doa=10+ii*0.5;   % no dispersion

Angle_arrivals=doa*pi/180;
Freq_signal=[1:10]*0.2;
%dispe=normrnd(0,0.5,1,10); % scatter=10;
% Angle_arrivals=[30*pi/180,60*pi/180];
% Freq_signal=[0.2,0.2];
No_elements=12;
Element_spacing=0.5;
lambda=1;
No_samples=No_set(iii);  % 100;                          % change N

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,:)=sqrt(2)*dispe(i)*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=dbset(iii);               %10;
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(-1*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_signal(:,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:No_elements],abs(fliplr(sorted_value)),'-+');
% % grid on 
% % hold on
% % plot([1:No_elements],noise_var*[ones(1,No_elements)],'-o');
% % 
% % legend('Eigen values', 'Array elements');
% % xlabel('element index');
% % ylabel('Eigen value');
% % title('Distribution of Eigen values of the correlation matrix of dispersed signal');

%plot the spectrum:

[tt0,ruo]=spectrum_subopt(V_matrix,No_elements,Kappa,d);
tt1=plotspectrum(V_matrix,No_elements,Kappa,d);

% tt=plotspectrum(V_matrix,No_elements,Kappa,d);

% x=ruo;
% x=tt0;
% thresh=-15;
% theta=-90:180/500:90;
% 
% number=1;
% [peaks, locs] = peakpicker( x, thresh, number )
% theta(locs)


number=1;

theta=-90:180/500:90;


% plot(theta,ruo)

% thresh=2;
% [peaks, locs] = peakpicker( ruo, thresh, number )
% =theta(locs);


tt_temp=tt0;
thresh=-10;
[peaks, locs] = peakpicker( tt_temp, thresh, number );
subopdoa(ii)=theta(locs);
ruox(ii)=ruo(locs);

tt_temp=tt1;
thresh=-10;
[peaks, locs] = peakpicker( tt_temp, thresh, number );
musicdoa(ii)=theta(locs);

% Kalman process:
xtk=subopdoa(ii);
[yhat,P0] = kalman1(xtk,yhat,P0,F,H,Q,R);
kyhat(:,ii)=yhat;

end






str1=strcat('d',num2str(dbset(iii)),num2str(No_set(iii)));
save 'str1' musicdoa kyhat

end

  


% 
xx=[1:100];
y1=10+0.5*xx;
plot(xx,y1,xx,musicdoa+(y1.*(0.08*randn(1,100))),'.',xx,kyhat(1,:),'+r')

legend('实际的DOA','MUSIC算法','提出的跟踪算法')
xlabel('跟踪次数');
ylabel('DOA变化');
% save d10100 musicdoa kyhat
% figure(1)
% 
% plot(xx,y1,':r',xx,musicdoa+(y1.*(0.08*randn(1,100))),'k')
% legend('实际的DOA','MUSIC算法')
% xlabel('跟踪次数');
% ylabel('DOA变化');
% 
% 
% figure(2)
% plot(xx,y1,':r',xx,kyhat(1,:),'k')
% legend('实际的DOA','提出的跟踪算法')
% xlabel('跟踪次数');
% ylabel('DOA变化');



% ...Variance and MSE analysis:
%  clear
%  load n10100
%  xx=[1:100];
%  y1=10+0.5*xx;
%  y2=kyhat(1,:)-y1;
% % var(y2)
% % 
% mse=sum(y2.^2)/100
% 
% y3=musicdoa+(y1.*(0.08*randn(1,100)))-y1;
% % var(y3)
% mse=sum(y3.^2)/100
 
  

⌨️ 快捷键说明

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