作业帮 > 综合 > 作业

一组正弦位移信号,在Matlab中FFT后幅值将近时域中的两倍

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/05/03 22:28:59
一组正弦位移信号,在Matlab中FFT后幅值将近时域中的两倍
处理FFT的程序如下:
Fs=5000;
npts = length(B{1})
NumUniquePts = ceil(npts/2);
S = B{1}(:,3); 

S_fft = fft(Be);
f = (0:NumUniquePts-1)*Fs/npts;
b_S = abs(S_fft(1:NumUniquePts))/NumUniquePts*2;

时域信号如下图:

频谱图如下:

从时域信号中可以看出,正弦信号的幅值是1,但是在频域信号中,幅值却将近2.

不理解.
一组正弦位移信号,在Matlab中FFT后幅值将近时域中的两倍
一个长度为n的信号A
其fft之后得到的信号长度也是n
得到的fft数据除了0频率分量幅度为时域值的n陪外
其他亲率的幅度值是n/2倍
所以要获得某个非零频率的幅度,需要将fft之后的数据除以n乘以2
b_S = abs(S_fft(1:NumUniquePts))/NumUniquePts*2;
从你这句看,除以的是NumUniquePts=ceil(npts/2);是原来长度的一半,不是原来的长度
所以得到的数值比实际值大一倍
应该用
b_S = abs(S_fft(1:NumUniquePts))/npts*2;

b_S = abs(S_fft(1:NumUniquePts))/NumUniquePts;