Производная дискретного преобразования Фурье в Matlab
Это часть задания для курса Фурье-анализа.
В этом задании меня попросили реализовать функцию matlab для вычисления производной дискретной функции с использованием производной дискретного преобразования Фурье. Формула, которую мне дали, была этой формулой:
Код, который я написал, использует 513 точек данных от -pi до pi:
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)), я получаю действительно странный график с пиками до 2000 на оси y.
Что я делаю неправильно?
РЕДАКТИРОВАТЬ: Это код, который я в настоящее время запускаю:
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);