关于这个FFT的问题

zygod625 zygod625 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#if 0
#define FFT_SIZE 2048 // 采样点数
#else
#define FFT_SIZE 128 // 采样点数
#endif


///////这是什么意思?

有Cfft类如下:
class Cfft
{
public:
LONG GetClosestPeak( INT Start, INT Stop);
INT FindPKfreq( INT Center, INT range);
void CalcFFT(double * InBuf);
void ResetFFT();
void SetFFTParams( INT ave, double gain, INT type,double clkerror);
BOOL GetFFTData( INT start, INT stop, LONG* OutBuf, BOOL UseOffset);
Cfft();
virtual ~Cfft();
private:
BOOL m_Overload;
BOOL m_LogMode;
BOOL m_LastLogMode;
INT m_LastAve;
INT m_AveSize;
INT m_OffsetIndxTable[FFT_SIZE/2];
double m_Gain;
double m_Clip;
double * SinCosTbl;
double * WindowTbl;
double* pFFTAveBuf;
double* pFFTInBuf;
INT * WorkArea;
void makewt(int nw, int *ip, double *w);
void makect(int nc, int *ip, double *c);
void bitrv2(int n, int *ip, double *a);
void cftfsub(int n, double *a, double *w);
void rftfsub(int n, double *a, int nc, double *c);
void cft1st(int n, double *a, double *w);
void cftmdl(int n, int l, double *a, double *w);
};


///////我要如何使用?
...全文

相关推荐

FFT谐波检测存在的问题

FFT谐波检测存在的问题 FFT谐波检测存在的问题 FFT谐波检测存在的问题

Augusdi

Matlab Powergui FFT Tool问题及解决

代码下载链接: https://pan.quark.cn/s/ae76ad133e7a 该文档全面阐述了运用Matlab中傅里叶分析模块所面临的部分挑战,且具有很高的应用价值。

2601_95675525

houdini fft 使用三层for each结构 以及for 问题

houdini fft 使用三层for each结构 以及for 问题

幺儿一

FFT实现物理大地测量边值问题类型转换

FFT实现物理大地测量边值问题类型转换 FFT实现物理大地测量边值问题类型转换

Augusdi

总结一下FFT和维纳辛钦定理求解PSD的问题-功率谱图.rar

总结一下FFT和维纳辛钦定理求解PSD的问题-功率谱图.rar 早上在论坛上问了两个问题, 一个是关于FFT求频谱时纵坐标的值问题 https://www.ilovematlab.cn/thread-27092-1-1.html 还有一个是用维纳辛钦定理求解PSD时出现的问题 https://www.ilovematlab.cn/thread-27133-1-1.html 经过达人们的指点,和自己的总结,获得一点心得,在这里与大家分享一下:) 1.FFT求频谱 [CODE] Fs = 40; n = 0:1/Fs:159*1/Fs; x = sin sin; N = length; X = fftshift); Px1 = X.*conj/N; plot*Fs/N,Px1); grid on; axis title; 首先,fftshift的问题,以前上数字信号处理时,老师专门给提出了这个函数,但是我发现论坛里好多不太明白这个函数意义的,OO~,一般,fft得到的是频谱范围在【0-2*pi】范围内的频谱,以高频pi为中心,但是一般使用过程中,使用的频谱习惯以低频0为中心,fftshift的功能就是将频谱进行移位,使之在【-pi,pi】之间; 另外,纵坐标的问题,版主edifier2008提示说用/N的方法归一化,我试了一下,每次采样长度变大时,纵坐标的整体值都会变大,/N之后,值变为1之内了,但是并不是理论算法中得到的1. 图形如下: fft.jpg fft 2.维纳辛钦定理求解功率谱的问题 [CODE] Fs = 40; n = 0:1/Fs:159*1/Fs; x = sin sin; N = length; Rx = xcorr; Px2 = fftshift); plot*Fs/,abs); grid on; axis title; 图形如下: fftwei.jpg 程序中可以看出,也要使用fftshift对fft得到的频谱进行移位以得到以低频0为中心的频谱,另外,得到的功率谱纵轴值特别大,是不是也需要除以采样长度,我试了一下,仍然是很大,个人认为,在MATLAB中计算自相关函数以及计算FFT时,都没有对加和进行归一,将/N这一个系数可能都给省略掉了。 此外,我在很多教材里面看了不少里面的例题,都没有注意纵轴值的问题,我觉得在进行频谱分析,重点在于频率点,以及相近频率点的谱图是不是能够分辨出来,而对于各谱的大小,有个相对的比较即可。 不当之处,还望大家给与指正,:) :victory:

weixin_39840650
评论 14
收藏 已收藏
分享
返回顶部
zygod625
图形处理/算法 19,463 成员 50,678 内容