• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: 其他
  • 标签: Compressive  Sens  

资源简介

本程序主要讲解了基于压缩感知理论的DOA估计,程序主要从信号的稀疏,测量矩阵的设计以及重构矩阵来恢复时域信号,该方法通过谱峰搜索进行DOA估计,方法准确,分辨率高,希望能帮助大家。

资源截图

代码片段和文件信息

clc;clear;
%%%%%%%%%%%%%%用Compressive Sensing方法利用估计MIMO雷达的DOA
M=40;                                    %发射阵元个数
N=5;                                     %接收阵元个数
L=256;                                   %快拍数目
K=3;                                     %稀疏度
SNR=0;                                  %信噪比
%f=8.62e12;                               %载波频率
%c=3e8;                                   %传播速度
%lamda=c/f;                               %波长
dt=0.5;                            %发射阵元间距取半个波长
dr=0.5;                            %接收阵元间距取半个波长
%%%%%有3个目标方位2°3°4°
theat0=[-5 1 7];                          %目标与阵列的夹角
%d=[1e9 2e8 3e10];                        %目标距离坐标原点即第一个发射天线的距离
beata=[5 3 2 4];                           %目标的反射系数
Q=length(theat0);
s0=hadamard(L);                          %产生一组正交信号
for m=1:M
    s(:m)=s0(:m);                      %M个发射信号源
end
n=sqrt(10^(-SNR/10)/2);
for q=1:Q
    a(:q)=exp(-j*2*pi*dt*sin(theat0(q)*pi/180)*[0:M-1]‘);%发射阵列引导矢量
    b(:q)=exp(-j*2*pi*dr*sin(theat0(q)*pi/180)*[0:N-1]‘);%接收阵列引导矢量
end

noise=n*randn(NL)+j*n*randn(NL);        %N个接收通道L次快拍的噪声
r=zeros(NL);
for q=1:Q
    r=r+beata(q)*b(:q)*a(:q).‘*s.‘;
end
r=r+noise;                                %接收的信号
rr=reshape(r.‘N*L1);
%%%%%CS定理
theat=-10:0.1:10;
P=length(theat);           %将角度空间稀疏化
for p=1:P
    aa(:p)=exp(-j*2*pi*dt*sin(theat(p)*pi/180)*[0:M-1]‘);      %发射阵列引导矢量
    bb(:p)=exp(-j*2*pi*dr*sin(theat(p)*pi/180)*[0:N-1]‘);      %接收阵列引导矢量
    psi(:p)=reshape((bb(:p)*aa(:p).‘*s.‘).‘N*L1);          %稀疏域的基矩阵                   
end

KK=60;
%for n=1:N
phi1=randn(KKN*L)+j*randn(KKN*L);                             %测量矩阵(高斯分布白噪声)
phi2=randn(KKN*L)+j*randn(KKN*L);
phi=(phi1+phi2)/2;
T=phi*psi;                                                      %恢复矩阵(测量矩阵*基矩阵)
y=phi*rr;                                                       %获得线性测量
%end

hat_y=zeros(1P);                          %待重构的谱域(变换域)向量                     
Aug_t=[];                                  %增量矩阵(初始值为空矩阵)
r_n=y;                                     %残差值


for times=1:K;                             %迭代次数(有噪声的情况下该迭代次数为K)
    for col=1:P;                           %恢复矩阵的所有列向量
        product(:col)=abs(T(:col)‘*r_n);   %恢复矩阵的列向量和残差的投影系数(内积值) 
    end
    [valpos]=max(product);                %最大投影系数对应的位置
    Aug_t=[Aug_tT(:pos)];                %矩阵扩充
    T(:pos)=zeros(KK1);                   %选中的列置零(实质上应该去掉,为了简单我把它置零)
    aug_y=(Aug_t‘*Aug_t)^(-1)*Aug_t‘*y;    %最小二乘使残差最小
    r_n=y-Aug_t*aug_y;                     %残差
    pos_array(times)=pos;                  %纪录最大投影系数的位置
end
hat_y(pos_array)=aug_y;                    %重构的谱域向量
hat_x=psi*hat_y.‘;                         %重构得到时域信号
orignal=zeros(P1);
for q=1:Q
    orignal(theat0(q)*10+101)=beata(q);
%     orignal(theat0(q)+1)=beata(q);
end
p=(-P+1)/2:(P-1)/2;
plot((p)/10abs(hat_y)‘b-‘);
% plot(p-1abs(hat_y)‘b-‘p-1orignal‘r:‘);
title(‘压缩感知估计波达角‘);
legend(‘估

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3604  2020-04-09 09:28  4_11_基于压缩感知理论的DOA估计\doa_cs_zhangjihong.m
     目录           0  2020-03-21 16:01  4_11_基于压缩感知理论的DOA估计\

评论

共有 条评论