gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:04:07 25 4
gpt4 key购买 nike

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

示例可以在此页面找到:https://fr.mathworks.com/help/matlab/ref/fft.html

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);

为什么他们包含这个操作:P2 = abs(Y/L);

他们对链接中的每个示例都执行此操作。

此外,如果他们必须在每次 fft 计算后执行该操作,为什么他们不直接将该操作包含在内置 fft 函数中?在某些情况下,最好不要执行额外的操作吗?

谢谢!

最佳答案

从 DFT 及其逆的定义(来自维基百科)可以看出:

DFT equation

IDFT equation

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(ones(1,4))
ans =
4 0 0 0

>> fft(ones(1,8))
ans =
8 0 0 0 0 0 0 0

但添加了标准化:

>> fft(ones(1,4))/4
ans =
1 0 0 0

>> fft(ones(1,8))/8
ans =
1 0 0 0 0 0 0 0

关于matlab - 关于使用 matlab fft 的数学示例的额外说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59325019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com