📄 test.cpp
字号:
*/
kkfft(in_echo_r,in_echo_i,range_samples,
LOG2(range_samples),fft_in_echo_r,fft_in_echo_i,0);
for(i=0;i<range_samples/2;i++)
{
trans_r=fft_in_echo_r[i]/1024;
trans_i=fft_in_echo_i[i]/1024;
fft_in_echo_r[i]=fft_in_echo_r[i+range_samples/2]/1024;
fft_in_echo_i[i]=fft_in_echo_i[i+range_samples/2]/1024;
fft_in_echo_r[i+range_samples/2]=trans_r;
fft_in_echo_i[i+range_samples/2]=trans_i;
}
for(i=0;i<range_samples;i++)
{
test_data_r[ia][i]=(fft_in_echo_r[i]*range_filter_r[i]
-fft_in_echo_i[i]*range_filter_i[i]);
test_data_i[ia][i]=(fft_in_echo_r[i]*range_filter_i[i]
+fft_in_echo_i[i]*range_filter_r[i]);
}
}
fclose(fp);
// test_data[ia,*]=shift(fft(in_echo-total(in_echo)/range_samples,-1),
// -range_samples/2)*range_filter
for (ir=0;ir<range_samples/2-band_cut;ir++ )
{
for (ia =0;ia<=azimuth_samples-1;ia++)
{ look1_r[ia][range_samples/2-band_cut-1-ir]=
test_data_r[ia][ir+band_cut];
//sqrt(pow(test_data_r[ia][ir+band_cut],2)
//+pow(test_data_i[ia][ir+band_cut],2));
look1_i[ia][range_samples/2-band_cut-1-ir]=
test_data_i[ia][ir+band_cut];
//sqrt(pow(test_data_r[ia][ir+band_cut],2)
//+pow(test_data_i[ia][ir+band_cut],2));
look2_r[ia][ir]=
test_data_r[ia][range_samples/2+ir-1];
//sqrt(pow(test_data_r[ia][range_samples/2+ir-1],2)
//+pow(test_data_i[ia][range_samples/2+ir-1],2));
look2_i[ia][ir]=
test_data_i[ia][range_samples/2+ir-1];
//sqrt(pow(test_data_r[ia][range_samples/2+ir-1],2)
//+pow(test_data_i[ia][range_samples/2+ir-1],2));
}
}
//for ir=0,range_samples/2-band_cut-1LL do begin
//look1[*,range_samples/2-band_cut-1-ir]=test_data[*,ir+band_cut]/abs(test_data[*,ir+band_cut])
//look2[*,ir]=test_data[*,range_samples/2+ir-1]/abs(test_data[*,range_samples/2+ir-1])
for ( ia =0;ia<=azimuth_samples-1;ia++)
{
for(i=0;i<range_samples/2-band_cut;i++)
{
tlook1_r[i]=look1_r[ia][i]*280;
tlook1_i[i]=look1_i[ia][i]*280;
tlook2_r[i]=look2_r[ia][i]*280;
tlook2_i[i]=look2_i[ia][i]*280;
}
kkfft(tlook1_r,tlook1_i,range_samples/2-band_cut,
LOG2(range_samples/2-band_cut),fft_look1_r,fft_look1_i,1);
kkfft(tlook2_r,tlook2_i,range_samples/2-band_cut,
LOG2(range_samples/2-band_cut),fft_look2_r,fft_look2_i,1);
/*
for(i=0;i<range_samples/2-band_cut;i++)
{
fft_look1_r[i]=fft_look1_r[i]*cos(-band_look/4.0*tao[i])-
fft_look1_i[i]*sin(-band_look/4.0*tao[i]);
fft_look1_i[i]=fft_look1_r[i]*sin(-band_look/4.0*tao[i])+
fft_look1_i[i]*cos(-band_look/4.0*tao[i]);
fft_look2_r[i]=fft_look2_r[i]*cos(band_look/4.0*tao[i])-
fft_look2_i[i]*sin(-band_look/4.0*tao[i]);
fft_look2_i[i]=fft_look2_r[i]*sin(band_look/4.0*tao[i])+
fft_look2_i[i]*cos(-band_look/4.0*tao[i]);
}
kkfft(fft_look1_r,fft_look1_i,range_samples/2-band_cut,
LOG2(range_samples/2-band_cut),tlook1_r,tlook1_i,0);
kkfft(fft_look2_r,fft_look2_i,range_samples/2-band_cut,
LOG2(range_samples/2-band_cut),tlook2_r,tlook2_i,0);
for(i=0;i<(range_samples/2-band_cut)/2;i++)
{
trans_r=tlook1_r[i];
trans_i=tlook1_i[i];
tlook1_r[i]=tlook1_r[i+(range_samples/2-band_cut)/2];
tlook1_i[i]=tlook1_i[i+(range_samples/2-band_cut)/2];
tlook1_r[i+(range_samples/2-band_cut)/2]=trans_r;
tlook1_i[i+(range_samples/2-band_cut)/2]=trans_i;
trans_r=tlook2_r[i];
trans_i=tlook2_i[i];
tlook2_r[i]=tlook2_r[i+(range_samples/2-band_cut)/2];
tlook2_i[i]=tlook2_i[i+(range_samples/2-band_cut)/2];
tlook2_r[i+(range_samples/2-band_cut)/2]=trans_r;
tlook2_i[i+(range_samples/2-band_cut)/2]=trans_i;
}
*/
for(i=0;i<(range_samples/2-band_cut);i++)
{
look1_r[ia][i]=fft_look1_r[i];
look1_i[ia][i]=fft_look1_i[i];
look2_r[ia][i]=fft_look2_r[i];
look2_i[ia][i]=fft_look2_i[i];
}
}
//for ia=0,azimuth_samples-1LL do begin
//look1[ia,*]=
//shift(fft(fft(look1[ia,*],1)*exp(dcomplex(0,-band_look/4.*tao)),-1),-(range_samples/2-band_cut)/2)
//look2[ia,*]=
//shift(fft(fft(look2[ia,*],1)*exp(dcomplex(0,band_look/4.*tao)),-1),-(range_samples/2-band_cut)/2)
for ( ia =0;ia<azimuth_samples;ia++)
{
for(i=0;i<range_samples/2-band_cut;i++)
{
mlbf_r[ia][i]=look1_r[ia][i]*look2_r[ia][i]+look1_i[ia][i]*look2_i[ia][i];
mlbf_i[ia][i]=-look1_r[ia][i]*look2_i[ia][i]+look1_i[ia][i]*look2_r[ia][i];
}
}
//mlbf=look1*conj(look2)
for ( ir=0;ir<range_samples/2-band_cut;ir++)
{
for ( ia =0;ia<azimuth_samples;ia++)
{
tmlbf_r[ia]=mlbf_r[ia][ir]/azimuth_samples;
tmlbf_i[ia]=mlbf_i[ia][ir]/azimuth_samples;
}
kkfft(tmlbf_r,tmlbf_i,azimuth_samples,LOG2(azimuth_samples),
fft_mlbf_r,fft_mlbf_i,0);
for(i=0;i<azimuth_samples/2;i++)
{
trans_r=fft_mlbf_r[i];
trans_i=fft_mlbf_i[i];
fft_mlbf_r[i]=fft_mlbf_r[i+azimuth_samples/2];
fft_mlbf_i[i]=fft_mlbf_i[i+azimuth_samples/2];
fft_mlbf_r[i+azimuth_samples/2]=trans_r;
fft_mlbf_i[i+azimuth_samples/2]=trans_i;
}
for ( ia =0;ia<azimuth_samples;ia++)
{
mlbf_r[ia][ir]=fft_mlbf_r[ia];
mlbf_i[ia][ir]=fft_mlbf_i[ia];
if(max_mlbf<sqrt(pow(mlbf_r[ia][ir],2)+pow(mlbf_i[ia][ir],2)))
{
max_mlbf=sqrt(pow(mlbf_r[ia][ir],2)+pow(mlbf_i[ia][ir],2));
iw=ia;
}
}
aver_center=aver_center+iw;
iw=0;
max_mlbf=0;
}
//for ir=0,range_samples/2-band_cut-1LL do begin
//mlbf[*,ir]=shift(fft(mlbf[*,ir],-1),-azimuth_samples/2)
//aver_center=aver_center+where(abs(mlbf[*,ir]) EQ max(abs(mlbf[*,ir])))
aver_center=aver_center/(range_samples/2-band_cut);
f_beat=PRF/azimuth_samples*(aver_center-azimuth_samples/2);
doppler_ambiguity=-f_beat*(c/lamd)/(band_look/2.0);
printf("aver_center=%f\n f_beat=%f\n doppler_ambiguity=%f\n",
aver_center,f_beat,doppler_ambiguity);
free(in_echo_r);
free(in_echo_i);
free(fft_in_echo_r);
free(fft_in_echo_i);
free(tlook1_r);
free(tlook1_i);
free(tlook2_r);
free(tlook2_i);
free(fft_look1_r);
free(fft_look1_i);
free(fft_look2_r);
free(fft_look2_i);
free(mlbf_r);
free(mlbf_i);
free(tmlbf_r);
free(tmlbf_i);
free(fft_mlbf_r);
free(fft_mlbf_i);
free(test_data_r);
free(test_data_i);
free(look1_r);
free(look1_i);
free(look2_r);
free(look2_i);
free(range_filter_r);
free(range_filter_i);
free(range_f);
return ;
}
int main()
{
estimation();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -