亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sarcpp.cpp

?? sar目標成像源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// SAR.cpp: implementation of the CSAR class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SAR.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSAR::CSAR()
{
    TargetSimuType = POINT_TARGET;/*初始按執行點目標模擬,選中面目標模擬選項執行面目標模擬*/
    LpAizm_Time = NULL;
	LpRange_Time = NULL;
	LpTranSignalRe = NULL;
	LpTranSignalIm = NULL;

	LpRangeMatchFilter = NULL;
	LpRecSignalRe = NULL;
	LpRecSignalIm = NULL;

	LpAizm_Frequency = NULL;
	LpRange_Frequency = NULL;
	LpVTao = NULL;
	LpVTaoRef = NULL;
	LpBeta = NULL;
	LpKm = NULL; 
	LpKsrcInv = NULL;

	SARParaInit();
}

CSAR::~CSAR()
{
	if(LpAizm_Time != NULL) 
	{
		delete LpAizm_Time;
        LpAizm_Time = NULL;
	}
	if(LpRange_Time != NULL) 
	{
		delete LpRange_Time;
        LpRange_Time = NULL;
	}
	if(LpTranSignalRe != NULL) 
	{
		delete LpTranSignalRe;
        LpTranSignalRe = NULL;
	}

	if(LpTranSignalIm != NULL) 
	{
		delete LpTranSignalIm;
        LpTranSignalIm = NULL;
	}
	if (LpRangeMatchFilter != NULL)
	{
		delete LpRangeMatchFilter;
        LpRangeMatchFilter = NULL;
	}

    if (LpRecSignalRe != NULL)
	{
		delete LpRecSignalRe;
        LpRecSignalRe = NULL;
	}
    if (LpRecSignalIm != NULL)
	{
		delete LpRecSignalIm;
        LpRecSignalIm = NULL;
	}
	//釋放CS算法指針變量
	if (LpAizm_Frequency != NULL)
	{
		delete 	LpAizm_Frequency;
       	LpAizm_Frequency = NULL;
	}
   	if (LpRange_Frequency != NULL)
	{
		delete 	LpRange_Frequency;
       	LpRange_Frequency = NULL;
	}
    if (LpVTao != NULL)
	{
		delete 	LpVTao;
       	LpVTao = NULL;
	}
    if (LpVTaoRef != NULL)
	{
		delete 	LpVTaoRef;
       	LpVTaoRef = NULL;
	}
    if (LpBeta != NULL)
	{
		delete 	LpBeta;
       	LpBeta = NULL;
	}
    if (LpKm != NULL)
	{
		delete 	LpKm;
       	LpKm = NULL;
	}
	if(LpKsrcInv !=NULL)
	{
       	delete 	LpKsrcInv;
       	LpKsrcInv = NULL;
	}
	
}

void CSAR::SARParaInit()
{
    A_in = 3;   
//	A_in = 0;  
//	R_in = 5;   
	R_in = 3;
//	RCM_in =5; 
	RCM_in = 3; 
	R_Res = 5;
    A_Res = 2.5;
	Wavelenth = 0.24;
    V_ami = 180;
	Pulsewidth = 0.00001;
    Rt = 15000+500;
	B_r = C/(2*R_Res);
	B_d = V_ami/A_Res;
	PRF = B_d*1.1;
	FS =  B_r*1.1;
    Rbin = C/(2*FS);
	KR = -B_r/Pulsewidth;
    FR = -2.0*V_ami*V_ami/(Rt*Wavelenth);
    Tsyn = fabs(B_d/FR);
    NTao = int(floor(Pulsewidth*FS));
    Nrcm = int(floor((sqrt(Rt*Rt + V_ami*V_ami*Tsyn*Tsyn/4.0) - Rt)/Rbin ));
    Nr = NTao + Nrcm + 100;
    Na =int( floor(Tsyn*PRF));
	if (LpAizm_Time != NULL)
	{
      delete  LpAizm_Time;
	  LpAizm_Time = NULL;
	}
    
    if (LpRange_Time != NULL)
	{
      delete  LpRange_Time;
	  LpRange_Time = NULL;
	}

    if (LpTranSignalRe != NULL)
	{
      delete  LpTranSignalRe;
	  LpTranSignalRe = NULL;
	}
	
    if (LpTranSignalIm != NULL)
	{
      delete  LpTranSignalIm;
	  LpTranSignalIm = NULL;
	}
	
	 if (LpRangeMatchFilter != NULL)
	{
      delete LpRangeMatchFilter;
	  LpRangeMatchFilter = NULL;
	}
	
    if (LpRecSignalRe != NULL)
	{
      delete LpRecSignalRe;
	  LpRecSignalRe = NULL;
	}

	 if (LpRecSignalIm != NULL)
	{
      delete LpRecSignalIm;
	  LpRecSignalIm = NULL;
	}
 	
	/*對采樣頻率FS及脈沖重復頻率PRF優化,并使距離向和方位向的采樣點數為2的指數次方*/
   int nr=1,na=1;
   while (pow(2,nr) < Nr) nr++;
   while (pow(2,na) < Na) na++;
   double rate = 1.1;
   while (pow(2,nr) > Nr + nr/2)
   { 
       rate += 0.01;  //0.01為調整優化的步長
       FS = B_r*rate;
       Rbin = C/(2*FS);
       NTao = int(floor(Pulsewidth*FS));
	   Nrcm = int(floor((sqrt(Rt*Rt + V_ami*V_ami*Tsyn*Tsyn/4.0) - Rt)/Rbin ));
       Nr = NTao + Nrcm + 100;
   }
   R0 = Rt - Rbin*floor(NTao/2) - 50*Rbin;
   rate = 1.1;
   while (pow(2,na) > Na +na/2)
   {
      
	  rate += 0.01;  //0.01為調整優化的步長
      PRF = B_d*rate;
	  Na = int(floor(Tsyn*PRF));

   }
   NaEffective = Na;//方位向采樣有效點數
   NrEffective = Nr;//距離向采樣有效點數
   Nr = int( pow(2,nr));  //這里的Nr大于距離向的有效點數
   Na = int( pow(2,na));  //這里的Na大于綜合孔徑時間對應的方位向點數

   //CS參數初始化
    Ref = Rt;

	 if (LpAizm_Frequency != NULL)
	{
      delete LpAizm_Frequency;
	  LpAizm_Frequency = NULL;
	}
	
	if (LpRange_Frequency != NULL)
	{
      delete LpRange_Frequency;
	  LpRange_Frequency = NULL;
	}
    
	if (LpVTao != NULL)
	{
      delete LpVTao;
	  LpVTao = NULL;
	}
	 
	if (LpVTaoRef != NULL)
	{
      delete LpVTaoRef;
	  LpVTaoRef = NULL;
	}
	
	if (LpBeta != NULL)
	{
      delete LpBeta;
	  LpBeta = NULL;
	}
	
	if (LpKm  != NULL)
	{
      delete LpKm ;
	  LpKm  = NULL;
	}
	
	if (LpKsrcInv != NULL)
	{
      delete LpKsrcInv;
	  LpKsrcInv = NULL;
	}
    
}

BOOL CSAR::LMFSignalProduce()
{
	if ((LpTranSignalIm == NULL)&& (LpTranSignalRe == NULL)&&(LpRange_Time == NULL))
	{
		LpRange_Time = new double [Nr];
        LpTranSignalRe = new double [Nr];
		LpTranSignalIm = new double [Nr];
    }
	if ( (LpTranSignalRe == NULL)||(LpTranSignalIm ==NULL)||(LpRange_Time == NULL))
	{
		AfxMessageBox("allocate memeory fail");
		return FALSE;
	}
       memset( LpTranSignalRe,0,sizeof(double)*Nr);//信號緩沖區置0
	   memset( LpTranSignalIm,0,sizeof(double)*Nr);//信號緩沖區置0
    for (int i = 0;i< Nr;i++)
	{
       LpRange_Time[i] = i/FS +2.0*R0/C;  //發射信號時間

	}
	for (int j=0;j < NTao; j++)
	{
	double PolyNomal = LpRange_Time[j] - 2.0*R0/C - Pulsewidth/2.0;
    LpTranSignalRe[j]   = cos(PI*KR*PolyNomal*PolyNomal); //產生發射信號實部
	LpTranSignalIm[j]  = sin(PI*KR*PolyNomal*PolyNomal);  //產生發射信號虛部
	}
	return TRUE;
}

