我试图绘制一个适合原始图表的傅里叶级数(这是正确的),但我不知道错误是什么。我还仔细检查了傅立叶近似。
原始图表生成为:
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)
图表如下所示:
有人可以告诉我为什么这不起作用吗?
答案 0 :(得分:2)
首先要注意的是,绘图中生成的系列在支持间隔[-pi:pi]
中运行两个周期。这指向sin(2*n*t)
参数中的不正确常量,该常量应为sin(n*t)
。
另外,作为一般规则
sin
个术语cos
条款sin
和cos
项的混合。在您的情况下,该函数既不是偶数也不是奇数,因此您应该同时存在sin
和cos
项。但是,您只计算sinterm
并离开costerm=0
。更具体地说,虽然余弦系数系数对于所有n>1
评估为0,但事实上你缺少n=1
的{{1}}一词。
通过这些更正,你应该得到
0.5*cos(t)
它应该给你以下图(蓝线是原始函数,红线是傅立叶级数展开):