📄 doa估计的rbf是实现.txt
字号:
% ==== ==== 取协方差矩阵的上三角的数据进行学习
% ==== ==== 同时输出结果直接为角度值
% ==== ==== 不带多径的条件下,测角性能随着信噪比的变化
clc
close all
clear all
% ==== 阵列参数
M=12; % 阵元数目
theta=[0:.2:5];
c=3.0e+8; % 光速
f0=500e6;
lamda=c/f0; % 波长
d=lamda/2; % 阵元间距
snap=1; % 快拍数目
% ====== 以下是产生线性调频信号 ====== %
fs=1.0e+6; % 采样率
a=[0:1:M-1]'; % 阵列向量
t=[0:snap-1]/fs; % 采样时间
% ==== ==== ==== 训练过程
% ====== 产生线性调频信号的包络
s=exp(j*2*pi*f0*t);
% ====== 阵列流型矢量
a_theta=exp(j*pi*2*d/lamda*a*sin(theta*pi/180));
X=a_theta*s;
x=[];
for ii=1:length(theta)
Rx=X(:,ii)*X(:,ii)';
for i1=1:M
for i2=i1:M
if i2==i1 x=[x Rx(i1,i2)];else x=[x real(Rx(i1,i2)) imag(Rx(i1,i2))];end
end
end
xi(ii,=x/norm(x);x=[];
end
%初始化数据
tt=theta;
err_goal=1.0e-6;sc=5;
net=newrb(xi.',tt,err_goal,sc,200,1);
%测试
ty=sim(net,xi.');tE=tt-ty;
tSSE=sse(tE);tMSE=mse(tE);
%预测(测试)曲线
figure(1);plot(theta,'-+');hold on;plot(ty,'r:*');legend('实际值','预测值');title('RBF网络模型输出预测曲线');
xlabel('输入样本点');ylabel('角度 (\circ)');
figure(2);plot(ty-theta,'mo-');title('RBF网络模型预测误差曲线');
xlabel('输入样本点');ylabel('预测误差 (\circ)');
% ==== ==== ==== ==== 估计
snap0=10;t0=[0:snap0-1]/fs;
s0=exp(j*2*pi*f0*t0);
theta0=2.5;a_theta0=exp(j*pi*2*d/lamda*a*sin(theta0*pi/180));
SNR=[0:2:30];snr=10.^(-SNR./20);
for kl=1:100
kl
noise0=(randn(M,snap0)+j*randn(M,snap0))/sqrt(2);
for ks=1:length(SNR)
noise=snr(ks)*noise0;
X0=a_theta0*s0+noise; % 加噪声
x0=zeros(1,M^2);
Rx0=X0*X0'/snap0;
x0=[];
for i1=1:M
for i2=i1:M
if i2==i1 x0=[x0 Rx0(i1,i2)];else x0=[x0 real(Rx0(i1,i2)) imag(Rx0(i1,i2))];end
end
end
x0=x0./norm(x0);
cita(ks,kl)=sim(net,x0.');
end
end
for ks=1:length(SNR)
std_cita(ks)=sqrt(mean((cita(ks,-theta0).^2));
end
figure(3);plot(SNR,std_cita,'m+-');xlabel('信噪比 (dB)');ylabel('测角误差 (\circ)');
title('测角误差随信噪比的变化');axis tight;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -