我正在尝试从频域的分析公式中获取时域信号,具体来说,公式为:
实施IFFT时出现问题,因为获得了以下脉冲响应:
很明显,第一部分看起来还不错,然而,随着信号的结束,会出现高水平的噪音和不断增加的“斜率”。
现在,当在频域开始时,我正在定义一个频率向量,其频率分辨率基于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
答案 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];