⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yundong.m

📁 SAR(合成统计雷达)点目标成像matlab代码
💻 M
字号:
clear; 
      close all;
      clc;
      f0=10e9; %载频10GHZ
      ft=1.6e6;
      T=5.12e-3;
      t=(0:1/ft:(T-1/ft))-T/2;
      M=8192;
      B=1.57e9/4;%带宽
      c=3e8;
      R0=1e3; %目标中心点距离
      k=B/T; %调频率k,调频带宽1.57GHZ;
      Qa=B/f0;
      K=menu('选择:','默认演示','自定义演示');
      if K==2 
      disp('输入每一点位置,第一列为距离向y,第二列为方位向x:');
      R=input('R=');
      else
          R=[0,0;5,-5;-5,5];
      end
      Q=0;
%回波信号形式
      N=64;
      tu=0;      
     w0=0.14*pi/180/T/4;   %目标转动角速度
	 g=0;
	 %g=rand(1,1)/100;
	 v0=60;          %目标径向速度
     a0=0;
     s=zeros(128,64);
for  u=1:64
	  Q=Q+w0*T;
	  %a0=a0+0.05;;
	  %a0=(rand(1,1)-0.5);   %目标径向加速
	  R0=R0+rand(1,1)-0.5;%+1/2*a0*(T.^2);
	 
      % R0>>xO,y0;  近似远场成像;Rt近似如下;
     Rt=R0+R*[cos(Q),-sin(Q)]';
     st=sum(exp(j*4*pi/c*Rt*(B*t/T+f0)));
      %每一固定转角的信号采样1024点
	
      %hanning 
      hn=hamming(M);
      st1=st.*hn';  %加窗,压低旁瓣;
     % figure(1);
      %plot(st1);
      %s1=fft(st1);
      %figure(2);
      %f=0:ft/M:(M-1)*ft/M;
      %plot(f,abs(s1));
      
      %加零拓展to 2048 points;
      st2=zeros(1,8192);
      st=[st,st2];
                  %st2 加零拓展后的信号序列;
      L=2*M;
      l=0:L-1;
      s2=fft(st,L);  %每一列进行傅立叶变换------实现距离向高分辨
      %figure(1);
      %plot(l,s2);
      
      %identify the frequency index corresponding to the center of the
      %object range field;
      s3=zeros(1,128);
      for i=1:128
          s3(i)=s2(i+5168);
      end   %取128点,对应距离范围6m;
     
      %64个不同角度所对应的数据阵     
      s(:,u)=s3';    
end
l=0;
l=l+1;
julidb(s,l);

 I=mat2gray(abs(s));
 l=l+1;
 figure(l);
imshow(I);  
 %contour(I);
 title('未加补偿的距离像')
 xlabel('距离向分辨单元 ');
  ylabel('方位向分辨单元');;
 %未补偿的距离象
 
 
 
 

%积累互相关运动补偿--------------------包络补偿--------------------------------------------
for  r=2:64
	
	ss=zeros(128,1);
	for k=max(1,r-6):(r-1)
		ss=ss+s(:,k);
	end
	ss=ss/(r-max(1,r-6));
	
	b=zeros(128,128);
    v=zeros(1,128);
	b(:,1)=s(:,r);
	v(1)=sum(abs((ss).*s(:,r)));
	for i=2:128
    
	
      c1=s(128,r);
      for j=128:-1:2
		s(j,r)=s(j-1,r);
	  end
      s(1,r)=c1;

    b(:,i)=s(:,r);
    v(i)=sum(abs((ss).*s(:,r)));
    end
	
    x1=find(v==max(v));
    a=x1+1;
	b1=x1-1;
	if a>128
		a=a-128;
	end
	 if b1<1
		 b1=b1+128;
	 end
	 %disp('a,b');
	 %disp(a);
	 %disp(b);
	x=x1+round((abs(v(a))-abs(v(b1)))/2/(2*abs(v(x1))-abs(v(a))-abs(v(b1))));

	if x<=0
		x=128+x;
	end
	if x>128
		x=x-128;
	end
	%disp('x');
	%disp(x);
	s(:,r)=b(:,x);
end

l=l+1;
julidb(s,l);


 I=mat2gray(abs(s));
 l=l+1;
 figure(l);
 contour(I);
 %imshow(I);   
 title('包络补偿后的距离像');
 %----------------------------------------------------------------------------------
 
 %积累互相关运动补偿--------------------相位补偿--------------------------------------------
 for  r=2:64
	 
	 ss=zeros(128,1);
	for k=max(1,r-4):(r-1)
		ss=ss+s(:,k);
	end
	ss=ss/(r-max(1,r-4));
	 
	v=sum(conj(ss).*s(:,r))/sum(abs(conj(ss).*s(:,r)));
	v=v/abs(v);
	s(:,r)=s(:,r)*conj(v);
end
	
	
	l=l+1;
julidb(s,l);

 I=mat2gray(abs(s));
 l=l+1;
 figure(l);
 contour(I);
 %imshow(I);  			
 title('相位补偿后的距离像');
 xlabel('距离向分辨单元 ');
  ylabel('方位向分辨单元');
%---------------------------------------------------------
%-相位补偿后成的像------------------------------------------------------
%每一行加窗以压低方位向旁瓣
      for v=1:128
          s(v,:)=s(v,:).*hamming(64)';
      end
      %拓展到128列
  s0=zeros(128,128);
  s00=zeros(128,32); 
  s0=[s00,s,s00]; 
  
  %对每一行进行128点傅立叶变换,实现方位向高分辨
  Sw=zeros(128,128);
  for d=1:128
      Sw(d,:)=fftshift(fft(s0(d,:),128));
  end
  %点目标所成的二维像
  z=0.1911*(-66):0.1911:0.1911*61;
  f=0.1911*(-63):0.1911:0.1911*64;
 
  l=l+1;
  figure(l);
  %surf(f,z,abs(Sw));
  contour(f,z,abs(Sw));
  xlabel('方位向(m)');
  ylabel('距离向(m)');
 % axis([-8 8 -8 8 0 3.5e4]);
 %view([0,90]);
 %axis([0.1911*(-63),0.1911*64,0.1911*(-66),0.1911*61]);
 Sw=Sw';
 I=mat2gray(abs(Sw));
 l=l+1;
 figure(l);
imshow(I);
 title('相位补偿后的二维像');
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -