声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5827|回复: 42

[FFT] 如何将频率分辨率自定义

[复制链接]
发表于 2017-1-8 20:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请问各位大神,如果我有一组数据,数据点数为N=100000个,而采样频率fs=10000Hz,请问在进行fft时怎样将频率分辨率设为1Hz?
谢谢!
回复
分享到:

使用道具 举报

发表于 2017-1-9 08:37 | 显示全部楼层
  1. lear
  2. clf
  3. f1=1000;  % f1=1kHz
  4. f2=2500;  % f2=2.5kHz
  5. f3=3000;  % f3=3kHz
  6. fs=10000; % 采样频率f0=10kHZ
  7. T=1/fs;   % 采样周期
  8. t=(0:100).*T;
  9. y=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);
  10. plot(t,y);
  11. N=20;     % 采样点数
  12. Nfft=20;  % FFT 点数  不足后面补零
  13. W0=fft(y(1:N),Nfft);
  14. Aw=2*abs(W0)/N;
  15. df=fs/Nfft;  % [0,fs) 频点间隔
  16. %改变采样点数 和fft变换点数 比较分析
  17. N1=40;     % 采样点数
  18. Nfft1=128;  % FFT 点数  不足后面补零
  19. W1=fft(y(1:N1),Nfft1);
  20. Aw1=2*abs(W1)/N1;
  21. df1=fs/Nfft1;  % [0,fs) 频点间隔
  22. figure(2);
  23. plot((0:Nfft-1)*df,Aw,'-r');
  24. hold on
  25. plot((0:Nfft1-1)*df1,Aw1);
复制代码


发表于 2017-1-9 09:38 | 显示全部楼层
本帖最后由 hcharlie 于 2017-1-9 18:17 编辑

频率分辨率是采样时间的倒数,不能随便改变。
将你的数据分成10组,每组10000点,整1秒,做FFT(DFT)分辨率都是1HZ。将这10组数据做谱平均,还可以抑制噪声。
如果你又不想做DFT,只想做FFT,频率分辨率又必须是1,请你将采样频率改成2的整数幂,接近10000取8192,采样点81920点,如上法炮制即可。



发表于 2017-1-10 09:31 | 显示全部楼层
补零可以解决吗

点评

详见24楼的解释。  发表于 2017-1-21 11:34
补零就不是原信号了,会带来误差。  发表于 2017-1-10 10:58
发表于 2017-1-10 11:06 | 显示全部楼层
补零就不是原信号了,会带来误差。

点评

补零的误差24楼有演示。  发表于 2017-1-20 21:36
还在坚持错误啊?  发表于 2017-1-18 21:24
发表于 2017-1-11 09:06 | 显示全部楼层
频率分辨率=采样频率/DFT点数采样长度N的选择由频域的最小分辩率决定,DFT的变换对应的模拟频率分辩率为:
wxid_kpnygglfe5ou22_1484096683881_52.png
采样长度根据下式选择
wxid_kpnygglfe5ou22_1484096761545_33.png

 楼主| 发表于 2017-1-11 23:33 | 显示全部楼层
hcharlie 发表于 2017-1-9 09:38
频率分辨率是采样时间的倒数,不能随便改变。
将你的数据分成10组,每组10000点,整1秒,做FFT(DFT)分辨 ...

因为在LMS测试软件中,频率分辨率可以随意调整,所以想在matlab中实现,但不知到怎么处理
发表于 2017-1-12 08:44 | 显示全部楼层
改变采样长度试试
发表于 2017-1-12 09:30 | 显示全部楼层
fft需要以2^n的点数分析。如1024,2048。
可以分段平均。
 楼主| 发表于 2017-1-12 20:22 | 显示全部楼层
有没有分段计算fft然后平均的函数?
 楼主| 发表于 2017-1-12 20:37 | 显示全部楼层
spectrogram这个函数可以吗?

点评

这是什么函数 用于分段计算的吗  详情 回复 发表于 2017-1-13 08:20
 楼主| 发表于 2017-1-12 22:08 | 显示全部楼层
