%% 主函数,用于控制整个的流程
clear all; close all; clc;
load DataUse.mat DataUse;
%DataUse大小为256*64*8
%------------------------2D-FFT (不加窗了)-------------------------%
Data1DfftOut = fft(DataUse,[],1);
Data2DfftOut = fftshift(fft(Data1DfftOut,[],2),2);
%---------------------非相干积累------------------------------------%
RDmat_nocoherent = sum(abs(Data2DfftOut).^2,3);
%------------------相干积累 这里设计3个角度进行说明-------------------%
%设置角度和阵列
xita1 = 0; xita2 = -45; xita3 = 45;
array = (0:1:7); %均匀排布的八个阵元
d_array = 0.5;
%构造导向矢量
[rangelen, dopplerlen, channellen] = size(Data2DfftOut);
a1 = exp(-1i*2*pi*d_array*sind(xita1)*array);
a2 = exp(-1i*2*pi*d_array*sind(xita2)*array);
a3 = exp(-1i*2*pi*d_array*sind(xita3)*array);
A1 = zeros(rangelen,dopplerlen,channellen);
A2 = zeros(rangelen,dopplerlen,channellen);
A3 = zeros(rangelen,dopplerlen,channellen);
for ii = 1:channellen %不知道还有没有更好的办法实现这个操作?
A1(:,:,ii) = a1(ii);
A2(:,:,ii) = a2(ii);
A3(:,:,ii) = a3(ii);
end
%得到相干积累后的矩阵
RDmat_coherent1 = abs(sum(A1.*Data2DfftOut,3)).^2;
RDmat_coherent2 = abs(sum(A2.*Data2DfftOut,3)).^2;
RDmat_coherent3 = abs(sum(A3.*Data2DfftOut,3)).^2;
%-----------------看看结果 我们取单独一个通道的、非相干积累的、相干积累的进行对比------------------------%
figure(1);
subplot(221);imagesc(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(222);meshz(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(223);imagesc(RDmat_nocoherent);xlabel('dopplerIndex');ylabel('rangeIndex');title('非相干积累后的结果');
subplot(224);meshz(RDmat_nocoherent);xlabel('dopplerIndex');ylabel('rangeIndex');title('非相干积累后的结果');
figure(2);
subplot(221);imagesc(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(222);meshz(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(223);imagesc(RDmat_coherent1);xlabel('dopplerIndex');ylabel('rangeIndex');title('相干积累后的结果(角度为0°)');
subplot(224);meshz(RDmat_coherent1);xlabel('dopplerIndex');ylabel('rangeIndex');title('相干积累后的结果(角度为0°)');
figure(3)
subplot(221);imagesc(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(222);meshz(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(223);imagesc(RDmat_coherent2);xlabel('dopplerIndex');ylabel('rangeIndex');title('相干积累后的结果(角度为-45°)');
subplot(224);meshz(RDmat_coherent2);xlabel('dopplerIndex');ylabel('rangeIndex');title('相干积累后的结果(角度为-45°)');
figure(4)
subplot(221);imagesc(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(222);meshz(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(223);imagesc(RDmat_coherent3);xlabel('dopplerIndex');ylabel('rangeIndex');title('相干积累后的结果(角度为45°)');
subplot(224);meshz(RDmat_coherent3);xlabel('dopplerIndex');ylabel('rangeIndex');title('相干积累后的结果(角度为45°)');
%{
figure(5)
%看看之前的那种方法的结果(没有取平方而是直接加) 这种方法下没有SNR的提升的(甚至还下降了..)
RDmat_nocoherent2 = sum(abs(Data2DfftOut),3);
subplot(221);imagesc(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(222);mesh(abs(Data2DfftOut(:,:,1)));xlabel('dopplerIndex');ylabel('rangeIndex');title('取2D-FFT后其中一个通道的数据');
subplot(223);imagesc(RDmat_nocoherent2);xlabel('dopplerIndex');ylabel('rangeIndex');title('非相干积累后的结果法2');
subplot(224);mesh(RDmat_nocoherent2);xlabel('dopplerIndex');ylabel('rangeIndex');title('非相干积累后的结果法2');
%}
%% 测角看看目标的真实角度在哪里
%{
thetaScan = linspace(-90,90,360);
A = exp(1i*2*pi*sind(thetaScan).'*array);
Arraydata = squeeze(Data2DfftOut(55,33,:)); %我们从二维压缩后的距离多普勒矩阵上得到目标的距离和速度索引值,拿出来该索引值下的通道数据
P = A*Arraydata;
P = 20*log10(abs(P)./(max(abs(P))));
figure(8);
plot(thetaScan,P);xlabel('角度/°');ylabel('amplitude/dB');title('测角结果');
%}
%实验中目标角度大概在40°的位置?