首页 > 解决方案 > 在 MATLAB 中绘制傅里叶级数的直流分量

问题描述

我正在尝试将傅里叶级数的直流分量与第一个面板中的谐波一起绘制。但是第一个面板只输出谐波。请帮我解决这个问题。下面是我的代码和输出图。

n = 30;
x = (0:300)/100;
xx = 2*x;
ao = 1/2;           %DC component
f = ones(1,301)*ao;
for i = 1:2:n
    bn = 2/pi/i;
    bnx = bn*sin(2*pi*i*x);
    f = f + bnx;
    subplot(1,2,1)
    plot(xx,ao)     %Plotting of DC component
    hold on
    plot(xx,bnx)
    hold on
    subplot(1,2,2)
    plot(xx,f)
    hold off
end

输出图

标签: matlabplot

解决方案


问题是线路

plot(xx,ao) %Plotting of DC component

xx是一个向量,ao是一个数字。从文档中,在这种情况下,plot函数绘制离散点;这些甚至不可见,因为没有指定标记。

要获得 height 的水平线ao,您需要将上面的内容替换为以下内容,以便两个输入plot都是向量:

plot(xx,repmat(ao,size(xx)))

此外,最好将这行代码与subplot(1,2,1)and一起移动hold on到循环之前,以便仅绘制一次 DC 分量:

n = 30;
x = (0:300)/100;
xx = 2*x;
ao = 1/2;                      %DC component
f = ones(1,301)*ao;
subplot(1,2,1)
plot(xx,repmat(ao,size(xx)))   %Plotting of DC component
hold on
for i = 1:2:n
    bn = 2/pi/i;
    bnx = bn*sin(2*pi*i*x);
    f = f + bnx;
    subplot(1,2,1)
    plot(xx,bnx)
    subplot(1,2,2)
    plot(xx,f)
    hold off
end

在此处输入图像描述


推荐阅读