通过matlab实现三角形式的傅立叶级数和指数形式的傅立叶级数

img


如图第一题,如何通过matlab实现三角形式的傅立叶级数和指数形式的傅立叶级数,看了下全站都没有关联性比较贴切的问题,求各位解答下

根据参考资料中段落0和段落3中的公式,可以通过Matlab计算和输出三角形式的傅立叶级数。需要使用syms函数来定义自变量t,设置周期T,计算傅立叶系数,并计算级数展开式,然后根据需要设置项数N,将级数展开式作为函数进行绘图。

syms t;
T = 2*pi;
f = t*(heaviside(t+pi)-heaviside(t-pi));
a0 = simplify(1/T*int(f,t,-pi,pi));
ak = zeros(1,10);
bk = zeros(1,10);
for k=1:10
    ak(k) = simplify(2/T*int(f*cos(k*t),t,-pi,pi));
    bk(k) = simplify(2/T*int(f*sin(k*t),t,-pi,pi));
end
N = 10; %选取展开式项数
F = vpa(a0/2);
for k=1:N
    F = F + vpa(ak(k)*cos(k*t) + bk(k)*sin(k*t));
end
fplot(F,[-3*pi,3*pi])

根据参考资料中段落0和段落3中的公式,可以通过Matlab计算和输出指数形式的傅立叶级数。需要使用syms函数来定义自变量t,设置周期T,计算傅立叶系数,并计算级数展开式,然后根据需要设置项数N,将级数展开式作为函数进行绘图。

syms t;
T = 2*pi;
f = t*(heaviside(t+pi)-heaviside(t-pi));
c = zeros(1,10);
for k=1:10
    c(k) = simplify(1/T*int(f*exp(-1i*k*t),t,-pi,pi));
end
N = 10; %选取展开式项数
F = zeros(size(t));
for k=-N:N
    F = F + vpa(c(k+1+N)*exp(1i*k*t));
end
fplot(real(F),[-3*pi,3*pi])

需要注意的是,指数形式的傅立叶级数是以复指数函数的形式表示,实部和虚部分别代表原函数的三角形式展开式中的cosine项和sine项。因此,需要使用real函数将其实部提取出来作为函数进行绘图。