社区
数据结构与算法
帖子详情
FFT变换数据不够2的次幂时咋解决。
yihuagongzi
2010-12-01 03:10:59
如题,我采集一周数据,比如1995个数据,不够2048个数据,那咋补零呢,
我采集数据为X[1995]={120,125,123,,,,,,,,,,,,121,120},把X[1996]-X[2048]都赋值为120吗?
另外如果我一周期采集为2050个点,我是否也把2051到4096都赋值为2050对应的数值吗?
...全文
3094
23
打赏
收藏
FFT变换数据不够2的次幂时咋解决。
如题,我采集一周数据,比如1995个数据,不够2048个数据,那咋补零呢, 我采集数据为X[1995]={120,125,123,,,,,,,,,,,,121,120},把X[1996]-X[2048]都赋值为120吗? 另外如果我一周期采集为2050个点,我是否也把2051到4096都赋值为2050对应的数值吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lemonlinger
2011-06-22
打赏
举报
回复
[Quote=引用 15 楼 fancymouse 的回复:]
>用一个全部是正数的模板来测试一下,返回的 FFT 结果会是正负相间的
乃这模板真胡扯。原数据正数只保证FFT的常数系数是正数。正确的图像就应该是有负的,而且不是什么相间,应该是近似随机出现正负。
[/Quote]
“正确的图像就应该有负的。”
那怎么得到原图像的值呢,为什么补零后使用matlab的函数fft变换之后,再反变换能得到和原图像一样的值呢
yihuagongzi
2011-04-15
打赏
举报
回复
谢谢大家踊跃回复,经过这几个月的学习FFT,已经问题解决了,补0只不过在原来频率基础上进行频率、幅值的插值,对原频率的幅值没有影响,但是一定要找准原频率就可以了,还有FFT需要2的n次幂的数据,限制很多采集,建议用DFT,这样比较容易理解和准确。
cnmhx
2010-12-18
打赏
举报
回复
如果你的目的仅仅是数据压缩之类的,那在原始数据两端或任何一端填0即可。
但是假如你要对变换的数据进行专业分析,则这样做就有弊端。
zhoujk
2010-12-17
打赏
举报
回复
[Quote=引用 14 楼 karen99 的回复:]
,我们补其它数反回来就是其它的信号,他们其实都不是真正的原始信号,上面有同学说补镜象值,不知道效果怎样,但是在图象处理里,我试过平滑边界,效果好很多,也就是说做FFT千万不要做边界变化很大的信号,那样失真很大,因为周期延拓后高频成分很大。
[/Quote]
那我们把数据放在中间,两侧用0来补齐,岂不是更好?
cnmhx
2010-12-07
打赏
举报
回复
补够零呗!
如果你的数据具有特殊的边界条件,譬如周期的,或者对称的,可以在数据头尾相应处理。
SomethingWrong
2010-12-07
打赏
举报
回复
楼主是不是这个意思?
数据里连续采集的。一个周期的采样次数n,不是2的整数幂。
如果是这样的话可以考虑先作插值计算,把2050个数变成2048个数。
SomethingWrong
2010-12-07
打赏
举报
回复
楼主是不是这个意思?
数据里连续采集的。采样一个周期的采样次数n,不是2的整数幂。
如果是这样的话可以考虑先作插值计算,把2050个数变成2048个数。
nicklisir
2010-12-04
打赏
举报
回复
关注,我数学不好
zhoujk
2010-12-03
打赏
举报
回复
[Quote=引用 8 楼 karen99 的回复:]
这位同学提醒了我,如果直接补0会不会引入高频成分呢,是补零好还是补120也就是最后一个数值好呢
[/Quote]
按冈萨雷斯版的《数字图像处理》一书的说法,是补0,而且我做过IFFT,得到的结果和源结果相同。至于在 FFT 结果中的不同,就真的没法说了。如果你试了,请把结果给我说一下,OK?
FancyMouse
2010-12-03
打赏
举报
回复
>用一个全部是正数的模板来测试一下,返回的 FFT 结果会是正负相间的
乃这模板真胡扯。原数据正数只保证FFT的常数系数是正数。正确的图像就应该是有负的,而且不是什么相间,应该是近似随机出现正负。
karen99
2010-12-03
打赏
举报
回复
zhoujk,我又跟着你跑这里来了:)
根据我对付立叶变换的理解,我们对某一有限信号做FFT都是这个信号的周期延拓的付立叶变换,而我们只看其中的一个周期,反变换当然就是这个周期的信号了,不管补0还是其它.我们补0反回来就是0,我们补其它数反回来就是其它的信号,他们其实都不是真正的原始信号,上面有同学说补镜象值,不知道效果怎样,但是在图象处理里,我试过平滑边界,效果好很多,也就是说做FFT千万不要做边界变化很大的信号,那样失真很大,因为周期延拓后高频成分很大。
不知道我说清楚了没有:)
[Quote=引用 12 楼 zhoujk 的回复:]
引用 8 楼 karen99 的回复:
这位同学提醒了我,如果直接补0会不会引入高频成分呢,是补零好还是补120也就是最后一个数值好呢
按冈萨雷斯版的《数字图像处理》一书的说法,是补0,而且我做过IFFT,得到的结果和源结果相同。至于在 FFT 结果中的不同,就真的没法说了。如果你试了,请把结果给我说一下,OK?
[/Quote]
zhoujk
2010-12-02
打赏
举报
回复
[Quote=引用 10 楼 fancymouse 的回复:]
>如果直接补0会不会引入高频成分呢
所以有一种做法是,拿最后一段数据镜像以后填充到后面,比如结尾是123,122,121,120,要填充3个数据,那就填充121,122,123。当然俺个人觉得这个没啥用。
>但是FFT正逆变换之后,原来负值都变为正值了
要么是实现渣了,要么有溢出问题
[/Quote]
用一个全部是正数的模板来测试一下,返回的 FFT 结果会是正负相间的,即 +-+-+-+-+-... 为了显示出正确的图像,一般采用的方法是乘以一个 +1-1+1-1 的模板。如果进行 iFFT 运算,则需要在运算运算后乘以这个模板,否则和源数据不符合。
FancyMouse
2010-12-02
打赏
举报
回复
>如果直接补0会不会引入高频成分呢
所以有一种做法是,拿最后一段数据镜像以后填充到后面,比如结尾是123,122,121,120,要填充3个数据,那就填充121,122,123。当然俺个人觉得这个没啥用。
>但是FFT正逆变换之后,原来负值都变为正值了
要么是实现渣了,要么有溢出问题
yihuagongzi
2010-12-02
打赏
举报
回复
[Quote=引用 8 楼 karen99 的回复:]
这位同学提醒了我,如果直接补0会不会引入高频成分呢,是补零好还是补120也就是最后一个数值好呢
[/Quote]
====================================================================
是呀,到底是该补0,还是补120呢,哪个能真实反映波形呢,
还有个问题,就是如果 初始数据有负值,但是FFT正逆变换之后,原来负值都变为正值了,这是怎么回事,
karen99
2010-12-01
打赏
举报
回复
这位同学提醒了我,如果直接补0会不会引入高频成分呢,是补零好还是补120也就是最后一个数值好呢
zhoujk
2010-12-01
打赏
举报
回复
不对,我看错了,是把 [1996]-[2048]都赋值为0
zhoujk
2010-12-01
打赏
举报
回复
[Quote=引用楼主 yihuagongzi 的回复:]
如题,我采集一周数据,比如1995个数据,不够2048个数据,那咋补零呢,
我采集数据为X[1995]={120,125,123,,,,,,,,,,,,121,120},把X[1996]-X[2048]都赋值为120吗?
另外如果我一周期采集为2050个点,我是否也把2051到4096都赋值为2050对应的数值吗?
[/Quote]
对啊,就这么做。你可以用逆运算来检查一下,这么做的话,返回的结果和修补后的输入是一样的。
yihuagongzi
2010-12-01
打赏
举报
回复
[Quote=引用 4 楼 litaoye 的回复:]
信号分析这块儿我不懂,我说的是多项式乘法的,不过应该差不多,你试试吧!
引用 3 楼 yihuagongzi 的回复:
引用 1 楼 litaoye 的回复:
把前面补0就可以了!
=================================
怎么个补法?说详细点好吗?
前面指什么?
[/Quote]
==================================================
还是不懂,希望高手来帮忙。
绿色夹克衫
2010-12-01
打赏
举报
回复
信号分析这块儿我不懂,我说的是多项式乘法的,不过应该差不多,你试试吧!
[Quote=引用 3 楼 yihuagongzi 的回复:]
引用 1 楼 litaoye 的回复:
把前面补0就可以了!
=================================
怎么个补法?说详细点好吗?
前面指什么?
[/Quote]
yihuagongzi
2010-12-01
打赏
举报
回复
[Quote=引用 1 楼 litaoye 的回复:]
把前面补0就可以了!
[/Quote]
=================================
怎么个补法?说详细点好吗?
前面指什么?
加载更多回复(1)
ZYNQ PL采集AD7606
数据
用做
FFT
变换
ZYNQ PL采集AD7606
数据
用做
FFT
变换
信号
数据
的
FFT
变换
信号
数据
的
FFT
变换
摘自书中 供参考。
任意点数序列的
FFT
变换
改程序可以实现任意点数的
FFT
变换
,通过开始的输入
数据
个数,程序自动读取接下来输入的实部虚部,然后扩充为2的整数
次
方的的
数据
再进行DIT-
FFT
ADC采样
FFT
变换
_adc
fft
_stm32adc采集
fft
变换
_ADC
FFT
_源码
stm32进行adc采集并进行
fft
变换
FFT
变换
简单的
FFT
变换
,应该算是二维的自己写写的,仅供参考
数据结构与算法
33,025
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章