hcharlie 发表于 2017-1-9 09:38
频率分辨率是采样时间的倒数,不能随便改变。
将你的数据分成10组,每组10000点,整1秒,做FFT(DFT)分辨 ...

spectrogram这个函数可以这个问题吗?大神
发表于 2017-1-13 08:20 | 显示全部楼层
z527883588 发表于 2017-1-12 20:37
spectrogram这个函数可以吗?

这是什么函数  用于分段计算的吗
发表于 2017-1-13 08:21 | 显示全部楼层
spectrogram
功能:使用短时傅里叶变换得到信号的频谱图。
语法:
     [S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
     [S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
说明:当使用时无输出参数,会自动绘制频谱图;有输出参数,则会返回输入信号的短时傅里叶变
      换。当然也可以从函数的返回值S,F,T,P绘制频谱图,具体参见例子。
参数:
x---输入信号的向量。默认情况下,即没有后续输入参数,x将被分成8段分别做变换处理,
    如果x不能被平分成8段,则会做截断处理。默认情况下,其他参数的默认值为
        window---窗函数,默认为nfft长度的海明窗Hamming
        noverlap---每一段的重叠样本数,默认值是在各段之间产生50%的重叠
        nfft---做FFT变换的长度,默认为256和大于每段长度的最小2次幂之间的最大值。
               另外,此参数除了使用一个常量外,还可以指定一个频率向量F
        fs---采样频率,默认值归一化频率
Window---窗函数,如果window为一个整数,x将被分成window段,每段使用Hamming窗函数加窗。
         如果window是一个向量,x将被分成length(window)段,每一段使用window向量指定的
         窗函数加窗。所以如果想获取specgram函数的功能,只需指定一个256长度的Hann窗。
Noverlap---各段之间重叠的采样点数。它必须为一个小于window或length(window)的整数。
           其意思为两个相邻窗不是尾接着头的,而是两个窗有交集,有重叠的部分。
Nfft---计算离散傅里叶变换的点数。它需要为标量。
Fs---采样频率Hz,如果指定为[],默认为1Hz。
S---输入信号x的短时傅里叶变换。它的每一列包含一个短期局部时间的频率成分估计,
    时间沿列增加,频率沿行增加。
    如果x是长度为Nx的复信号,则S为nfft行k列的复矩阵,其中k取决于window,
        如果window为一个标量,则k = fix((Nx-noverlap)/(window-noverlap))
        如果window为向量,则k = fix((Nx-noverlap)/(length(window)-noverlap))
    对于实信号x,如果nfft为偶数,则S的行数为(nfft/2+1),如果nfft为奇数,
    则行数为(nfft+1)/2,列数同上。
F---在输入变量中使用F频率向量,函数会使用Goertzel方法计算在F指定的频率处计算频谱图。
    指定的频率被四舍五入到与信号分辨率相关的最近的DFT容器(bin)中。而在其他的使用nfft
    语法中,短时傅里叶变换方法将被使用。对于返回值中的F向量,为四舍五入的频率,其长度
    等于S的行数。
T---频谱图计算的时刻点,其长度等于上面定义的k,值为所分各段的中点。
P---能量谱密度PSD(Power Spectral Density),对于实信号,P是各段PSD的单边周期估计;
    对于复信号,当指定F频率向量时,P为双边PSD。
    P矩阵的元素计算公式如下P(I,j)=k|S(I,j)|2,其中的的k是实值标量,定义如下
        对于单边PSD,计算公式如下,其中w(n)表示窗函数,Fs为采样频率,在0频率和奈奎斯特
        频率处,分子上的因子2改为1;

 楼主| 发表于 2017-1-15 21:20 | 显示全部楼层
失心控 发表于 2017-1-13 08:21
spectrogram功能:使用短时傅里叶变换得到信号的频谱图。语法:     [S,F,T,P]=spectrogram(x,window,nover ...

是不是分段计算FFT?

点评

如楼上介绍 感觉应该是分段计算  详情 回复 发表于 2017-1-19 12:59
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-28 13:50 , Processed in 0.117127 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表