从频域分析公式中获取IFFT

时间:2017-01-02 22:55:52

标签: matlab fft resolution frequency sampling

我正在尝试从频域的分析公式中获取时域信号,具体来说,公式为:

Formula implemented

实施IFFT时出现问题,因为获得了以下脉冲响应:

Impulse response

很明显,第一部分看起来还不错,然而,随着信号的结束,会出现高水平的噪音和不断增加的“斜率”。

现在,当在频域开始时,我正在定义一个频率向量,其频率分辨率基于FFT的大小。

%% Sampling Frequency + Size FFt

Fs = 512; %Sampling Frequency
Nfft = 2^12; %FFT Size
df = Fs/Nfft; %Frequency Resolution
f = 0:df:180; %Frequency Vector

然后应用公式并获得频率向量。之后应用了大小为NFFT的IFFT:

%%Obtain impulse response
x = ifft(P_w,Nfft); %P_w is obtained by formula (1)
t = (0:(length(x)-1))/Fs; %Time Vector

一旦我绘制x的实部,就可以看到图像2中获得的结果。 关于如何克服这个问题有什么建议吗? 我的意思是,我不应该得到信号的最后“嘈杂”部分,或者我在代码中省略了错误?

编辑:

我在频率向量中犯了一个错误,实际上,它从0开始:

f = 0:df:180; %Frequency Vector

1 个答案:

答案 0 :(得分:0)

根据我的猜测,如果你的P_w从5Hz开始,你就会在5Hz以下的低频范围内错过零垫。

假设我的猜测是正确的,PLZ,在ifft之前在P_w前放置40个零。

40个零对应于0Hz~4.875Hz范围,因为df = 0.125。

如果P_w是列向量:P_w=[zeros(40,1);P_w];

如果P_w是行向量:P_w=[zeros(1,40) P_w];