Matlab中离散傅里叶变换的导数

时间:2016-03-13 23:08:00

标签: matlab fft

这是傅里叶分析课程作业的一部分。

在这项任务中,我被要求使用离散傅立叶变换的导数来实现matlab函数来计算离散函数的导数。我给出的公式是这个公式:

enter image description here

我写的代码是这样的,使用了从-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);

0 个答案:

没有答案