IFFT和频率信息

时间:2016-03-21 18:17:17

标签: matlab signal-processing fft ifft

假设采样率Amp_time存在实际信号SampRate(幅度随时间变化)。 我可以用

将其转换为频域
fftLength = length(Amp_time);

FT_freq = fft(Amp_time,fftLength); % signal as a function of frequency
FT_freq = FT_freq(1:fftLength/2);  % throw away symmetric part

和相应的频率:

freq = [0:fftLength-1].*(SampRate/fftLength); 
freq = freq(freq < SampRate/2);   % throw away symmetric part

要将其转换回时域,我只需使用

Amp_time2 = ifft(FT_freq,'symmetric');

问题

但是,如果我要更改FT_freq的长度怎么样?

假设我想通过将length(FT_freq)平均到较粗略的频率向量(即10 ^ 3而不是10 ^ 5个频率)来减少FT_freq

[freq2,FT_freq2] = special_average(freq,FT_freq)   % reducing length of FT_freq

我认为不可能采用上面的版本(因为 Matlab怎么可能知道信号对应的频率)。

我错过了什么?

为了获得正确的IFFT,我是否必须再次缩放粗略FT_freq2? (记忆力不好,......)

我想要降低傅里叶变换的自由度的原因是为了避免使用大小为10^5 x 10^3的矩阵(对每首歌曲的每十分之一秒进行FFT),然后来比较频率-spectra /音调

0 个答案:

没有答案