工程实现1024点FFT运算,应用XILINX fft核,对fft运算后的数据取模运算,同时带有仿真模块,验证模块的正确性
2021-06-10 21:20:58 74.2MB fpga vivado fft
1
MATLAB中使用FFT做频谱分析时频率分辨率问题-频率分辨率.rar MATLAB中使用FFT做频谱分析时频率分辨率问题 最近做FFT时,使用的采样频率和信号长度的取舍一直没有搞清楚,后来在论坛上发了一个贴子《总结一下使用FFT和维纳-辛钦定理求解PSD问题》(讨论见https://www.ilovematlab.cn/thread-27150-1-1.html,特别感谢会员songzy41,他的问题给了我很大启示),跟帖中给了我不少启示,并且让我对“频率分辨率”这个概念有了更深入的理解。再次一并感谢论坛的高手们。 频率分辨率,顾名思义,就是将信号中两个靠的很近的频谱分开的能力。 信号x长度为Ts,通过傅氏变换后得到X,其频率分辨率为Δf=1/T(Hz),若经过采样后,假设采样频率为fs=1/Ts,而进行频谱分析时要将这个无穷长的序列使用窗函数截断处理,假设使用矩形窗,我们知道,矩形窗的频谱为sinc函数,主瓣宽度可以定义为2*pi/M,M为窗宽,那么,时域相乘相当于频域卷积,频域内,这一窗函数能够分辨出的最近频率肯定不可能小于2*pi/M了,也就是如果数据长度不能满足2*pi/M<|w2-w1|(w2,w1为两个靠的很近的频率),那么在频谱分析时,频谱上将不能分辨出这两个谱,由于w2-w1=2*pi/fs=2*pi*Δf/fs也就是2*pi/M<2*piΔf/fs,得到Δf的限制为fs/M,这就是窗函数宽度的最小选择,就是说,根据Shannon采样定理确定了采样频率后,要根据靠的最近的谱峰来确定最小的采样长度,这样,所作出来的频谱才能分辨出那两个谱峰,也就是拥有了相应的频率分辨率。 几个例子: 考虑双正弦信号:x = sin sin;根据Shannon采样定理,采样频率要大于截止频率的两倍,这里选采样频率为80,那么,我们可以看到,Δf为0.2Hz,那么,最小的数据长度为0.2/80=400,但是对正弦信号的频谱分析经验告诉我们,在截断时截断时的数据要包含整周期,并且后面不宜补零以避免频谱泄露(这一点见胡广书《数字信号处理导论》,清华大学出版社),那么,我们要选择至少980个点,才能保含到一个整周期,另外,FFT的经验告诉我们作分析时最好选择2的整数次幂,我们选择靠的最近的1024点。分析结束。 [CODE] Fs = 80; n = 0:1/Fs:1023*1/Fs; x = sin sin; N = length; figure; X = fftshift); plot*Fs/N,abs*2/N); grid on; axis; 这是按照我们的分析进行的编程和图形 zheng.jpg 可以看出这两个谱峰很好的被分辨开来,9.8Hz不在谱线上,所以幅值不为1,以下是一些对比: [CODE] Fs = 80; n = 0:1/Fs:1023*1/Fs; x = sin sin; N = length; X = fftshift); figure; subplot plot*Fs/N,abs*2/N); grid on; axis; title; n = 0:1/Fs:979*1/Fs; x = sin sin; N = length; X = fftshift); subplot plot*Fs/N,abs*2/N); grid on; axis; title; n = 0:1/Fs:399*1/Fs; x = sin sin; N = length; X = fftshift); figure; subplot plot*Fs/N,abs*2/N); grid on; axis; title; Fs = 20; n = 0:1/Fs:1024*1/Fs; x = sin sin; N = length; X = fftshift); subplot plot*Fs/N,abs*2/N); grid on; axis; title; 结果如下: 1024.jpg 400.jpg 这是我在做FFT以及论坛中的问题时所得到的一点启发,不当之处还请大家指正。OO~ 频率分辨率.rar 为了方便大家,我将doc版报告和m文件一起上传,和帖子内容一样。OO~
2021-06-10 16:05:09 13KB matlab
1
FFT算法在FPGA上的verilog实现 详解 Implementation of Fast Fourier Transform (FFT) on FPGA using Verilog HDL
2021-06-09 16:21:21 727KB FFT verilog
1
MATLAB对一段音频进行FFT处理,可以绘制出原声音信号的时域波形,可以比较出直接运算和蝶形运算的语音信号FFT频谱特性
2021-06-08 19:22:59 2KB fft 音频 时域 频谱
1
短时傅里叶变换(stft)的Matlab源码,已封装为Function函数,可直接根据源码注释调用
2021-06-07 17:02:13 1KB matlab 短时傅立叶变换 stft fft
1
OpenCL中的FFT和DFT 在OpenCL中针对基于FPGA的体系结构实现DFT和FFT
2021-06-07 16:00:19 690KB fpga signal-processing opencl parallel-computing
1
获校级电子设计竞赛一等奖,基于STM32F407的FFT自适应滤波程序, 0—20KHz自适应滤波,应用Blackman_Win窗口减少幅值泄露,分辨率20Hz,滤波后频率误差100Hz,幅值误差100mv。欢迎批评指正
2021-06-06 00:50:40 18.19MB stm32 自适应滤波 F407 FFT算法
1
基于TMS320C6455的二维FFT实现 - dsplib_c64Px_3_4_0_0_Win32.exe - DSP库 - FFT2 - FFT2实现工程 - TI Compiler v7.4.18 - ImageResize - 用来调整图像尺寸并生成对应code的Python脚本 - 依赖opencv-python
2021-06-05 19:04:57 6.13MB dsp fft
1
非常精简且实用的fft代码。附有详尽的注释,方便理解。经过测试,结果准确。效率基本和matlab内置函数相同。
2021-06-05 09:03:24 911B matlab fft
1