一组正弦位移信号,在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/06/23 15:33:25
![一组正弦位移信号,在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](/uploads/image/z/8325196-52-6.jpg?t=%E4%B8%80%E7%BB%84%E6%AD%A3%E5%BC%A6%E4%BD%8D%E7%A7%BB%E4%BF%A1%E5%8F%B7%2C%E5%9C%A8Matlab%E4%B8%ADFFT%E5%90%8E%E5%B9%85%E5%80%BC%E5%B0%86%E8%BF%91%E6%97%B6%E5%9F%9F%E4%B8%AD%E7%9A%84%E4%B8%A4%E5%80%8D%E5%A4%84%E7%90%86FFT%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%A6%82%E4%B8%8B%3AFs%3D5000%3Bnpts+%3D+length%28B%7B1%7D%29NumUniquePts+%3D+ceil%28npts%2F2%29%3BS+%3D+B%7B1%7D%28%3A%2C3%29%3B+S_fft+%3D+fft%28Be%29%3Bf+%3D+%280%3ANumUniquePts-1%29%2AFs%2Fnpts%3Bb_S+%3D+abs%28S_fft%281%3ANumUniquePts%29%29%2FNu)
一组正弦位移信号,在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;