私はIFTアルゴリズムを書こうとしています。これが私のコードです:
%% Fourier Analysis
N = 20;
T1 = 0.25*N;
T0 = N;
x = [zeros(T1,1); ones(T0/2,1); zeros(T1,1)]';
omega = 2*pi*1/T0;
ak = zeros(1,2*N+1);
for k = -N:N
if k == 0
ak(k+N+1) = 2*T1/T0;
else
ak(k+N+1) = sin(k*omega*T1)/(k*pi);
end
end
%Approximate the periodic symmetric square wave
t=linspace(-0.5,0.5,N);
for n=1:length(t)
xN(n)=0;
for k = -N:N
xN(n) = xN(n) + ak(k+N+1).*exp(1i*k*omega*t(n));
end
end
何が問題なのですか (Matlab には ifft() 関数があることは知っていますが、自分で書きたいと思います)? 私はそれにこのコードを使用します:
結果は次のようになります (EN はエラーです)。
黒いプロットは xN で、青いプロットは x です。私の結果は直線です。