//==============================================================================================================================================
#include <MATH.H>
#include <STDIO.H>
#include <STDLIB.H>
//==============================================================================================================================================
// 常数定义
//==============================================================================================================================================
#define WLENGTH 0.00875 // 波长
#define SLANT 7500 // 作用距离
#define V_plane 90 // 载机速度
#define PI 3.1415926535897
#define PRF 1000
#define FS 220 // 兆赫
#define T1 30 // 微秒
#define BW 200 // 兆赫
#define ANUM 4096 // 方位
#define RNUM 8192 // 距离
#define RN 2048 // 距离向有效数据
#define ZNUM 0 // FFT移位
#define YY 2 // 回波数据2, 回波量化像0
//==============================================================================================================================================
void rangecompression();
void turncorner();
void imageout();
float Max_val();
float Min_val();
void fft(float *x, float *y, int n, int flag);
//==============================================================================================================================================
// 全局变量
//==============================================================================================================================================
float range_datar[ANUM][RNUM], range_datai[ANUM][RNUM];
float azimu_datar[RNUM][ANUM];
//==============================================================================================================================================
void main()
{
printf("Range compressing, waiting...\n");
rangecompression();
if(YY>1) // 回波数据
{
printf("Turn corner, waiting...\n\n");
turncorner();
}
else // 回波量化像
{
printf("Imaging, waiting...\n");
imageout();
}
}
//==============================================================================================================================================
// 距离压缩
//==============================================================================================================================================
void rangecompression()
{
int i,j;
unsigned char temp[RNUM];
int frnum;
int start;
float K;
float refr[RNUM],refi[RNUM];
float dr[RNUM],di[RNUM];
float wnd;
float t;
float re, im;
float dianpr, dianpi;
FILE *fin;
fin = fopen("d:/data/10data/d1208f0-fish.dat","rb");
start = 0;
fseek(fin, (long)((5865*4+18000)*8192*2 + RNUM * start * 2), 0);
//====================================================================================================================================================
// 原始数据电平校正
//====================================================================================================================================================
for(j=0;j<ANUM;J++) if(fp[i] { for(i="0;i<RNUM;i++)" x="fp[0];" x; float i; int a) fp, * Max_val(float ="===================================================================================================================================================" 直方图量化 } fclose(fout2); fclose(fout1); ); fout2='fopen("rc-end.i","wb");' ANUM, sizeof(float), azimu_datar[i], fwrite( azimu_datar[i][j]="(float)sqrt(" i++) i<RN; (i="1468;" for azimu_datar[i-6724][j]="range_datar[j][i];" 去掉前6724行数据 I数据 j++) j<ANUM; for(j="0;j<ANUM;j++)" fout1='fopen("rc-end.r","wb");' R数据 *fout2; *fout1, FILE i,j; turncorner() void 矩阵转置 range_datai[j][i]*range_datai[j][i] +="temp[i];" range_datar[j][i]*range_datar[j][i] i<RNUM; i="0;" for( 回波量化像 if(YY<1) range_datai[j][i]="(float)temp[i]-dianpi;" range_datar[j][i]="(float)temp[i]-dianpr;" 1 RNUM, di, dr, fft( im*refr[i]; di[i]="range_datai[j][i];" im*refi[i]; - dr[i]="range_datar[j][i];" im="di[i];" re="dr[i];" ) i++ 0 refi, refr, refi[i]="(float)" refr[i]="(float)" else )); -PI*K*t*t sin( (wnd cos( (frnum) 2.0*PI*i 0.46*cos( (0.54 wnd="(float)" FS; 2 (i-frnum t="(float)" i<frnum) if( 距离压缩参考函数 K); frnum, printf(?frnum='%d---K=%f\n",' 调频率 K="(float)(BW/T1);" 脉冲宽度 int)floor(FS*T1); frnum="(unsigned" fclose(fin); if(i<8000) RNUM; dianpi="0.0;" char),RNUM,fin); fread(&temp,sizeof(unsigned dianpr="0.0;">x) { x=fp[i]; }
}
return x;
}
float Min_val(float * fp, int a)
{
int i;
float x;
x=fp[0];
for(i=1;i<A;I++) { for(i="0;i<height;i++)" x="fp[i];" x; float int * ="=============================================================================================================================================" } ); for for(j="0;j<width;j++)" FILE void i="0;" for( ) i++ if( z="(int)" (x-y)); floor((azimu_datar[i][j]-y)*N hisgram free(MinArray); free(MaxArray); y="Min_val(MinArray,height);" MinArray[i]="Min_val(azimu_datar[i],width);" MaxArray[i]="Max_val(azimu_datar[i],width);" hisg[i]="0;" i<N; char)); out="calloc(width,sizeof(unsigned" sizeof(int) N, hisg="calloc(" MinArray="calloc(height,sizeof(float));" MaxArray="calloc(height,sizeof(float));" N="width;" level fidw='fopen("output2.raw","wb");' width="ANUM;" height="RNUM;" *fidw; x,y; *out; char unsigned hisg; num; idx_top, idx_bottom, i,j,z,height,width, *MaxArray,*MinArray; tmpval; imageout() return if(fp[i]<x){>= N )
z = N-1;
if( z<0 )
z = 0;
hisg[z] ++;
}
}
// for 最小值 直方图的索引
num = ( int ) floor( width*height*0.015 );
z = 0;
i = 0;
while( z<NUM { for(i="0;i<height;i++)" x int * } ); for for(j="0;j<width;j++)" +="hisg[i];" i 1 - ) if( z y N (x-y) (azimu_datar[i][j]-y)*256 floor( 量化成256级灰度 ; ( tmpval="idx_top" 确定用于量化的最大值和最小值 idx_top="i" --; ]; z<num while( width*height*0.015 num="(" 直方图的索引 最大值 idx_bottom="i" ++>255 )
z = 255;
if( z<0 )
z = 0;
out[j]=(unsigned char)z;
}
fwrite(&out[0],sizeof(unsigned char),width,fidw);
}
free(out);
free(hisg);
fclose(fidw);
}
//==============================================================================================================================================
// FILE END
//==============================================================================================================================================
//==============================================================================================================================================
#include
#include
#include
//==============================================================================================================================================
// 常数定义
//=============================================================================================================