user1887990
user1887990

Reputation: 101

why is the vector coming out of 'trapz' function as NAN?

i am trying to calculate the inverse fourier transform of the vector XRECW. for some reason i get a vector of NANs. please help!!

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)

Upvotes: 2

Views: 4425

Answers (1)

Sam
Sam

Reputation: 366

Here's a direct answer to your question of "why" there is a nan. If you run your code, the Nan comes from dividing by zero in line 7 for computing xzohw. Notice that w contains zero:

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

and you can see in line 7 that you divide by the elements of w with the (2./w) factor.

A quick fix (although it is not a guarantee that your code will do what you want) is to avoid including 0 in w by using a step which avoids zero. Since pi is certainly not divisible by 100, you can try taking steps in .01 increments:

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

Using this, your code produces a plot which might resemble what you're looking for. In order to do better, we might need more details on exactly what you're trying to do, or what these variables represent.

Hope this helps!

Upvotes: 2

Related Questions