搜索
bottom↓
回复: 10

有研究FFT的么?分辨率小于1HZ是不是采样时间必须大于1s?

[复制链接]

出0入0汤圆

发表于 2015-8-18 09:06:21 | 显示全部楼层 |阅读模式
最近在做定点FFT,网上找了些资料,关于分辨率的计算都是:
分辨率=采样率/采样点数
按这样计算,假如用512HZ的采样率采样512点做FFT,那分辨率就是1HZ;
512HZ采样256点做FFT,那分辨率就是2HZ;
那如果我现在想要0.5HZ的分辨率,按上面计算的话,
512HZ的采样率采样1024个点,这样的话,采样时间就需要2s,
那岂不是说,FFT的速度,反而计算花的时间不是很多(例如STM32,24MHZ,计算1024点才要4.174ms),多的是在采样上了,
小于1HZ的分辨率,采样时间都要大于1S?

不知我理解的对不对,有什么办法让小于1HZ的分辨率,采样小于1s呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。

出0入4汤圆

发表于 2015-8-18 09:23:13 | 显示全部楼层
0.5Hz的信号 2秒钟才一个完整周期,即便不用FFT,想要还原这0.5Hz的信号,也要至少采集2秒的数据啊。
反正传统方法就是这个样的。

至于有没有其他的办法,等高手解答吧。

出350入477汤圆

发表于 2015-8-18 09:31:03 | 显示全部楼层
huchunlei 发表于 2015-8-18 09:23
0.5Hz的信号 2秒钟才一个完整周期,即便不用FFT,想要还原这0.5Hz的信号,也要至少采集2秒的数据啊。
反正 ...

没错,原理上就是这样的。
无论如何,至少都得采到完整的一个周期。不能更少了。
你在前半个周期内就算采了再多的点,怎么知道后半个周期的波形是啥样的??

出0入0汤圆

 楼主| 发表于 2015-8-18 09:46:25 | 显示全部楼层
redroof 发表于 2015-8-18 09:31
没错,原理上就是这样的。
无论如何,至少都得采到完整的一个周期。不能更少了。
你在前半个周期内就算采 ...

网上搜提高分辨率,有人说用补零,不过零也是数据,补零后信号就变了,
但是我想,如果对半补数呢?
比如512HZ采1024个数,前512个数和后512个数一样,
这样有了1024个数,但是只采了512次,不知这样分辨率会降多少,应该比补零好很多吧?

出0入0汤圆

发表于 2015-8-18 11:05:43 | 显示全部楼层
motoedy 发表于 2015-8-18 09:46
网上搜提高分辨率,有人说用补零,不过零也是数据,补零后信号就变了,
但是我想,如果对半补数呢?
比如 ...

补零提高的不是实际有效分辨率,只是显示分辨率而已

比如假设有两个信号,为110Hz和111Hz,采样率为1KHz,实际采样200个点,补零到1K个,这样fft的step确实是1Hz,但是还是没法分辨出110Hz和111Hz,只会看到一个峰值而已

出0入0汤圆

发表于 2015-8-18 11:15:42 | 显示全部楼层
本帖最后由 一天的蓝 于 2015-8-18 11:19 编辑

sample time = N/fs = 1/(fs/N) 一般的 分辨率和采样时间互为倒数,采样补0这类方法会导致频谱泄露,我想 lz需要的是数据输出速率ODR>1hz 所以无需采样完成,只要保证每次运算中是连续的fs个采样点即可

例:
0s : fft(y(-0.5,0.5))
0.5s : fft(y(0,1))
1s : fft(y(0.5,1.5))
...

编辑原因:补充回答

出350入477汤圆

发表于 2015-8-18 12:43:49 | 显示全部楼层
一天的蓝 发表于 2015-8-18 11:15
sample time = N/fs = 1/(fs/N) 一般的 分辨率和采样时间互为倒数,采样补0这类方法会导致频谱泄露,我想 l ...

除第一次之外,以后当然可以这么干
反正结果你拿来计算FFT所用的数据确实还是长度超过1秒的啊,没有违反物理规则。

出0入0汤圆

发表于 2015-8-18 13:08:50 | 显示全部楼层
欠采样技术以低于奈奎斯特采样频率 K 倍的采样频率进行无失真的采样过程。从频域上分
析 , 信号的欠采样过程其实就是原信号频谱沿频率轴的搬移过程 , 要使信号不失真 , 则要求
采样信号频谱在整个频域内不重叠.

出0入0汤圆

 楼主| 发表于 2015-8-18 15:22:12 | 显示全部楼层
一天的蓝 发表于 2015-8-18 11:15
sample time = N/fs = 1/(fs/N) 一般的 分辨率和采样时间互为倒数,采样补0这类方法会导致频谱泄露,我想 l ...

意思是除第一次外,后面的每一秒采的数都和前面的一秒采的数拼接?

出350入477汤圆

发表于 2015-8-18 17:28:05 | 显示全部楼层
motoedy 发表于 2015-8-18 15:22
意思是除第一次外,后面的每一秒采的数都和前面的一秒采的数拼接?

没错。
如果你的应用对于延迟不要求,你还可以再狠一点,缓存之前3秒的数据,加最新一秒,总计4秒的数据来计算FFT,这样可以得到1/4Hz的分辨率
后果是,第一次上电,要等第四秒才能见到正确的数据;如果输入信号的频率改变了,你也要到第四秒才完全刷新。

出0入0汤圆

发表于 2015-8-18 20:05:56 来自手机 | 显示全部楼层
楼主的问题涉及到两个概念,1是耐采样率,2是欠采样。对于第一个,实际上频谱出来是分正负边的,混叠也是,为什么耐氏采样有个1/2,正在于此。你进行1024点fft,实际上只有512个输出频点,因为另512个是负频谱,对于实部来讲是等值的。所以不管你填不填零,信号的频谱分辨率并没有变,只是输入点变多了,输出点自然也变多了,看上去频率点变多了。当然,从感性上也是说得通的,采集越长,记录约丰富。第2点呢,fft本来就不是实时的,而是对一段数据对应的频谱做分析,输入序列的划分本身就是人为的,因此就看你怎么分能充分利用数据了。楼主可以查一下“数值滤波”好像有的书这么叫,就是好比在数据序列里套一个窗口,缓慢移动窗口,计算窗口内的结果,这样即保证了输出分辨率,有不降低输出数据速度,是一种特色的求均值方法。同理用到fft中,就是欠采样
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-27 07:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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