资源简介

matlab代码,数据源是VCChen的MIG25飞机的ISAR仿真数据,数据通过两维FFT只可以直接成像,本算法基于压缩感知,采用OMP,实现ISAR成像算法,在欠采样的条件下,也可以很好的成像

资源截图

代码片段和文件信息

clc;clear;
close all;
load  MIG25.MAT
X_fft_rng=fft(X);
X_fft_rng=fftshift(X_fft_rng1);
data=X_fft_rng(:385:512);

K=13;     %  稀疏度
N=128;    %  信号长度
M=64;    %  测量数(M>=K*log(N/K)但有出错的概率)

%% 2-D FFT经典成像方法
% 对完成相位补偿的信号进行方位维fft成像
comed_echo=data;%没有采样损失的原始数据
temp=fft(comed_echo[]2);%方位维FFT
img_cls=fftshift(temp2);%方位维翻折

% 将完整数据的成像结果绘制成图
figure(1);
imagesc(abs(img_cls))
% imshow(1-flipud(log10(20*(imm/max(max(imm))))));
axis on;
xlabel(‘方位向‘);
ylabel(‘距离向‘);
title(‘完整数据的2D成像结果‘)

% Phi = randn(MN);
% Psi = fft(eye(NN))/sqrt(N);
% T = Phi*Psi‘;
data=awgn(data10);
img_CS = zeros(64N);
Error = zeros(164);%64个方位维的重构误差
for iCol=1:64
    x=data(iCol:);
    x = x.‘;
    % 时域信号压缩传感
    Phi=randn(MN);                                   %  测量矩阵(高斯分布白噪声)
    y=Phi*x;                                          %  获得线性测量
    % 正交匹配追踪法重构信号(本质上是L_1范数最优化问题)
    m=K;                                              %  算法迭代次数(m>=K)
    Psi=fft(eye(NN))/sqrt(N);                        %  傅里叶正变换矩阵
    T=Phi*Psi‘;                                       %  恢复矩阵(测量矩阵*正交反变换矩阵)
    s_hat=zeros(N1);                                 %  待重构的谱域(变换域)向量
    Aug_t=[];                                         %  增量矩阵(初始值为空矩阵)
    res_n=y;                                          %  残差值
    for iter=1:m                                      %  迭代次数(有噪声的情况下该迭代次数为K)
        product=abs(T‘*res_n);                        %  恢复矩阵的列向量和残差的投影系数(内积值)
        [valpos]=max(product);                       %  最大投影系数对应的位置
        Aug_t=[Aug_tT(:pos)];                       %  矩阵扩充
        T(:pos)=zeros(M1);                          %  选中的列置零(实质上应该去掉,为了简单我把它置零)
        aug_y=(Aug_t‘*Aug_t)^(-1)*Aug_t‘*y;           %  最小二乘使残差最小
        res_n=y-Aug_t*aug_y;                          %  残差
        pos_array(iter)=pos;                          %  纪录最大投影系数的位置
    end
    s_hat(pos_array)=aug_y;                           %  重构的谱域向量
    img_CS(iCol:)=sqrt(N)*s_hat;
    Error(iCol) = norm(s_hat-img_cls(iCol:))/norm(img_cls(iCol:));
end
img_CS=fftshift(img_CS2);
figure(2);
imagesc(abs(img_CS))
title(‘50%稀疏成像结果‘);
axis on;
xlabel(‘方位向‘);
ylabel(‘距离向‘);

% 误差分析
norm(img_CS)/norm(img_cls)
figure(3)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      524310  2020-04-16 15:22  MIG25.MAT
     文件        2578  2020-04-17 16:43  MIG25CS_OMP1.m

评论

共有 条评论