博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FFT
阅读量:5815 次
发布时间:2019-06-18

本文共 2075 字,大约阅读时间需要 6 分钟。

#include 
#include
#include
//**************************************************************************************#ifndef M_PI #define M_PI 3.14159265358979323846#endif#define DATA_LEN 64#define SAMPLE_FREQ 1000 // Hzunsigned char sin_data[64] = {0x7F,0x8B,0x98,0xA4,0xB0,0xBB,0xC6,0xD0,0xD9,0xE2, 0xE9,0xEF,0xF5,0xF9,0xFC,0xFE,0xFE,0xFE,0xFC,0xF9,0xF5,0xEF,0xE9,0xE2,0xD9,0xD0, 0xC6,0xBB,0xB0,0xA4,0x98,0x8B,0x7F,0x73,0x66,0x5A,0x4E,0x43,0x38,0x2E,0x25,0x1C, 0x15,0x0F,0x09,0x05,0x02,0x00,0x00,0x00,0x02,0x05,0x09,0x0F,0x15,0x1C,0x25,0x2E, 0x38,0x43,0x4E,0x5A,0x66,0x73};typedef struct{ double r; double i;} cplx_t;//**************************************************************************************void cplx_exp(cplx_t *x, cplx_t *r){ double expx = exp(x->r); r->r = expx*cos(x->i); r->i = expx*sin(x->i);}// 复数乘法void cplx_mul(cplx_t *x, cplx_t *y, cplx_t *r){ r->r = x->r*y->r-x->i*y->i; r->i = x->r*y->i+x->i*y->r;}// 比特反置void bit_reverse(cplx_t *x, int N){ unsigned int i = 0,j = 0,k = 0; cplx_t tmp; int bit_num = log(0.0+N)/log(2.0); // 比特位数 for (i=0; i
>= 1; } if (j>i) { tmp = x[i]; x[i] = x[j]; x[j] = tmp; } }}void fft(cplx_t *x, int N){ cplx_t u,d,p,W,tmp; int i=0,j=0,k=0,l=0; double M = floor(log(0.0+N)/log(2.0)); // zhiqiu 换底公式 if (log(0.0+N)/log(2.0)-M > 0) { printf("The length of x (N) must be a power of two!!!\n"); return; } bit_reverse(x,N); for (i = 0; i < M; i++) { l = 1<
< N; i++) x[i].i = -x[i].i; fft(x,N); for (i = 0;i < N; i++) { x[i].r = x[i].r/(N+0.0); x[i].i = -x[i].i/(N+0.0); }}//**************************************************************************************int main(int argc, const char * argv[]){ int i; cplx_t x[DATA_LEN]; for (i=0;i

 

转载于:https://www.cnblogs.com/SkyPrayer/p/3918863.html

你可能感兴趣的文章
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>
关于Android四大组件的学习总结
查看>>
java只能的round,ceil,floor方法的使用
查看>>
由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件...
查看>>
新开的博客,为自己祝贺一下
查看>>
puppet任务计划
查看>>
【CQOI2011】放棋子
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
C语言数据类型char
查看>>
Online Patching--EBS R12.2最大的改进
查看>>
Binary Search Tree Iterator leetcode
查看>>
Oracle性能优化--DBMS_PROFILER
查看>>