完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
[tr]/****************************************************************************/
/* */ /* 基2 时间抽取 快速傅里叶变换 / 快速傅里叶逆变换 */ /* */ /* 2014年08月25日 */ /* */ /****************************************************************************/ #include #include #include "mathlib.h" // DSP 数学函数库 #include "dsplib.h" // DSP 函数库 /****************************************************************************/ /* */ /* 宏定义 */ /* */ /****************************************************************************/ // 软件断点 #define SW_BREAKPOINT asm(" SWBP 0 "); // 采用点数 #define Tn 16 // 采样频率 #define Fs 256.0 // π 及 浮点数极小值 #define PI 3.14159 #define F_TOL (1e-06) /****************************************************************************/ /* */ /* 全局变量 */ /* */ /****************************************************************************/ // 快速傅里叶变换测试 #pragma DATA_ALIGN(Input, 8); float Input[Tn]; #pragma DATA_ALIGN(CFFT, 8); float CFFT[2*Tn]={0,0,-9,9,9,-9,-9,-9,9,9,-9,9,9,-9,-9,-9,0,0,-9,9,9,9,-9,-9,9,-9,-9,9,9,9,-9,-9}; #pragma DATA_ALIGN(CFFT_In, 8); float CFFT_In[2*Tn]; #pragma DATA_ALIGN(CFFT_Out, 8); float CFFT_Out[2*Tn]; #pragma DATA_ALIGN(Cw, 8); float Cw[2*Tn]; #pragma DATA_ALIGN(Cmo, 8); float Cmo[Tn]; /****************************************************************************/ /* */ /* 函数声明 */ /* */ /****************************************************************************/ void bit_rev(float* x, int n); void gen_w_r2(float* w, int n); void FFTTest(void); /****************************************************************************/ /* */ /* 主函数 */ /* */ /****************************************************************************/ int main(void) { // FFT 测试 FFTTest(); // 断点 SW_BREAKPOINT; } /****************************************************************************/ /* */ /* 快速傅里叶变换测试 */ /* */ /****************************************************************************/ // 比特位反转 void bit_rev(float* x, int n) { int i,j,k; float rtemp,itemp; j=0; for(i=1;i<(n-1);i++) { k=n>>1; while(k<=j) { j-=k; k>>=1; } j+=k; if(i rtemp=x[j*2]; x[j*2]=x[i*2]; x[i*2]=rtemp; itemp=x[j*2+1]; x[j*2+1]=x[i*2+1]; x[i*2+1]=itemp; } } } // 产生旋转因子 void gen_w_r2(float* w, int n) { int i; float e=PI*2.0/n; for(i=0;i<(n>>1);i++) { w[2*i]=cossp(i*e); w[2*i+1]=sinsp(i*e); } } // 快速傅里叶变换 void FFTTest(void) { // 保留一份 FFT 输入副本 memcpy(CFFT_In, CFFT, 2*Tn*sizeof(float)); gen_w_r2(Cw, Tn); bit_rev(CFFT_In, Tn); // IFFT 计算 DSPF_sp_icfftr2_dif(CFFT_In, Cw, Tn); memcpy(CFFT_Out, CFFT_In, 2*Tn*sizeof(float)); for(i=0;i CFFT_Out=CFFT_Out/Tn; } } [/tr] |
|
相关推荐
1个回答
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
【创龙TLT113-MiniEVM开发板试用体验】相关开发过程的体验,以及与毫米波雷达的联调
927 浏览 0 评论
【创龙TL3562-MiniEVM开发板试用体验】--MQTT通讯
926 浏览 0 评论
【创龙TL3562-MiniEVM开发板试用体验】问题4 ubuntu镜像,opencv不能正常工作??
1013 浏览 0 评论
【创龙TL3562-MiniEVM开发板试用体验】10、 Qt实现ADC采集显示和内部温度曲线监控
1461 浏览 0 评论
【创龙TLT113-MiniEVM开发板试用体验】U盘读写速度测试教程
1832 浏览 0 评论
【创龙TL3562-MiniEVM开发板试用体验】问题1 更换到Ubuntu镜像后,USB识别不了外设
472浏览 1评论
【创龙TL3562-MiniEVM开发板试用体验】1、从系统启动卡制作开始
721浏览 1评论
【创龙TL3562-MiniEVM开发板试用体验】Grove移植4之BUTTON
326浏览 0评论
【创龙TL3562-MiniEVM开发板试用体验】--开发板外设与接口测试
813浏览 0评论
1130浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:18 , Processed in 0.583519 second(s), Total 74, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1681