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 は xzohw を計算するための 7 行目のゼロ除算から得られます。wゼロが含まれていることに注意してください。

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

w7 行目で、因子を使用しての要素で割っていることがわかります(2./w)

簡単な修正 (コードが意図したとおりに動作するという保証ではありませんが) は、wゼロを回避するステップを使用して 0 を含めないようにすることです。円周率は確かに 100 で割り切れないので、.01 刻みでステップを踏むことができます。

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

これを使用すると、コードは探しているものに似たプロットを生成します。より良い結果を得るには、何をしようとしているのか、またはこれらの変数が何を表しているのかについて、より詳細な情報が必要になる場合があります。

お役に立てれば!

于 2012-12-08T16:35:08.017 に答える