/* 实现线性调频信号16个脉冲的脉冲压缩, */
/* 动目标检测(MTI),动目标显示(MTD) */
/* 头文件 */
#include<defts201.h>
#include<stdio.h>
#include<math.h>
#include<FFTDef.h>
/*宏定义 */
#define N 8192 //FFT点数
#define SampleNumber 480 //一个脉冲周期的采样点数;
#define PulseNumber 16 //回波脉冲数
#define TotalNumber (SampleNumber*PulseNumber) //16个脉冲的总长度=7680
#define MTIPoint (SampleNumber*(PulseNumber-2)) //MTI点的个数 =6760
#define MTDPoint (SampleNumber*PulseNumber) //MTD点的个数=7680
#define Number 84 //前暂态点数(去掉前暂态点)
/*全局变量定义 */
#pragma align 4
section ("data2a")
float echo[N*2]
= {
#include "echo.dat"
}; //回波
#pragma align 4
section ("data2a")
float coeff_fft[N*2]
= {
#include "coeff_fft.dat"
}; //脉压系数的FFT
#pragma align 4
section ("data10a")
float buffer1[N*2],buffer2[N*2];//2个缓冲区
#pragma align 4
section ("data10a")
float temp[2*N];
#pragma align 4
section ("data8a")
float freq_press[TotalNumber*2];
#pragma align 4
section ("data8a")
float freq_press_abs[TotalNumber]; //频域脉压结果
#pragma align 4
section ("data8a")
float mti[2*MTIPoint];
#pragma align 4
section ("data8a")
float mti_abs[MTIPoint]; //动目标检测结果
#pragma align 4
section ("data6a")
float input[32];//16点FFT fft_16()的输入
#pragma align 4
section ("data6a")
float output[32];//16点FFT fft_16()的输出
float output1[32];
#pragma align 4
section ("data6a")
float mtd[2*MTDPoint];
#pragma align 4
section ("data6a")
float mtd_abs[MTDPoint]; //动目标显示结果
#pragma align 4
float pc_fft[2*N];
section ("data4a")
#pragma align 4
float pc_fft0[2*N];
section ("data10a")
#pragma align 4
float pc[PulseNumber][2*SampleNumber];
section ("data8a")
#pragma align 4
float echo_fft[2*N];
section ("data6a")
#pragma align 4
float mtd1[PulseNumber][2*SampleNumber];
section ("data8a")
/*函数声明 */
extern fft_flp32(float *,float *,float *,float *);
extern fft_16(float *,float *);
/* 主程序main.c */
void main()
{
int i,j;
/***************脉冲压缩 PC**************/
fft_flp32(echo,buffer1,buffer2,echo_fft);
for(i=0;i<N;i++)
{
pc_fft[2*i]=echo_fft[2*i]*coeff_fft[2*i]-echo_fft[2*i+1]*coeff_fft[2*i+1];
pc_fft[2*i+1]=-1*(echo_fft[2*i]*coeff_fft[2*i+1]+echo_fft[2*i+1]*coeff_fft[2*i]);
}
fft_flp32(pc_fft,buffer1,buffer2,pc_fft0);
for(i=0;i<N;i++)
{
pc_fft0[2*i]=pc_fft0[2*i]/N;
pc_fft0[2*i+1]=-pc_fft0[2*i+1]/N;
}
for(i=0;i<(2*TotalNumber);i++)
{
freq_press[i]=pc_fft0[i+2*(Number-1)];
}
for(i=0;i<TotalNumber;i++)
{
freq_press_abs[i]=sqrt((freq_press[2*i]*freq_press[2*i])+(freq_press[2*i+1]*freq_press[2*i+1]));
}
/*******************脉冲重排列**************/
for(i=0;i<PulseNumber;i++)
{
for(j=0;j<(2*SampleNumber);j++)
{
pc[i][j]=freq_press[i*960+j];
}
}
/*******************动目标显示 MTI**************/
for(i=0;i<14;i++)
{
for(j=0;j<(2*SampleNumber);j++)
{
mti[j+i*2*SampleNumber]=pc[i][j]-2*pc[i+1][j]+pc[i+2][j];
}
}
for(j=0;j<6720;j++)
{
mti_abs[j]=sqrt(mti[2*j]*mti[2*j]+mti[2*j+1]*mti[2*j+1]);
}
/*********************动目标检测 MTD*************/
for(j=0;j<SampleNumber;j++)
{ for(i=0;i<PulseNumber;i++)
{
input[2*i]=pc[i][2*j];
input[2*i+1]=pc[i][2*j+1];
}
fft_16(input,output);
for(i=0;i<2*PulseNumber;i++)
{
output1[i]=output[(i+16)%32];
}
for(i=0;i<PulseNumber;i++)
{
mtd1[i][2*j]=output1[2*i];
mtd1[i][2*j+1]=output1[2*i+1];
}
for(i=0;i<PulseNumber;i++)
{
mtd_abs[i+j*PulseNumber]=sqrt(mtd1[i][2*j]*mtd1[i][2*j]+mtd1[i][2*j+1]*mtd1[i][2*j+1]);
}
}
}
sdca.c.zip_??????_MTI_动目标显示_动目标检测 mtd_脉冲压缩
版权申诉
170 浏览量
2022-09-23
18:02:25
上传
评论
收藏 1KB ZIP 举报
周楷雯
- 粉丝: 80
- 资源: 1万+
最新资源
- Windows管理工具 任务管理器、获取计算机上安装的哪些软件、远程关机/重启计算机
- Exchange监控工具,运维工具监控Exchange邮件服务器的性能、邮箱明细、队列、邮件客户端等
- DDR4 SDRAM MT40A1G MT40A512M8 MT40A256M16数据手册
- 进程与流量监控工具ManageEngine-SyslogForwarder
- 2022级大数据爬虫期末考试.docx
- ManageEngine-SyslogForwarder,Syslog日志转发工具
- 基于卷积神经网络的人体细胞癌症分类模型实现
- 关于食物营养的知识图谱的推荐系统
- 非常好用的ping工具,而且是官方发布的免费的
- 简介,无任何业务,仅简单的react框架
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