matlab对一列数据进行fft变换 得不出频谱图 麻烦高手帮我看一下程序问题在哪

2024-12-28 14:01:52
推荐回答(2个)
回答1:

fs=5000;N=length(t);n=0:N-1;tx=n/fs;
a1=fft(y1,N);
a2= fftshift(a1); 
mag=abs(a2);%求出变换后的振幅
f=(0:length(a2)-1)'*fs/length(a2);
subplot (2,1,1),plot(t,y1);
subplot(2,1,2),plot(f,mag);title('频谱图')

改成如上:

回答2:

你的信号里直流分量这么大,做出来的频谱几乎就是一个冲击函数了。建议你先去掉均值。
y = y1-mean(y1);
然后对y做上述处理。
如果你要把0频移动到频谱中间的话再fftshift一下a1