我正在尝试编写 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。我的结果是直线。