傅里叶变换(FFT)在进行信号频谱分析时的单位

72
我的问题与对信号进行频谱分析或将信号输入FFT并使用适当的数字包来解释输出结果的物理意义有关。
具体而言:
- 取一个信号,比如时间变化的电压v(t) - 将其输入FFT(得到一串复数) - 现在取模(abs)并平方结果,即|fft(v)|^2。
因此,现在您在y轴上拥有实数 - 我可以称这些为频谱系数吗?
- 使用采样分辨率,您按照食谱配方将频谱系数与频率相关联。 - 在此时,您拥有带有频率的频谱g(w)在x轴上,但是y轴上有什么物理单位?
我理解的是,这个频率谱显示了电压信号中存在多少不同频率 - 它们是频谱系数,因为它们是正弦和余弦的系数,用于重建原始信号。
因此,第一个问题是,这些频谱系数的单位是什么?
之所以这很重要,是因为频谱系数可能很小或很大,因此我想使用dB刻度来表示它们。
但是要做到这一点,我必须做出选择:
- 要么我使用20log10 dB转换,对应于场测量,例如电压。 - 要么我使用10log10 dB转换,对应于能量测量,例如功率。
我使用哪种缩放取决于单位是什么。
对此的任何解释都将不胜感激!

4
注意,在以f为变量的傅里叶变换(而不是FFT)中,单位是[V.s](如果信号以伏特为单位,时间以秒为单位)。这是因为在积分时,结果的单位为y轴单位乘以x轴的单位(寻找曲线下面的区域)。此外,一个信号的平方的积分在时域和频域中是相同的(Parseval定理)。左边的单位是[V^2.s],右边的单位是[X^2.(1/s)](其中f以Hz为单位),因此X=[V.s]。参见http://physics.stackexchange.com/questions/15073/how-does-the-fourier-transform-invert-units - Evgeni Sergeev
@EvgeniSergeev - 谢谢您,这是一个很好的对基本傅里叶变换的解释,并与底层数学相关联(+1)。 - Assad Ebrahim
我投票关闭此问题,因为它属于物理学 - BryanH
10
6年后,不确定关闭它是否会增加太多价值。请记住,该网站在早期是非常不同的。首先,当时Stack Overflow是唯一的选择。从问题和答案的回应来看,SO的读者仍然有很多工程师。恕我直言,我建议保持现状,不要关闭它。 - Assad Ebrahim
5个回答

88

取一个信号,一个随时间变化的电压v(t)

单位为 V,值为实数。

将其输入FFT - 好的,你会得到一系列复数

单位仍为 V,值为复数(不是 V/Hz - FFT中的直流信号变成了直流电平的点,而不是一个朝着无穷大飞去的狄拉克δ函数)

现在取模(abs)

单位仍为 V,值为实数 - 信号分量的幅度

并平方结果,即|fft(v)|^2

单位现在为 V2,值为实数 - 信号分量幅度的平方

我应该称这些为频谱系数吗?

更接近于功率密度而不是通常使用的频谱系数。如果您的负载是完美的电阻,则它将是功率,但如果您的负载是频率依赖的,则为“输入电压的FFT的幅度的平方”。

此时,您有一个频谱g(w):x轴上的频率,以及...在y轴上是什么物理单位?

单位为 V2

另一个原因是单位很重要,因为频谱系数可能非常小或非常大,所以我想使用dB比例尺来表示它们。但是为了做到这一点,我必须做出选择:我是否使用20log10 dB转换(对应于场测量,如电压)?还是使用10log10 dB转换(对应于能量测量,如功率)?

您已经平方了电压值,相当于向完美的1欧姆电阻器提供等效功率,因此请使用10log10。

log(x2)2 log(x),因此 20log10 |fft(v)| = 10log10 ( |fft(v)|2),因此如果您没有平方值,则可以使用20log10。


Pete,谢谢! 当你输入回复时,我正在编辑推导。我得到了每赫兹的能量(见下面的推导)。 - Assad Ebrahim
5
是的,这就是我说“不是V/Hz”的原因——FFT将直流信号计算为一个点,而不是一个无限趋于正无穷的狄拉克函数。FFT计算其输入在离散时间点采样后与无量纲值相乘的总和;FFT结果的单位与其输入相同;在该过程中没有时间或频率的缩放。 - Pete Kirkham
@Pete -- 啊!我明白了。谢谢。那么,“频谱系数”这个术语是否可以正确地应用于fft(v)的复数序列? - Assad Ebrahim
@PeteKirkham 为什么单位不是 V*s 呢?因为傅里叶变换是这样的:S(w) = integral(s(t) * exp(-j*w*t) * dt)。指数项是无单位的,信号 s(t) 的单位是伏特,而 dt 的单位是秒。编辑:啊,也许 FFT 算法特别跳过了 dt 的比例因子。嗯,可能值得在这里提一下。 - jnez71

7

Y轴是复数(与实数相对)。幅度是原始信号的振幅,以您原始样本中的任何单位表示。角度是该频率分量的相位。


