关于使用matlab fft的数学示例的额外说明
有人能解释为什么fft的结果需要除以采样点的数量(信号的长度)吗 示例可在此页面上找到: 为什么包括此操作:关于使用matlab fft的数学示例的额外说明,matlab,fft,Matlab,Fft,有人能解释为什么fft的结果需要除以采样点的数量(信号的长度)吗 示例可在此页面上找到: 为什么包括此操作:P2=abs(Y/L) 他们对链接中的每个示例都这样做 此外,如果在每次fft计算后必须执行该操作,为什么不将该操作直接包含在内置fft函数中? 在某些情况下,最好不要做额外的手术 谢谢 从DFT及其逆函数的定义中可以看出(来自维基百科): DFT及其逆函数之间的差值是指数中的符号,以及归一化项1/N。但请注意,无论将该1/N放置在何处,都可以将其放入前向变换中,并且仍会保留IDFT(
P2=abs(Y/L)代码>
他们对链接中的每个示例都这样做
此外,如果在每次fft计算后必须执行该操作,为什么不将该操作直接包含在内置fft函数中?
在某些情况下,最好不要做额外的手术
谢谢 从DFT及其逆函数的定义中可以看出(来自维基百科):
DFT及其逆函数之间的差值是指数中的符号,以及归一化项1/N
。但请注意,无论将该1/N
放置在何处,都可以将其放入前向变换中,并且仍会保留IDFT(DFT(f))==f
。事实上,有些人将1/sqrt(N)
放在两个变换的前面,使它们对称
通常将其放在逆变换前面的原因是,您可以执行类似于IDFT(DFT(f)DFT(g))==f*g
(使用*
卷积)的操作。如果DFT具有1/N
归一化项,则通过频域计算卷积需要一个附加操作。所以这很方便
但是,当使用DFT检查信号功率等时,可能需要将此规范化添加到前向变换中。DFT产生的值取决于信号强度及其长度。规范化消除了对长度的依赖。例如:
fft(一(1,4))
ans=
4 0 0 0
>>快速傅里叶变换(一(1,8))
ans=
8 0 0 0 0 0 0 0
但随着标准化的增加:
fft(一(1,4))/4
ans=
1 0 0 0
>>fft(一(1,8))/8
ans=
1 0 0 0 0 0 0 0
FFT中不包含1/N允许Parseval定理为真。e、 g.时域中两倍长的信号(因为FFT更长等)在频域中显示的功率是频域的两倍
并不是所有FFT的实现都包含1/N。一些FFT将这个因素放在IFFT中。有些人将差异分开,并在两者中使用1/sqrt(N)。如果没有这个因素,IFFT就不会是FFT的倒数。很好的解释!我想在我的回答中也提到这一点,但是看看,我想它里面应该有一个
N
,而不是1/N
,所以规范化并没有让它变得更漂亮。
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sampling period
L = 1500; % Length of signal
t = (0:L-1)*T; % Time vector
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
Y = fft(S);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);