【发布时间】:2023-03-25 01:39:01
【问题描述】:
很抱歉提出一个基本问题。我是信号处理新手,想了解 PSD 和 fft 的区别。
我有一个音频信号。我通过在 matlab 中使用 pwelch 将其转换为 PSD。但是,当我绘制这个信号时,我想查看 x 轴的频率 (hz) 和 y 轴的能量 (db)。
但是,它不是这样显示的。
谁能解释一下PSD和FFT之间的关系,也请告诉我,如何绘制这两个东西。
谢谢
【问题讨论】:
很抱歉提出一个基本问题。我是信号处理新手,想了解 PSD 和 fft 的区别。
我有一个音频信号。我通过在 matlab 中使用 pwelch 将其转换为 PSD。但是,当我绘制这个信号时,我想查看 x 轴的频率 (hz) 和 y 轴的能量 (db)。
但是,它不是这样显示的。
谁能解释一下PSD和FFT之间的关系,也请告诉我,如何绘制这两个东西。
谢谢
【问题讨论】:
简单地说(第一遍),FFT 是一种实现离散傅里叶变换 (DFT) 的算法。 DFT 取输入信号的 N 个点并执行傅立叶变换。绘制 FFT 输出幅度的平方后得到信号的功率谱。
所以,DFT 将 N 个点作为输入,吐出 N 个点作为输出。如果您将信号视为包含 N 个样本的帧,则 DFT 仅使用一帧(N 个点)来查找统计信息。
但是,pwelch 方法是多帧的平均统计量。信号可以是一个长度很长的信号(比如 L),它的长度比 N 大很多倍。pwelch 方法从计算前 N 个样本的 DFT 开始,然后继续查看接下来的 N 个样本和依此类推,直到查看完所有“框架”。所以,剩下的就是长度为 N 的信号的样本大小为 N 的每一帧的 DFT。比如说,N 是 256 点,L 是 44100 点。
因此,pwelch 取 L 个点 (L > N),并为长度为 L 的信号的每个长度为 N 的“帧”吐出 N 个点。
还有更多细节涉及开窗以及您是否希望连续帧具有一些相互重叠的样本等等。
我希望这有助于作为第一次通过的解释。
【讨论】: