一组正弦位移信号,在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))/Nu
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 16:19:29
一组正弦位移信号,在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))/Nu
一组正弦位移信号,在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后幅值将近时域中的两倍处理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))/Nu
一个长度为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;