为什么f域变成w域振幅要除以2
发布网友
发布时间:2023-04-28 21:06
我来回答
共1个回答
热心网友
时间:2023-10-30 08:28
进行FFT变换,获取频率:
FFT傅里叶变换并没对频率进行任何计算,频率只与采样率和进行傅里叶变换的点数相关,注意这里是进行傅里叶变换的点数而不一定是信号的长度。
FFT变换完:
第一个数是0Hz频率,0Hz就是没有波动,没有波动有个专业一点的说法,叫直流分量。
第二个数,对应的频率是0Hz+频谱分辨率,每隔一个加一次,频谱分辨率Δf计算公式如下:
Δf=Fs/N
式中:
Fs为采样频率
N为FFT的点数
因此只要Fs和N定了,频域就定下来了。
FFT变换后的第一个实数 - 直流分量
FFT之后的第一个结果表示了时域信号中的直流成分的多少,所谓直流信号,代表和基准0的偏移量。
上面的结果不好说明,下面再看一个例子:
print(rfft([1,1,1,1,1,1,1,1]))
#输出[8.+0.j 0.-0.j 0.+0.j 0.+0.j 0.+0.j]
1
2
1
2
明明直流分量为1,但计算结果是8,重点来了,这里又引入一个问题,FFT之后的数值不是真实的幅值,需要进行转换,第一个点需要除以N,才能还原为原来的结果。
FFT变换后的复数模 - 幅度
假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A
的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍
这是因为傅里叶级数对应时域幅值,其中已经包含了1/N项,而FFT变换中没有该系数,因此,进行FFT变换后,需除以N/2才能与时域对上。
FFT的计算公式

全球绝大部分的FFT算法,计算出来后都需要进行幅度转换,因此需要大家根据需求处理
热心网友
时间:2023-10-30 08:28
进行FFT变换,获取频率:
FFT傅里叶变换并没对频率进行任何计算,频率只与采样率和进行傅里叶变换的点数相关,注意这里是进行傅里叶变换的点数而不一定是信号的长度。
FFT变换完:
第一个数是0Hz频率,0Hz就是没有波动,没有波动有个专业一点的说法,叫直流分量。
第二个数,对应的频率是0Hz+频谱分辨率,每隔一个加一次,频谱分辨率Δf计算公式如下:
Δf=Fs/N
式中:
Fs为采样频率
N为FFT的点数
因此只要Fs和N定了,频域就定下来了。
FFT变换后的第一个实数 - 直流分量
FFT之后的第一个结果表示了时域信号中的直流成分的多少,所谓直流信号,代表和基准0的偏移量。
上面的结果不好说明,下面再看一个例子:
print(rfft([1,1,1,1,1,1,1,1]))
#输出[8.+0.j 0.-0.j 0.+0.j 0.+0.j 0.+0.j]
1
2
1
2
明明直流分量为1,但计算结果是8,重点来了,这里又引入一个问题,FFT之后的数值不是真实的幅值,需要进行转换,第一个点需要除以N,才能还原为原来的结果。
FFT变换后的复数模 - 幅度
假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A
的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍
这是因为傅里叶级数对应时域幅值,其中已经包含了1/N项,而FFT变换中没有该系数,因此,进行FFT变换后,需除以N/2才能与时域对上。
FFT的计算公式

全球绝大部分的FFT算法,计算出来后都需要进行幅度转换,因此需要大家根据需求处理