BOOL CSAR::RecEchoSignal()
{
 if ((LpTranSignalIm == NULL)||(LpTranSignalRe == NULL)||(LpRange_Time == NULL)) return FALSE;
 if((LpAizm_Time ==NULL)&&(LpRecSignalRe == NULL)&&(LpRecSignalIm == NULL)) 
  {
	  LpAizm_Time = new double[Na];
      LpRecSignalRe = new double[Na*Nr];
      LpRecSignalIm = new double[Na*Nr];
  }
  if((LpAizm_Time ==NULL)||(LpRecSignalRe == NULL)||(LpRecSignalIm == NULL)) 
   {
	  AfxMessageBox("接收回波內存分配失敗");
	  return FALSE;
  }
  memset(LpAizm_Time,0,sizeof(double)*Na);
  memset(LpRecSignalRe,0,sizeof(double)*Na*Nr);
  memset(LpRecSignalIm,0,sizeof(double)*Na*Nr);
  int na,nr,Nr_Start;
  complex<double> Echophaset,SignalPhase;//回波產生的相位,線性調頻信號的相位
  int w,h;//面目標圖像的尺寸
 
  BYTE *lpAreaImage = NULL;//面目標圖像DIB數據
  if(TargetSimuType == AREA_TARGET )
  GetAreaInformation(&lpAreaTargetImageFileName,&w,&h,&lpAreaImage);

  for( na=0;na<NaEffective;na++)
  {
	double Rat[5],RatArea,x,angle;
    if( na/PRF < Tsyn) *(LpAizm_Time + na) = -Tsyn/2.0 + na/PRF;
	x=(*(LpAizm_Time + na))*V_ami;
    
	if(TargetSimuType == POINT_TARGET)//按點目標進行模擬
	{
	    Rat[0] = sqrt(x*x + Rt*Rt);
        Rat[1] = sqrt((x-20)*(x-20) + Rt*Rt);
        Rat[2] = sqrt((x+20)*(x+20) + Rt*Rt);
	    Rat[3] = sqrt((x+40)*(x+40) + Rt*Rt);
	    Rat[4] = sqrt(x*x + (Rt-50)*(Rt-50));
	  for(int pointnum =0; pointnum<5;pointnum++)
	  {
	   angle = -4.0*PI*Rat[pointnum]/Wavelenth;
       Echophaset = complex<double> (cos(angle), sin(angle));
       Nr_Start = floor((Rat[0] - R0)/Rbin - floor(NTao/2));
	   for (nr = Nr_Start;nr < Nr_Start + NTao; nr++)
	   {  
		double polynomial = *(LpRange_Time + nr) - 2.0*Rat[pointnum]/C;
		angle = PI*KR*polynomial*polynomial;
        SignalPhase = complex<double>(cos(angle), sin(angle));
        SignalPhase = SignalPhase * Echophaset;
        *(LpRecSignalRe+na*Nr + nr) += SignalPhase.real();
		*(LpRecSignalIm+na*Nr + nr) += SignalPhase.imag();
	   }
	  }
	}//點目標模擬回波數據接收結束
	else  //按打開的面目標進行模擬
	{
     double AreaRCS;
	 for (int hpointnum =0;hpointnum<h;hpointnum++)
		 for ( int wpointnum =0; wpointnum<w; wpointnum++)
		 {	 
			 AreaRCS =*(lpAreaImage+hpointnum*w+wpointnum);
			 if ( AreaRCS >0)
			 {
			   RatArea = sqrt((x+(hpointnum-h/2)*V_ami/PRF)*(x+(hpointnum-h/2)*V_ami/PRF) + (Rt+(wpointnum-w/2)*Rbin)*(Rt+(wpointnum-w/2)*Rbin));
               angle = -4.0*PI*RatArea/Wavelenth;
			   Echophaset = complex<double> (cos(angle), sin(angle));
               Nr_Start = floor((RatArea - R0)/Rbin - floor(NTao/2));
	           for (nr = Nr_Start;nr < Nr_Start + NTao; nr++)
			   {  
		        double polynomial = *(LpRange_Time + nr) - 2.0*RatArea/C;
		        angle = PI*KR*polynomial*polynomial;
                SignalPhase = complex<double>(cos(angle), sin(angle));
                SignalPhase = SignalPhase * Echophaset;
			    *(LpRecSignalRe+na*Nr + nr) += AreaRCS*SignalPhase.real()/255;
		        *(LpRecSignalIm+na*Nr + nr) += AreaRCS*SignalPhase.imag()/255;
			   }
			 }

		 }//end for for
		
	}//end else 面目標模擬回波數據接收結束 
	  
  }
  if (lpAreaImage != NULL)
	 {
	  delete lpAreaImage;
      lpAreaImage = NULL;
	 }
  return TRUE;
}

