FFT取值问题
FFT变换后,如果我只需要幅值信息的话,从而想得到能量,带宽,频谱质心等等,是否保留一半的数据就可以??? 对的,实际上一半数据也是有N个(即一半数据的实部和虚部)。 那FFT变换数据的后半部分有什么作用呢?整个FFT是将时域的信号转变为频域的信号,变换后的数据是对称的,它的这个变换的物理意义是什么呢?? 那是因为你用来做FFT的时域信号是实的,所以频谱对称。要是分析的信号的复数,就幅频和相频就没这对称性了 请问下,如果对信号进行分帧了,对每帧数据求FFT变换,画幅度谱的时候,是不是应该将每帧对应同一频率的幅值加起来,然后在画出整个信号的幅度值,如下面的代码,这样写可对??function FFTSpectrum();
clear all;
Winsize=1024;
Shift=512;
=ReadAudFile();%WavData为语音信号采样值,Fs为采样频率
WavData=WavData(:,1);%若是双声道,取单声道的值即可。
FrameNum=floor((length(WavData)-Winsize)/Shift)+1;%
for i=1:FrameNum
n1=(i-1)*Shift+1;
n2=n1+(Winsize-1);
s=WavData(n1:n2);
s=s.*hamming(Winsize);
z=fft(s);
z=z(1:Winsize/2+1);
mag(:,i)=abs(z)*2/Winsize;%得出幅值。
f=(0:length(z)-1)*Fs/length(z);%进行对应的频率转换
end
mag=sum(mag,2);
axis();
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
title('Fourier Magnitude Spectrum');
grid; 对于稳态的随机信号可用楼主给出的程序来处理,但对于语音信号来说,就不一定合适。因为语音信号是一个准稳态的信号,即它是慢变化的,语音信号的特性--音调和共振峰都随时间慢变化着。为了能观察语音信号的特性最好用短时傅里叶分析(STFT)。 短时傅里叶变换是不是就是把z=fft变为z=tfrstft(s);?? 是,这时z是一组时间有频率的函数。
页:
[1]