✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
高频地波雷达是一种利用高频波段垂直极化电磁波沿海面绕射的特性而设计出来的一种既可以进行海面目标检测又可以从事海态遥感的设备。目前电离层杂波干扰抑制是高频地波雷达应用的一个重要瓶颈,人们对于如何抑制电离层杂波已经做了相当多的研究。然而,电离层杂波也携带着电离层的某些信息。本文的目的便是要利用现有的高频地波雷达设备提取这些信息中最重要的一个参数——电离层虚高。这项研究将拓展高频地波雷达的应用领域。本文仿真各种回波估计算法,包括最佳权矢量波束形成算法、权值自适应调整算法、超分辨率DOA算法;。
⛄ 部分代码
function [rmse]=espirit(theta0,element_num)
%*******************************************************
% 共轭ESPRIT算法
%
% Inputs
% d_lamda sensor separation in wavelength
% Rxx(K,K) array output covariance matrix
% echos_num estimated number of sources ==L=iwave
%
% Output
% estimate estimated angles in degrees
% estimated powers
%*******************************************************
source_number=length(theta0);%信元数
sub_sensor_number=element_num-1;%子阵元数
theta0_sort = sort(theta0);
snapshot_number=1024;
d_lamda = 0.5;
A=exp(j*d_lamda*2*pi*(0:element_num-1).'*sin(theta0/180*pi));
%估计信源个数
snr=10;
s=sqrt(10.^(snr/10))*randn(source_number,snapshot_number);%仿真信号
x=A*s+(1/sqrt(2))*(randn(element_num,snapshot_number)+1j*randn(element_num,snapshot_number));
Rxx = x*x'/snapshot_number;
[~,value]=eig(Rxx);
value = diag(value);
[value_sort,~] = sort(value,'descend');
for i = 1:(size(value)-2)
gama(i) = value_sort(i)/value_sort(i+1);
end
[~,esti_source_num] = max(gama);
disp(['信噪比为10dB下估计信源数目:' num2str(esti_source_num)]);
snr0=-10:1:10;
rmse = zeros(1,20);
store_doa = zeros(20,source_number);
for isnr=1:20
s=sqrt(10.^(snr0(isnr)/10))*randn(source_number,snapshot_number);%仿真信号
x=A*s+(1/sqrt(2))*(randn(element_num,snapshot_number)+1j*randn(element_num,snapshot_number));
x1=x(1:sub_sensor_number,:);
x2 = x(2:sub_sensor_number+1,:);
%对两个子阵的模型进行合并
X=[x1;x2];
R=X*X'/snapshot_number;
%对R进行奇异值分解
[U,S,V]=svd(R);
R=R-S(2*sub_sensor_number,2*sub_sensor_number)*eye(2*sub_sensor_number);
[U,S,V]=svd(R);
Us=U(:,1:source_number);
Us1=Us(1:sub_sensor_number,:);
Us2=Us((sub_sensor_number+1):2*sub_sensor_number,:);
%形成矩阵Us12
Us12=[Us1,Us2];
%对“Us12'*Us12”进行特征分解,得到矩阵E
[F,Sa,Va]=svd(Us12'*Us12);
%将E分解为四个小矩阵
%F11=F(1:source_number,1:source_number);
F12=F(1:source_number,(1+source_number):(2*source_number));
%F21=F((1+source_number):(2*source_number),1:source_number);
F22=F((1+source_number):(2*source_number),(1+source_number):(2*source_number));
%按照公式得到旋转不变矩阵M
E=-(F12*(inv(F22)));
%对得到的旋转不变矩阵进行特征分解
[V,d_lamda]=eig(E);
d_lamda=(diag(d_lamda)).';
doa=asin(angle(d_lamda)/pi)*180/pi;
doa=sort(doa);
rmse(isnr) = sqrt( sum(((theta0_sort-doa).^2))/source_number );
i = 1:source_number;
store_doa(isnr,i) = doa(i);
end
figure('Color','white');
plot(snr0(1:20),store_doa(1:20,1:source_number).','o-');
grid on;
xlabel('SNR/dB');
ylabel('DOA 估计/度');
title('ESPRIT 算法在不同信噪比下的DOA估计');
end
⛄ 运行结果
⛄ 参考文献
[1]杨旭光. 高频地波雷达电离层回波机理及应用研究[D]. 哈尔滨工业大学.
[2]刘强, 尚尚, 石依山,等. 高频地波雷达电离层杂波抑制方法综述[J]. 航天电子对抗, 2022, 38(6):6.
⛳️ 完整代码
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料