我正在尝试计算向量XRECW的逆傅里叶变换。出于某种原因,我得到了一个NANs的矢量。 请帮助!!
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)
答案 0 :(得分:2)
以下是对“为什么”存在问题的直接回答。如果运行代码,则Nan在第7行中除以0来计算xzohw。请注意w
包含零:
>> find(w==0)
ans =
2001
您可以在第7行中看到,您将w
的元素除以(2./w)
因子。
快速修复(尽管不保证您的代码可以执行您想要的操作)是通过使用避免零的步骤来避免在w
中包含0。因为pi肯定不能被100整除,所以你可以尝试以.01为增量的步骤:
w = -20*pi:0.01:20*pi;
使用此代码,您的代码会生成一个可能与您正在寻找的类似的图。为了做得更好,我们可能需要更多关于您正在尝试做什么的细节,或者这些变量代表什么。
希望这有帮助!