资源简介
在圆迹SAR成像模型中,一般采用后向投影算法(Back Projection Algorithm,BPA)实现。本文采用C++语言建立了圆迹SAR的回波模型,然后采用BP算法仿真出了点目标。(运行该程序需要配置opencv,对opencv的配置可参考http://blog.csdn.net/destiny0321/article/details/54138434中的部分内容)
代码片段和文件信息
//
// FFT.cpp
//
#include “FFT.h“
// 标准 FFT,其中 Data.size() 为2的幂次方
void CFFT::FFT(VectorC& Data)
{
ReArrange(Data);
Perform(Data);
}
// 扩展 FFT,其中 Output.size() 为2的幂次方,Input.size() < Output.size()
void CFFT::FFT(VectorC& Output const VectorC& Input)
{
ReArrange(Output Input);
Perform(Output);
}
// 标准 IFFT,其中 Data.size() 为2的幂次方
void CFFT::IFFT(VectorC& Data)
{
ReArrange(Data);
Perform(Data true);
Scale(Data);
}
// 扩展 IFFT,其中 Output.size() 为2的幂次方,Input.size() < Output.size()
void CFFT::IFFT(VectorC& Output const VectorC& Input)
{
ReArrange(Output Input);
Perform(Output true);
Scale(Output);
}
// Matlab 中的 fftshift 函数
void CFFT::FFTSHIFT(VectorC& Data)
{
int N = Data.size();
int K = (N + 1) / 2;
VectorC Temp(N);
for (int i = 0; i < N; i++)
Temp[i] = Data[(i + K) % N];
for (int i = 0; i < N; i++)
Data[i] = Temp[i];
}
// FFT 的实现部分
void CFFT::Perform(VectorC& Data const bool bIFFT /* = false */)
{
unsigned int N = Data.size();
const double PI = 3.14159265358979323846;
for (unsigned int Step = 1; Step < N; Step <<= 1)
{
const unsigned int Jump = Step << 1;
const double delta = (bIFFT ? PI : -PI) / Step;
const double Sine = sin(0.5*delta);
const ComplexD Multiplier(-2 * Sine*Sine sin(delta));
ComplexD Factor(1 0);
for (unsigned int Group = 0; Group < Step; Group++)
{
for (unsigned int Pair = Group; Pair < N; Pair += Jump)
{
const unsigned int Match = Pair + Step;
const ComplexD Product = Factor*Data[Match];
Data[Match] = Data[Pair] - Product;
Data[Pair] += Product;
}
Factor = Multiplier*Factor + Factor;
}
}
}
// 将 Data 的逆序结果放入 Data
void CFFT::ReArrange(VectorC& Data)
{
unsigned int N = Data.size();
unsigned int j = 0;
for (unsigned int i = 0; i < N; i++)
{
if (j > i)
{
const ComplexD Temp = Data[j];
Data[j] = Data[i];
Data[i] = Temp;
}
unsigned int mask = N;
while (j&(mask >>= 1))
j &= ~mask;
j |= mask;
}
}
// 将 Input 的逆序结果放入 Output
void CFFT::ReArrange(VectorC& Output const VectorC& Input)
{
unsigned int Ni = Input.size();
unsigned int No = Output.size();
if (No < Ni) throw;
VectorC Temp;
bool flag = false;
if (Ni < No)
{
Temp = VectorC(No);
for (int i = 0; i < Ni; i++)
Temp[i] = Input[i];
flag = !flag;
}
unsigned int j = 0;
for (unsigned int i = 0; i < No; i++)
{
if (flag) Output[j] = Temp[i];
else Output[j] = Input[i];
unsigned int mask = No;
while (j&(mask >>= 1))
j &= ~mask;
j |= mask;
}
}
// 只针对IFFT,最后结果要除以 Data.size()
void CFFT::Scale(VectorC& Data)
{
unsigned int N = Data.size();
const double Factor = 1.0 / N;
for (unsigned int i = 0; i < N; i++)
Data[i] *= Factor;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 527420 2017-03-25 16:47 bpCSAR3deg\1.bmp
文件 753558 2017-03-25 16:48 bpCSAR3deg\2.bmp
文件 7651 2017-01-04 15:17 bpCSAR3deg\bpCSAR3deg\bpCSAR3deg.vcxproj
文件 1500 2017-01-04 15:17 bpCSAR3deg\bpCSAR3deg\bpCSAR3deg.vcxproj.filters
文件 2914 2017-01-04 15:45 bpCSAR3deg\bpCSAR3deg\FFT.cpp
文件 1167 2017-01-04 15:45 bpCSAR3deg\bpCSAR3deg\FFT.h
文件 993 2017-01-04 10:20 bpCSAR3deg\bpCSAR3deg\Jet.cpp
文件 174 2017-03-25 15:39 bpCSAR3deg\bpCSAR3deg\Jet.h
文件 5643 2017-03-25 16:41 bpCSAR3deg\bpCSAR3deg\main.cpp
文件 305 2016-12-31 16:01 bpCSAR3deg\bpCSAR3deg\Point3D.cpp
文件 218 2017-03-25 15:39 bpCSAR3deg\bpCSAR3deg\Point3D.h
文件 1330 2016-12-31 14:25 bpCSAR3deg\bpCSAR3deg.sln
..A..H. 38912 2017-03-25 16:44 bpCSAR3deg\bpCSAR3deg.v12.suo
文件 32768 2017-03-25 16:41 bpCSAR3deg\x64\Release\bpCSAR3deg.exe
目录 0 2017-03-25 16:49 bpCSAR3deg\x64\Release
目录 0 2017-03-25 16:49 bpCSAR3deg\bpCSAR3deg
目录 0 2017-03-25 15:29 bpCSAR3deg\x64
目录 0 2017-03-25 16:49 bpCSAR3deg
----------- --------- ---------- ----- ----
1374553 18
- 上一篇:qt 滑屏翻页效果C++程序
- 下一篇:C语言函数速查效率手册 光盘
相关资源
- BP神经网络C语言工程当前最终版
- 可以在单片机上计算的BP神经网络C语
- BP算法的C++实现
- 百度地图二次开发汇总
- 基于VC++的人脸定位系统
- BP神经网络实现人脸识别包含软件源码
- 人工神经网络之BP网络模拟三角函数
- 车牌识别 openCV mfc BP神经网络
- vcMfcUsbPort完整上位机源码
- 基于C++版本的Bp神经网络,数据拟合,
- 用于人脸识别的lbp算法C++源码
- C++ bp神经网络算法
- VS工程中zlib.h、png.h相关文件
- C++builder创建bpl库并调用
- BP神经网络的c++实现
- 基于BP神经网络的简单字符识别算法自
- BP三层神经网络实现C++代码注释详细
- libpng资源包
- BP 算法用于实现分类
- BP神经网络鸢尾花分类C++代码
- 基于LIBPCAP的网络流量实时采集与信息
- 基于C语言的BPSK
- 多元 多进制 NB LDPC BP QSPA译码 decoder
- WebPage.h和WebPage.cpp
- BP神经网络VC++实现
- bp车牌识别源代码
- C++实现的BP神经网络算法实现奇偶检验
- BP算法程序实现包括matlab、C语言、C
-
C++中使用CWebPage调用ja
vasc ript - C++代码提取LBP特征
评论
共有 条评论