1
谢谢Laurence;让我澄清一下:(A)在y轴上我得到了实数值。因此,由于真正的傅里叶变换给出复数值,程序包内部可能正在进行以下操作之一:(i)它正在获取变换的实数值,或者(ii)它正在获取变换的幅度,或者(iii)?(B)原始样本以伏特为单位。 - Assad Ebrahim
2
@AKE,复数的实部本身并不能告诉你太多信息 - 它几乎没有什么用处。你可能想要的是幅值,即 sqrt(r^2 + i^2),或者更容易计算的幅值的平方,省略了 sqrt - Mark Ransom
实部和虚部的单位是什么?相位的单位是什么(指x轴的单位)? - Gulzar
@Gulzar y轴的幅度与原始输入波的y轴单位相同。实部和虚部的单位与幅度相同,但通常独立考虑它们没有太多意义,就像您不会只看距离向量的一个维度一样。相位不是x轴,相位是y在极坐标形式下的角度-360°= 2π弧度= 1个周期。x轴是频率,刻度取决于样本数和采样率。有关x轴的详细信息,请参见此其他问题:https://dev59.com/YG855IYBdhLWcg3wZzbf - Laurence Gonsalves

5
这是我目前想到的内容:
纵轴很可能以[能量/赫兹]为单位!?这是我的推导过程(欢迎反馈!):
1. 信号v(t)以伏特为单位 2. 因此,在进行傅里叶积分后:积分e^iwt v(t) dt,我们应该有[伏特*秒]或[伏特/赫兹]的单位(e^iwt无单位) 3. 取幅值平方应该得到[伏特^2 * 秒^2]或[v^2 * 秒/赫兹]的单位 4. 我们知道功率与伏特^2成正比,因此这使我们得到了[功率*秒/赫兹] 5. 但是功率是能量的时间变化率,即功率=能量/秒,因此我们还可以写出能量=功率*秒 6. 这让我们得出[能量/赫兹]的候选结论。 (焦耳/赫兹?!)
这表明“每赫兹的能量含量”的含义,并建议使用积分频带并查看能量含量...如果这是真的,那将非常好...
继续...假设以上内容正确,则我们正在处理能量测量,因此这将建议使用10log10转换进入dB比例尺,而不是20log10...

除了它不是能量/功率本身之外,一切看起来都很好。除非你有一个特定的电阻在脑海中,否则你不应该撒谎并且只说它是伏特的平方。 - Victor Liu
我心中有一个理想的50欧姆电阻(用于匹配投影仪的传输设备阻抗)。P~V^2/R,其中R被视为50欧姆常数负载。 - Assad Ebrahim
1
@AssadEbrahim 这是一个旧的回复,所以不确定你是否还在,但这看起来很好!此外,我相信能量是 $\Sum_{k=0}^{N-1}x[n]^2$,而功率是 $\frac{1}{N}\Sum_{k=0}^{N-1}x[n]^2$。因此,如果我们通过长度(即样本的时间持续时间)对FFT进行归一化,最终会得到功率谱密度。这对你有意义吗? - Dan Boschen
我不完全确定你的特定应用,但是在第二点中进行傅里叶积分时,你是否应该在前面包括归一化常数,单位为秒^-1? - Louis

3
电阻器消耗的功率为 v^2/R 瓦特。 信号 x(t) 的功率是电阻值为 1 Ohm 时的功率抽象值。 因此,信号 x(t) 的功率为 x^2 (也称瞬时功率),不考虑 x(t) 的物理单位。
例如,如果 x(t) 是温度,且 x(t) 的单位是摄氏度,则 x^2 的功率单位为 C^2,而不是瓦特。
如果对 x(t) 进行傅里叶变换以获取 X(jw),则 X(jw) 的单位为 C*secC/Hz(根据傅里叶变换积分)。 如果使用 (abs(X(jw)))^2,则单位为 C^2*sec^2=C^2*sec/Hz。由于功率单位为 C^2,能量单位为 C^2*sec,因此abs(X(jw)))^2 给出能量谱密度,记作 E/Hz。这与 Parseval 定理一致,其中 x(t) 的能量由 (1/2*pi) 乘以 abs(X(jw)))^2w 进行积分得到,即 (1/2*pi)*int(abs(X(jw)))^2*dw) > (1/2*pi)*(C^2*sec^2)*2*pi*Hz > (1/2*pi)*(C^2*sec/Hz)*2*pi*Hz > E
将其转换为 dB(对数)刻度不改变单位。
如果你对样本 x(t) 进行FFT,写成 x(n) 形式,得到结果X(k),这个结果X(k)是一个周期性函数的傅里叶级数系数的估计值,其中一个周期在 T0 秒内是 x(t) 被采样的段。如果 x(t) 的单位为度 C,那么 X(k) 的单位也是度 Cabs(X(k))^2 的单位是 C^2,即功率的单位。因此,绘制 abs(X(k))^2 关于频率的图表显示了x(n) 的功率谱(而不是功率谱密度),它估计了在频率 k/T0 Hzx(t) 的一组频率分量的功率。

2

我知道回答晚了。但是我最近在不同的情况下需要做类似的事情。我的原始数据是针对存储单元的事务延迟值 - 我将其重新采样为1毫秒时间间隔。因此,原始数据y是“延迟,以微秒为单位”。我有2 ^ 18 = 262144个原始数据点,每个点之间相差1毫秒。

在进行FFT后,我得到了一个0th分量(DC),使得以下内容成立:

FFT [0] = 262144 *(所有输入数据的平均值)。

所以对我来说,FFT [0]是N *(输入数据的平均值)。这有点合理 - 每个数据点都具有该DC平均值作为其一部分,因此您将它们全部加起来。

如果您查看FFT的定义,这也是有意义的。所有其他组件也涉及正弦和余弦项,但实际上FFT只是求和。平均值只是唯一一个在所有点中都存在的值,因为cos(0)= 1。


因此,要完成这个想法,单位必须相同,因为FFT分量只是输入分量乘以无量纲正弦和余弦项的总和。 - Kip Ingram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接