为什么不能先偶对称延拓信号, 再做FFT不就可以抑制频谱泄漏了???
新人第一次发帖求教, 关于DFT或FFT的频谱泄漏问题, 关键原因在于 DFT或FFT 直接对截取的信号进行周期延拓, 导致在周期延拓后首尾不相接(即跳变)形成频谱泄漏, 那么, 为什么不可以先将信号做偶对称延拓, 再进行DFT或FFT变换呢? 这不是可以在最大程度上抑制频谱泄漏吗?其实, 就是有些不明白, 当初创建离散傅立叶的人们, 对于非周期信号, 既然选择了进行周期延拓, 以此将非周期的信号 处理成 周期的信号, 那么为什么就没有继续再考虑一下, 在周期延拓时, 对于首尾相接处不连续或跳变的情况, 怎么才能在不影响频谱分析的前提下, 让他首尾相接, 减少频谱泄漏, 难道这种问题很难进行解决吗?
比如说先把非周期信号或非整数周期信号, 进行偶对称延拓, 再DFT或FFT, 最多因此得到的频谱有些变形(不会编程, 没做测试, 只是猜测可能会变形), 但是可以处理一下啊, 没道理既然现在可以有很多频谱校正的方法, 偶对称延拓导致的变形就处理不了了? 而且, 从问题的根本处进行解决, 难道不好吗?
先好好学学基础理论吧。
所谓(无穷)周期延拓是开了矩形窗以后不得已必然的结果。
你的偶对称延拓或是别的延拓,都改变了原来的信号,可能不是原来的东西了,也就没有人敢去采用了。比如原来一个余弦波,偶延拓以后成了两个余弦波,没有什么关系,但原来就是一个正弦波,一个偶对称延拓变成什么了? 本帖最后由 Dialektik 于 2014-4-24 23:02 编辑
hcharlie 发表于 2014-4-24 20:01
先好好学学基础理论吧。
所谓(无穷)周期延拓是开了矩形窗以后不得已必然的结果。
你的偶对称延拓或是别 ...
谢谢您的回答, 我这段时间是在补充信号处理方面的知识, 重点需要傅立叶谱分析方面的技术, 粗略看了几本教材, 主要是<系统与信号>, <数字信号处理>, 也是后来看贴子的时候才发现会有频谱泄漏这种东西, 经您这么一讲, "周期延拓是开了矩形窗以后不得已必然的结果", 才明白了一点, 我当初能想到偶对称延拓, 也是因为记得偶对称信号的傅立叶变换也是偶对称的, 所以就猜想经过偶对称延拓之后, 除了在偶对称延拓时的边界连接处可能会增加其他的频率成分, 其他的频率成分好像不会发生变化, 这样在傅立叶变换之前的偶对称延拓就可以在很大程度上抑制频谱泄漏, 因为不会写程序, 不知道具体会是什么效果, 所以到论坛上问问, 看看有没有什么问题, 看来是我想错了
那么, 请问老师, 1> 做了频谱校正之后得到的校正频谱, 还能不能用傅立叶反变换恢复得到原数据, 比如说, 对于 使用加汉明窗之类的频谱校正方法 得到的校正频谱, 再使用傅立叶反变换, 得到的信号除以汉明窗的数值, 是不是就是原信号? 或者使用别的恢复处理方法, 可以恢复或得到原信号吗? 2> 对于 基于频域的带通滤波来讲, 有没有必要在进行频域带通滤波之前, 先进行频谱校正处理, 然后再在校正之后的频谱的基础上进行带通滤波, 这样处理 相较于 直接对信号傅立叶变换然后频域带通滤波的方法 是不是 效果要好的多? 我会这么想, 主要是因为在频域滤波时, 因为很有可能会存在严重的频谱泄漏, 某一部分频率成分的能量会泄漏到其他位置, 如果直接进行频域带通滤波的话, 是不是得到的结果会因为频谱泄露而偏差很大, 所以可不可以用频谱校正的方法预先纠正一下?
因为关于信号处理方面的基础比较薄弱, 所以希望老师可以不吝赐教, 也希望看到的朋友可以帮忙解惑, 这两天找了本MATLAB的入门教材, 正在学, 希望可以得到正确的思路后, 编程测试一下
先照书上说的做。这些都是很成熟的东西,先拿来用。 hcharlie 发表于 2014-4-25 09:18
先照书上说的做。这些都是很成熟的东西,先拿来用。
也就是说, 先打牢基础, 再发散思维, 或许是因为我的完美主义倾向再次发作, 想要尽快解决问题而有些急于求成了, 嗯, 感谢您的建议, 看来我应该定下心先吃透书本上的内容比较好些 这几天补充了一些学习资料, 回头复读我在振动论坛所发的第一个问题贴, 果然还是自己思考之后得出的结论才能让自己满意啊
大家都知道, 傅立叶变换的时域和频域之间有很多有趣的性质, 比如, 时域卷积相当于频域相乘, 反之, 频域卷积相当于时域相乘
与之相类似, 可以这么讲, 时间的周期对应于频域的离散, 时间的离散对应于频域的周期, 进而, 时间的离散和周期, 对应于频域的离散和周期, DFT本质上来讲, 是将离散的信号, 做周期延拓之后, 进行傅立叶变换, 然后再截取一个周期, 这样就得到离散信号的频谱, 同理, 反变换其实也是如此, 也是因为DFT采用这样计算方式的原因, 如果信号的两端在周期延拓的连接处不连续, 或者说不光滑, 甚至有时候就算连续或光滑, 也同样是会产生频谱泄漏
那么, 当对信号先做偶对称, 再做周期延拓的DFT变换, 会怎么样呢? 最大的变化, 就是得到的正弦系数全部都为0, 不理解的可以参考余弦函数的傅立叶变换得到的正弦系数全部为0, 其实也就是在说, 任何偶对称的函数可以写成余弦函数的线性组合, 相对于傅立叶变换使用正弦类函数作为分解的基函数, 强调一下, 正弦类函数包括正弦函数和余弦函数, 这样做, 其实就等于, 只使用余弦函数作为分解的基函数, 然后, 同样也可以按照离散的思路, 构造得到使用离散余弦基函数的类傅立叶变换, 而这种类傅立叶变换方式, 在数学上, 叫做离散余弦变换, 或DCT, 我的意思是, 这种先偶对称再做周期延拓然后再变换的思路, 是可行的, 而且早就有人在研究了, 不过, 翻过资料之后, 我发现, 虽然DCT可以通过先偶对称再周期延拓然后再变换的方式进行计算, 一定程度上减少了频率泄漏, 但是还是不能彻底消除频谱泄漏, 不过, DCT有着可以说是让人惊奇的能量聚集效果, 而且其快速计算方法完全可以代替DFT, 而且效果或许会更好些, 所以我就说嘛, 先偶对称再周期延拓进而抑制频谱泄漏的思路, 我这个弱智都可以想出来, 那么多惊才绝艳的数学强人难道就没有思考过吗? 原来是我孤陋寡闻了, 看来以后应该多多学习, 开阔视野才行
对于论坛, 我很失望, 最终还是要自己回答自己的问题, 算是有个交代吧, 唉, 感觉再也不会爱了, 所以你们看着办吧
你这个对称延拓的想法是对的,问题是每次计算只能有部分点可信,需要计算很多次,同时由于无法已知到底该对称延拓到那个周期,所以就没法操作,笼统的计算一下得了。 本帖最后由 Dialektik 于 2014-4-26 22:59 编辑
马社 发表于 2014-4-26 22:03
你这个对称延拓的想法是对的,问题是每次计算只能有部分点可信,需要计算很多次,同时由于无法已知到底该对 ...
感谢您的回复, 以及提出的在实际应用的问题, 对我很有帮助, 我这个人的确有点强迫症, 如果真找不到完美的解决方案, 会考虑您的建议, 笼统计算一下.
如果可以, 这位老师, 能不能看看我在之后提出的两个问题, 就是关于频谱校正之后的恢复, 以及频谱校正对于频域滤波的影响的问题, 希望可以看到您的精辟见解, 谢谢
--------------------------
再次编辑, 为了方便阅读, 将之前的问题摘抄如下, 请您看看我的思路是否正确
"那么, 请问老师, 1> 做了频谱校正之后得到的校正频谱, 还能不能用傅立叶反变换恢复得到原数据, 比如说, 对于 使用加汉明窗之类的频谱校正方法 得到的校正频谱, 再使用傅立叶反变换, 得到的信号除以汉明窗的数值, 是不是就是原信号? 或者使用别的恢复处理方法, 可以恢复或得到原信号吗? 2> 对于 基于频域的带通滤波来讲, 有没有必要在进行频域带通滤波之前, 先进行频谱校正处理, 然后再在校正之后的频谱的基础上进行带通滤波, 这样处理 相较于 直接对信号傅立叶变换然后频域带通滤波的方法 是不是 效果要好的多? 我会这么想, 主要是因为在频域滤波时, 因为很有可能会存在严重的频谱泄漏, 某一部分频率成分的能量会泄漏到其他位置, 如果直接进行频域带通滤波的话, 是不是得到的结果会因为频谱泄露而偏差很大, 所以可不可以用频谱校正的方法预先纠正一下?"
的确有点强迫症,但是喜欢钻研的人都是这样的。
周期信号只是非周期信号的一个特例,就像线性和非线性、中国人和外国人。
如果已知加的什么窗,加窗数据长度,并且记录fft的复数计算结果,反算回去当然是一字不差的。
一旦加窗,无论反算什么系数,频谱误差都是很大的,除非原始信号是严格的各态历经、平稳随机。
带通滤波器有确定的理论公式,不会有问题,就是有问题也知道是什么问题,但是从频谱中删掉一些频段再反算fft应该属于作弊,失真是必然的。
如果你只关心最大的几个周期信号的峰值频点,不加窗可以保真,甚至一字不差,如果你关心更多细节,加窗可以减少泄漏影响,增大频谱的信噪比,但是每个峰值都不准确。
取舍最难。 马社 发表于 2014-4-27 10:32
的确有点强迫症,但是喜欢钻研的人都是这样的。
周期信号只是非周期信号的一个特例,就像线性和非线性、中 ...
看过您的回复, 加深了我的现有理解, 再次感谢您的不吝赐教, 没想到在实际的工程应用中, 并非像理想的数学公式那样, 想要解决问题, 就得在各种优点和缺点之间做出选择, 而我要做的是严格的实时的带通滤波, 想了又想最终还是不能接受您提到的时域滤波所附带的时间延迟, 虽然频域滤波近似作弊, 而且在频域乘以矩形窗等价于在时域与sinc函数做卷积, 导致滤波后的波形变形失真, 但胜在可以实时操作, 我也只能接受了, 嗯, 貌似可以在滤波之后, 在时域做做离散反卷积, 一定程度消除失真
不过, 我还真的没想到加窗进行频谱校正依然还会存在很多问题, 之前为了解翻阅了一些资料, 看到很多人热衷于研究那么多稀奇古怪的变态窗口, 却对弊端和缺点只字未提, 曾经让我产生了这项高大上的技术很好很强大的错觉, 或许还是不用加窗会相对比较好些, 没想到最终回到了原点, 本来其实只是想减少一些频谱泄漏, 居然会这么难, 科技要是能再发达点就好了, 唉, 我这辈子不见得能指望上了... 本帖最后由 hcharlie 于 2014-4-27 18:38 编辑
你要的无误差的结果,无论是随机还是周期信号,只能是存在时间无穷域里。工程计算只能在有限域进行,无限变有限只能加窗,矩形窗,hanning窗等等,所以误差是必然的,不同的领域选用不同的窗将误差减到最小。彻底消除泄漏只有回到无穷域!
除以窗函数是绝对不可能的,因为窗函数绝大部分是另!
频谱校正本身就是近似操作,再返回去也得不到精确。
不要走不必要的弯路。
本帖最后由 Dialektik 于 2014-4-27 23:54 编辑
hcharlie 发表于 2014-4-27 18:36
你要的无误差的结果,无论是随机还是周期信号,只能是存在时间无穷域里。工程计算只能在有限域进行,无限变 ...
我毕竟不是学信号处理专业的, 所知道的和您相比很有限, 短时间内我看过的书上对频谱泄漏所提及的内容非常少, 更多的了解还是通过网络搜索得来的
1>无法彻底消除频谱泄漏这点基本上明白了, "不同的领域选用不同的窗将误差减到最小", 完全举双手赞同, 不过好像加窗也不见得就是唯一的频谱校正的方法吧, 工程上倒是用的挺多, 至少论坛里面不是还有一个全相位appFFT吗?
2>不太明白为什么反除窗函数绝对不可能, 比如矩形窗, 汉明窗之类, 绝大部分的确是零, 可是与加窗的部分信号对应的那一小部分不是零啊? 在做过频谱校正之后, 再IFFT得到的数据难道不应该是在窗函数的非零值的范围内吗? 当然, 这个问题讲起来估计会很麻烦, MATLAB我现在勉强可以上手了, 有时间我会动手实践看看到底怎么回事
3> "频谱校正本身就是近似操作,再返回去也得不到精确", 原来我不清楚频谱校正的作用, 以及使用条件, 所以才会异想天开地将其与信号的处理结合起来, 现在看来, 频谱校正, 主要是用来看的, 或者说识别分析频谱的, 与信号的处理结合起来不会产生太大的优势
现在已经认识到频谱校正并不是我所需要的, 此路不通, 也不再关心什么频谱校正的方法了, 之前不了解情况, 不知道频谱校正不是为了信号处理, 当时我也只是想先确定一下基本思路, 如果不讲出来也就不会知道自己究竟是不是错的, 所以, 真心感谢您一再指正, 告诉了我方向, 也请原谅我的部分质疑, 如果不搞清楚怎么回事我也确实是不会放弃的, 现在回头再理理思路, 您说的对, 还是参照书上的方法做是正确的, 这样我就清楚该怎么做了 本帖最后由 Dialektik 于 2014-4-28 00:19 编辑
Dialektik 发表于 2014-4-26 21:44
这几天补充了一些学习资料, 回头复读我在振动论坛所发的第一个问题贴, 果然还是自己思考之后得出的结论才能 ...问题解决, 皆大欢喜, 可以睡了, 哈哈...
偶对称延拓处本身就不连续
页:
[1]
2