傅里叶级数变换恢复原始信号
Posted
技术标签:
【中文标题】傅里叶级数变换恢复原始信号【英文标题】:Fourier Series Transform Recover Original Signals 【发布时间】:2010-11-21 18:19:51 【问题描述】:假设我有三个复杂的波形(由许多正弦波组成):A、B 和 C。每个都有以下频率:分别为 550、600、700 Hz。
现在我添加三个信号,即叠加得到信号 D。
我的目标是分别取回三个原始信号A、B和C。
我已经绘制了傅里叶频谱,其中我得到了 550、660 和 700 Hz 的主峰。还有其他较小的峰。我如何知道哪些峰值与哪些波形相关联,以便我可以重新创建原始波形 A、B 和 C?谢谢。
【问题讨论】:
【参考方案1】:如果 A、B 和 C 不是纯正弦波,那么如果没有其他信息,您想要做的事情是不可能的。假设 A 是频率为 100 和 200 Hz 的正弦波的总和, B 为 300 和 400 Hz,C 为 500 和 600 Hz。现在考虑具有频率的信号 D 100 和 300 Hz,E 频率为 200 和 500 Hz,F 频率为 400 和 600 Hz, 每个分量与 A、B 和 C 的分量具有相同的相位和幅度。 (A+B+C) 将具有与 (D+E+F) 相同的 FFT,因此您无法区分它们。
【讨论】:
同意。但是当我听三波组合时,我可以清楚地发现有三波。如果我能听到它,那么一定有一种方法可以使用程序来分离波。 @user:也许您正在收听的信号具有特殊属性,可以轻松区分 A、B 和 C 分量——例如A、B 和 C 中的每一个都采用强基波加上一系列较弱谐波的形式。这将属于我在回答中提到的“附加信息”——但正如你所说,这个问题通常无法解决。【参考方案2】:重要的是要意识到您需要在 FFT 之前应用 window function,否则您将在应用到时域数据的隐式矩形窗口的影响下获得频域中的伪影。一个很好的通用窗口函数是Hann (aka Hanning) window。
【讨论】:
【参考方案3】:如果不知道您使用的是哪种技术(DSP 芯片、fftw 等),就不可能为您提供实现细节。但是,是的,应用快速傅立叶变换,然后假设您要在 550、600 和 700 处重建三个纯正弦波,FFT 将为您提供每个的幅度和相位。然后y=a*sin(wt+p)
形式的简单正弦表达式将重建信号。 “a”和“p”是 FFT 的幅度和相位,w=2*pi*f,其中 f 为 550Hz、600Hz 或 700Hz。
【讨论】:
我只是使用快速傅立叶变换的方程和编写代码。主要问题是我不想重建纯正弦波。请记住,每个波 A、B 和 C 都由许多正弦波组成。例如,A 可以是方波,B 可以是三角波等,我的目标是如上所述从信号 D 中重建它们 如果 A、B 或 C 是方波、三角波或除正弦波之外的任何东西,那么您无法仅从频谱中的一个频率重建它。你也需要它的谐波。首先,我建议如果您使用 C/C++/C#/几乎除了嵌入式系统之外的任何东西,您可以使用像 FFTW 这样的 FFT 库。其次,阅读cnx.org/content/m0041/latest。对于 550Hz 波,您必须在 550Hz 处取基波,以及在 2*550、3*550、4*550、5*550 等处取相当数量的谐波。 从傅里叶级数中,每个频率都乘以一个常数因子,就像您正确指出的那样。但是我怎么知道每个频率乘以什么。该因子可以是任何东西,不一定是 2,3,4,5...(就像您在上面指出的那样,即 2*550、3*550...)。请注意,从波形 D 我将需要重建三个信号 A B C,我没有任何先验信息。我只是以方波和三角波为例。但它们可以是任何东西。 如果它们绝对可以是任何东西,那么您的问题就无法解决。但是,如果您将重建限制为可能仅是基于每个基频的谐波的近似值,您可能会得到足够的结果。上面我的意思是你必须检查 FFT 输出的相位和幅度在 550、1100、1650、2200 等处,直到合理数量的谐波(可能是 16。可能更少或更多取决于你的噪声和带宽) .【参考方案4】:您需要添加任何形式的复杂信号吗?他们有模式吗?如果你想检索任何形式的信号,那将是不可能的。但在某些情况下,如果你有限制材料,你可以处理它。例如,在melodyne中,他们可以分离一些音高定义乐器的素材:http://www.youtube.com/watch?v=jFCjv4_jqAY
【讨论】:
像 Reinderien 和你在上面提到的那样,如果我知道 A B 或 C 的模式,就可以实现这一点。但关键是我必须知道它是什么。我刚刚得到波形 D。从那里我需要重建三个信号。当我查看傅里叶频谱时,我确实看到了很多谐波,但我不知道选择哪一个来获得三个波中的每一个,即 A B 或 C。 如果您完全不了解 A、B 或 C,我认为不可能检索它们...A B 或 C 可能是无限的可能信号集!以上是关于傅里叶级数变换恢复原始信号的主要内容,如果未能解决你的问题,请参考以下文章