void CSAR::EchoRangeCompress()
{
  if((LpAizm_Time == NULL)||(LpRecSignalRe == NULL)||(LpRecSignalIm == NULL)) return;
   int w=1;
   int wp=0;
   int win = 1;
   int winp = 0;
   while(w * 2 <= Nr)
	{
		w *= 2;
		wp++;
	}
   while(win * 2 <= (R_in+1)*Nr)
	{
		win *= 2;
		winp++;
	}
   complex<double> *TD = new complex<double>[w];
   complex<double> *FD = new complex<double>[w];
   complex<double> *LpTemFilter =new complex<double>[win];//用來存放插值后的距離向匹配濾波器
   complex<double> *LpTemFD =new complex<double>[win];//用來存放插值后的距離向頻域信號
   complex<double> *LpTemTD =new complex<double>[win];//用來存放插值后距離壓縮距離向時域信號
   complex<double> *Temp =new complex<double>[win];
   //下面代碼完成匹配濾波器中間插0
   for(int i = 0;i<Nr/2;i++)
   {
       LpTemFilter[i] = LpRangeMatchFilter[i];
       LpTemFilter[R_in*Nr + Nr/2 + i] = LpRangeMatchFilter[Nr/2+i];
   }
   for (int j = Nr/2;j < R_in*Nr + Nr/2;j++)  LpTemFilter[j] = complex<double>(0,0);//在濾波器中間插入R_in*Nr個0 


   for(int na = 0;na < Na;na ++)
   {
     for(int nr = 0;nr < Nr;nr++) 
		 TD[nr] = complex<double>(*(LpRecSignalRe + na*Nr + nr),*(LpRecSignalIm + na*Nr + nr));
         FFT(TD, FD,wp);
    //下面代碼完成距離向信號頻域中間插0;
	  for(int ii = 0;ii<Nr/2;ii++)
	  {
        LpTemFD[ii] = FD[ii];
        LpTemFD[R_in*Nr + Nr/2 + ii] = FD[Nr/2 + ii];
	  }
	   for (int jj = Nr/2;jj < R_in*Nr + Nr/2;jj++)  LpTemFD[jj] = complex<double>(0,0);//在距離向信號中間插入R_in*Nr個0 
       for (int kk = 0;kk <	win;kk++) LpTemFD[kk] = LpTemFilter[kk]* LpTemFD[kk];
	   IFFT(LpTemFD,LpTemTD,winp);
   	   for (int m= 0;m < (R_in+1)*(Nr-NTao/2);m++) Temp[m +(R_in+1)*NTao/2] = LpTemTD[m];
	   for (m =(R_in+1)*(Nr-NTao/2) ;m < (R_in+1)*Nr ;m++) Temp[m-(R_in+1)*(Nr-NTao/2)] = LpTemTD[m]; 
       for ( int n =0; n<Nr;n++) 
	   {
		   LpRecSignalRe[na*Nr+n]= Temp[R_in*(NTao/2+50)+n].real();
           LpRecSignalIm[na*Nr+n]= Temp[R_in*(NTao/2+50)+n].imag();
       }
   }
   delete TD;
   delete FD;
   delete LpTemFilter;
   delete LpTemFD;
   delete LpTemTD;
   delete Temp;
  
   /*由于進行距離向插值,要改變距離向的采樣率FS,以及單位像素對應的距離向距離Rbin,距離向的
	起始距離R0,距離向的時間序列*/
    FS = (R_in + 1)*FS;
    Rbin = C/FS/2;
	R0 = R0 = Rt - Rbin*floor(NTao/2) - 50*Rbin;
     for (i = 0;i< Nr;i++)
	{
       LpRange_Time[i] = i/FS +2.0*R0/C;  //發射信號時間

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品第一国产综合精品aⅴ| 伊人色综合久久天天| 成人免费一区二区三区在线观看 | 99久久99精品久久久久久| 欧美人狂配大交3d怪物一区| 国产日产欧美一区| 六月丁香综合在线视频| 91美女福利视频| 国产农村妇女精品| 久久99精品久久久久婷婷| 欧美日韩国产首页| 一区二区欧美视频| 不卡的电视剧免费网站有什么| 69堂亚洲精品首页| 亚洲午夜三级在线| 91国内精品野花午夜精品| 国产精品久久久久毛片软件| 精品系列免费在线观看| 91精品久久久久久蜜臀| 亚洲成人777| 欧洲日韩一区二区三区| 亚洲视频免费观看| 不卡视频一二三四| 国产精品的网站| 国产91对白在线观看九色| 国产亚洲一区二区在线观看| 国产精品综合一区二区| 久久综合资源网| 激情偷乱视频一区二区三区| 日韩一级黄色大片| 看电视剧不卡顿的网站| 91精品国产丝袜白色高跟鞋| 三级不卡在线观看| 欧美一区三区二区| 精品在线播放免费| 国产欧美一区二区精品婷婷| 国产成人在线电影| 国产精品嫩草99a| 972aa.com艺术欧美| 一区二区三区91| 欧美日韩一级大片网址| 日韩高清不卡一区二区三区| 欧美一区二区三区人| 紧缚捆绑精品一区二区| 亚洲国产精品ⅴa在线观看| 91小视频在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲制服欧美中文字幕中文字幕| 91网址在线看| 亚洲va欧美va天堂v国产综合| 欧美日本一区二区三区| 韩国女主播一区| 国产精品嫩草影院com| 欧美综合一区二区三区| 青青青伊人色综合久久| 国产喂奶挤奶一区二区三区| 91在线观看视频| 水蜜桃久久夜色精品一区的特点| 日韩欧美卡一卡二| 99麻豆久久久国产精品免费| 亚洲国产aⅴ天堂久久| 亚洲精品一线二线三线无人区| 国产99久久久国产精品潘金网站| 日韩毛片精品高清免费| 91精品国产欧美一区二区18| 国产精品18久久久久久久久久久久 | 亚洲综合在线电影| 欧美mv日韩mv亚洲| 91小视频在线免费看| 久久国产人妖系列| 亚洲精品大片www| 久久久久久久久伊人| aa级大片欧美| 卡一卡二国产精品 | 色婷婷久久久亚洲一区二区三区| 艳妇臀荡乳欲伦亚洲一区| 久久久久亚洲蜜桃| 欧美午夜不卡在线观看免费| 国产一区二区三区蝌蚪| 亚洲成人黄色影院| 国产精品午夜电影| 精品久久久久久久久久久久久久久| 91免费看视频| 黑人巨大精品欧美黑白配亚洲| 亚洲激情图片一区| 国产精品五月天| 日韩小视频在线观看专区| 91色九色蝌蚪| 国产精品亚洲一区二区三区在线| 三级精品在线观看| 亚洲成人在线网站| 最近日韩中文字幕| 国产欧美久久久精品影院| 555夜色666亚洲国产免| 在线观看不卡一区| 91亚洲精品久久久蜜桃| 成人黄页在线观看| 紧缚捆绑精品一区二区| 美女免费视频一区二区| 亚洲va欧美va人人爽| 亚洲一区二区三区四区五区黄| 中文字幕av免费专区久久| wwww国产精品欧美| 欧美精品一区二区三| 欧美久久免费观看| 欧美日韩aaa| 欧美日韩中字一区| 欧美优质美女网站| 在线精品视频小说1| 99国产精品久久| 91免费视频网| 色婷婷久久一区二区三区麻豆| 99在线精品观看| 91视频在线看| 91久久人澡人人添人人爽欧美 | 久久欧美一区二区| 久久综合久色欧美综合狠狠| 日韩美一区二区三区| 日韩欧美激情在线| 久久综合一区二区| 亚洲国产成人自拍| 日韩理论片在线| 尤物av一区二区| 亚洲va国产va欧美va观看| 日本午夜一区二区| 狠狠色丁香久久婷婷综合丁香| 国产精品资源网站| fc2成人免费人成在线观看播放| av电影天堂一区二区在线| 91在线视频观看| 欧美日韩日本视频| 日韩一区和二区| 国产清纯在线一区二区www| 国产精品青草综合久久久久99| 亚洲少妇中出一区| 日韩中文字幕麻豆| 国产精品一区二区你懂的| 成人毛片老司机大片| 色婷婷狠狠综合| 91精品国产一区二区三区| 国产亚洲1区2区3区| 中文字幕一区二区日韩精品绯色| 亚洲一区二区视频| 国产一区二区三区四| 91丝袜国产在线播放| 欧美久久久久久蜜桃| 久久久久国色av免费看影院| 综合欧美一区二区三区| 日韩中文字幕亚洲一区二区va在线 | 久久综合成人精品亚洲另类欧美| 久久综合999| 一区二区成人在线观看| 久久超碰97中文字幕| av午夜精品一区二区三区| 欧美日本一区二区在线观看| 国产日韩高清在线| 丝袜诱惑制服诱惑色一区在线观看| 激情国产一区二区| 欧美综合在线视频| 国产亚洲欧美激情| 亚洲r级在线视频| 成人三级在线视频| 日韩三级视频在线观看| 亚洲免费视频中文字幕| 国产乱码精品一品二品| 欧美日韩国产高清一区二区 | 亚洲精品在线一区二区| 一区二区三区在线观看国产| 久久99久久99小草精品免视看| 色诱视频网站一区| 国产精品久久久久一区二区三区| 水蜜桃久久夜色精品一区的特点| www.欧美日韩| 久久日韩粉嫩一区二区三区| 日本一区中文字幕| 欧美亚洲国产一区在线观看网站| 久久久久国产一区二区三区四区| 日韩电影免费在线观看网站| 在线精品视频小说1| 中文字幕中文字幕一区| 国产一区二区不卡| 欧美v日韩v国产v| 午夜电影一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 国产亚洲欧洲一区高清在线观看| 青青草97国产精品免费观看 | 国产精品成人网| 风间由美一区二区三区在线观看 | 91.麻豆视频| 亚洲国产日韩a在线播放性色| av亚洲精华国产精华精华| 久久综合视频网| 国产在线精品一区二区不卡了| 欧美日韩国产高清一区二区 | 丰满少妇久久久久久久| 久久久不卡网国产精品二区| 激情综合一区二区三区| 欧美电视剧免费观看| 免费成人在线播放| 精品日韩在线一区|