这是傅里叶分析课程作业的一部分。
在这项任务中,我被要求使用离散傅立叶变换的导数来实现matlab函数来计算离散函数的导数。我给出的公式是这个公式:
我写的代码是这样的,使用了从-pi到pi的513个数据点:
t = -pi + ((2*pi)/513)*(0:513-1);
for n = 1:513
tmpsum = 0;
for k = 1:N
tmpsum = tmpsum + (1i*k*fft(g(k))*exp(1i*k*n));
end
deriv(n) = real((1/sqrt(N))*tmpsum);
end
它执行得很好,但是一旦我将它绘制成t(例如g = sin(t)),我得到一个非常奇怪的图形,y轴上的尖峰高达2000。
我做错了什么?
修改 这是我目前运行的代码:
N = 512;
t = -pi + ((2*pi)/(N))*(0:N-1);
f = sin(t);
deriv = zeros(1,length(t));
ffft = fft(f);
for n = 1:N
tmpsum = 0;
for k = 1:N
tmpsum = tmpsum + ((1i*k*ffft(k))*exp(1i*k*n));
end
deriv(n) = (1/sqrt(N))*tmpsum;
end
plot(t,f,t,deriv);