Производная дискретного преобразования Фурье в 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);

0 ответов

Другие вопросы по тегам