微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > FFT?

FFT?

时间:10-02 整理:3721RD 点击:


请问FFT中用到的SIN、COS 值是怎么算出来的,书上给了个公式:sin((2pi/N)*k);

谁能讲一下,书中sintab[]中数据的具体算法!!

书中给的数据为:(以32点为例)  ;为什么没有给出COS的值呢?

// 32 点 FFT的sin 和 cos值存储表
// ---------------------------------------------------------------
const int sintab[N]={
0x7FFF,0x0000,0x7D89,0xE708,0x7640,0xCF05,0x6A6C,0xB8E4,
0x5A81,0xA57F,0x471C,0x9594,0x30FB,0x89C0,0x18F8,0x8277,
0x0000,0x8001,0xE708,0x8277,0xCF05,0x89C0,0xB8E4,0x9594,
0xA57F,0xA57F,0x9594,0xB8E4,0x89C0,0xCF05,0x8277,0xE708,
};

cos可以通过sin表循环得到。
你看看q15格式,就知道怎么用整形表示浮点数了

就是标准的1HZ的SIN或者COS的数据,你可以自己用C语言得到它们的数据值。
例如产生256点的COS值

int i;
int tab[256];

for(i = 0;i<256;i++)
{
tab = cos((2*pi/256)*i);
}

其实SIN和COS无非是数据取值的方式不一样而已,用一个就可以了

按你所说公式,那下面表中00X7FFF、0X000怎么来的,我算了算不对啊(Q15格式)
// 32 点 FFT的sin 和 cos值存储表
// ---------------------------------------------------------------
const int sintab[N]={
0x7FFF,0x0000,0x7D89,0xE708,0x7640,0xCF05,0x6A6C,0xB8E4,
0x5A81,0xA57F,0x471C,0x9594,0x30FB,0x89C0,0x18F8,0x8277,
0x0000,0x8001,0xE708,0x8277,0xCF05,0x89C0,0xB8E4,0x9594,
0xA57F,0xA57F,0x9594,0xB8E4,0x89C0,0xCF05,0x8277,0xE708,
};

你这个是32位的数据吧??
第一个数据是0x7FFF,0x0000,
第二个数据是0x7D89,0xE708,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top