首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

求FFT函数参数分析解决方法

2013-01-06 
求FFT函数参数分析在网上找了一个FFT函数如下:(其中函数体的内容可以忽略) // 函数名: 快速傅立叶变换(来

求FFT函数参数分析
在网上找了一个FFT函数如下:(其中函数体的内容可以忽略)

   // 函数名: 快速傅立叶变换(来源《C常用算法集》)
  // 入口参数: 
  // l: l = 0, 傅立叶变换; l = 1, 逆傅立叶变换
  // il: il = 0,不计算傅立叶变换或逆变换模和幅角;il = 1,计算模和幅角
  // n: 输入的点数,为偶数,一般为32,64,128,...,1024等
  // k: 满足n=2^k(k>0),实质上k是n个采样数据可以分解为偶次幂和奇次幂的次数
  // pr[]: l=0时,存放N点采样数据的实部
  // l=1时, 存放傅立叶变换的N个实部
  // pi[]: l=0时,存放N点采样数据的虚部 
  // l=1时, 存放傅立叶变换的N个虚部
  //
  // 出口参数:
  // fr[]: l=0, 返回傅立叶变换的实部
  // l=1, 返回逆傅立叶变换的实部
  // fi[]: l=0, 返回傅立叶变换的虚部
  // l=1, 返回逆傅立叶变换的虚部
  // pr[]: il = 1,i = 0 时,返回傅立叶变换的模
  // il = 1,i = 1 时,返回逆傅立叶变换的模
  // pi[]: il = 1,i = 0 时,返回傅立叶变换的辐角
  // il = 1,i = 1 时,返回逆傅立叶变换的辐角
  // data: 2005.8.15,Mend Xin Dong
  void FFT(double pr[], double pi[], int n, int k, double fr[], double fi[], int l, int il)
  {//这里的内容忽略不看
  }

我的目的: 我用采集卡采集到了一组信号数据(信号强度)data[1024],想通过FFT函数转换,然后绘制频域波谱图形(想分析该信号中包含几种频率的信号)

问题1:我只有一组数据data[1024],可是函数声明中有两组入口参数pr[]和pi[],应该把data[1024]作为哪一个参数,另外一个参数怎么办?

问题2:出口参数分别是fr[],fi[],pr[],pi[];我要绘制频谱图,应该用哪个参数作为纵坐标来绘制呢?横坐标又是哪个参数呢?
本人在波谱分析这块是菜鸟,对傅立叶变换更是菜鸟,希望大虾能用最通俗易懂的语言回答,谢谢
[解决办法]
你找到的是二维的FFT,你的只需要一维的就可以了,可以看看:
http://blog.21ic.com/user1/4123/archives/2007/38294.html
[解决办法]
问题1::参数pr[]和pi[],是实部和虚部的意思.输入到pr[]就可;
问题2:出口参数分别是fr[],fi[],pr[],pi[];估计fr[],fi[]是输出的复数数列,p估计表示相位【一般不用,除非考虑相位、频率特性】,频谱幅度就是fr[]+fi[]*i的幅度(纵坐标),[]的序号换算出频率作为横坐标。
[解决办法]
到http://www.pudn.com/downloads143/sourcecode/math/detail622569.html下载源码,是基于EVC的,和VC的基本一样,里面模拟产生信号,并叠加了一个噪声,最后经fft将噪声频率提取出来

热点排行