我的傅里叶系列不适合图表

时间:2015-05-26 01:59:25

标签: matlab fft

我试图绘制一个适合原始图表的傅里叶级数(这是正确的),但我不知道错误是什么。我还仔细检查了傅立叶近似。

原始图表生成为:

t=-pi:0.01:0;
x=ones(size(t));
plot(t,x)
axis([-3*pi 3*pi -1 4])
hold on
t=0:0.01:pi;
y=cos(t);
plot(t,y)

而傅立叶级数用以下方式生成:

t=-pi:0.01:pi;
f=1/2;
for n=1:5
    costerm=0;
    if n/2== round(n/2)
        sinterm=((-2*n)/(pi*(1-n^2)))*sin(2*n*t); 
    else
        sinterm= (-2/(pi*n))*sin(2*n*t);
    end
    f=f+sinterm+costerm;
end
plot(t,f)

图表如下所示: enter image description here

有人可以告诉我为什么这不起作用吗?

1 个答案:

答案 0 :(得分:2)

首先要注意的是,绘图中生成的系列在支持间隔[-pi:pi]中运行两个周期。这指向sin(2*n*t)参数中的不正确常量,该常量应为sin(n*t)

另外,作为一般规则

  • 奇数函数只有sin个术语
  • 即使功能只有cos条款
  • 否则,傅立叶级数包含sincos项的混合。

在您的情况下,该函数既不是偶数也不是奇数,因此您应该同时存在sincos项。但是,您只计算sinterm并离开costerm=0。更具体地说,虽然余弦系数系数对于所有n>1评估为0,但事实上你缺少n=1的{​​{1}}一词。

通过这些更正,你应该得到

0.5*cos(t)

它应该给你以下图(蓝线是原始函数,红线是傅立叶级数展开):

enter image description here