matlab - 在 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
解决方案
问题是线路
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
推荐阅读
- html - 如何在div中居中不同的内容?
- python - 在 groupby 之后在数据框中创建一个新列
- c++ - 模板函数要求子句的原子约束中的替换失败
- cypher - Cypher 链查询和剪枝
- node.js - 声纳扫描错误:更改此条件,使其不总是评估为“真”;一些后续代码永远不会执行
- excel - 复选框和下拉列表的触发器不能同时工作
- python - Python:CountVectorizer 上的 ValueError。Series 的真值是模棱两可的
- c - C 编程 - 航空公司预订系统 - 为什么我的保存文件功能不起作用?
- c++ - 字符串不适用于 if else 语句
- ios - Cordova 混合应用程序:单击时不会触发汉堡菜单选项