关于使用matlab fft的数学示例的额外说明

关于使用matlab fft的数学示例的额外说明,matlab,fft,Matlab,Fft,有人能解释为什么fft的结果需要除以采样点的数量(信号的长度)吗 示例可在此页面上找到: 为什么包括此操作:P2=abs(Y/L) 他们对链接中的每个示例都这样做 此外,如果在每次fft计算后必须执行该操作,为什么不将该操作直接包含在内置fft函数中? 在某些情况下,最好不要做额外的手术 谢谢 从DFT及其逆函数的定义中可以看出(来自维基百科): DFT及其逆函数之间的差值是指数中的符号,以及归一化项1/N。但请注意,无论将该1/N放置在何处,都可以将其放入前向变换中,并且仍会保留IDFT(

有人能解释为什么fft的结果需要除以采样点的数量(信号的长度)吗

示例可在此页面上找到:

为什么包括此操作:
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);