2

我正在尝试计算向量 XRECW 的傅立叶逆变换。出于某种原因,我得到了一个 NAN 向量。请帮忙!!

t = -2:1/100:2;    
x = ((2/5)*sin(5*pi*t))./((1/25)-t.^2);    
w = -20*pi:0.01*pi:20*pi;    
Hw = (exp(j*pi.*(w./(10*pi)))./(sinc(w./(10*pi)))).*(heaviside(w+5*pi)-heaviside(w-5*pi));%low  pass filter     
xzohw = 0;    
for q=1:20:400
    xzohw = xzohw + x(q).*(2./w).*sin(0.1.*w).*exp(-j.*w*0.2*((q-1)/20)+0.5);%calculating fourier transform of xzoh    
end    
xzohw = abs(xzohw);     
xrecw = abs(xzohw.*Hw);%filtering the fourier transform  high frequencies    

xrect=0;
for q=1:401

    xrect(q) = (1/(2*pi)).*trapz(xrecw.*exp(j*w*t(q))); %inverse fourier transform
end
xrect = abs(xrect);
plot(t,xrect)
4

1 回答 1

2

这是对您“为什么”存在nan的问题的直接答案。如果您运行您的代码,Nan 来自第 7 行中除以零来计算 xzohw。注意w包含零:

>> find(w==0)
ans =
   2001

您可以在第 7 行中看到您除以 的元素w(2./w)因数。

快速修复(尽管不能保证您的代码会执行您想要的操作)是w通过使用避免零的步骤来避免包含 0。由于 pi 肯定不能被 100 整除,因此您可以尝试以 0.01 为增量执行步骤:

w = -20*pi:0.01:20*pi;

使用它,您的代码会生成一个可能类似于您正在寻找的情节。为了做得更好,我们可能需要更多关于您正在尝试做什么或这些变量代表什么的详细信息。

希望这可以帮助!

于 2012-12-08T16:35:08.017 回答