matlab - 绘制分段连续函数
问题描述
我想使用以下代码绘制一个不连续的分段函数。但是,输出始终显示为连续函数,因为 MATLAB 连接了这些子函数之间的间隙。
i1 = -2:0;
i2 = 0:pi/2;
i3 = pi/2:pi;
f1 = sinh(i1)+2;
f2 = sin(i2)-2;
f3= 2*i3.^2-2*pi*i3+3;
plot([i1 i2 i3],[f1,f2,f3]);
我应该如何以不那么复杂的方式解决这个问题?
PS。我用的是MATLAB 2013a,piecewise
这个版本好像没有这个功能。
解决方案
在函数之间添加nan
,这将使它们分离:
i1 = -2:0;
i2 = 0:pi/2;
i3 = pi/2:pi;
f1 = sinh(i1)+2;
f2 = sin(i2)-2;
f3= 2*i3.^2-2*pi*i3+3;
plot([i1 nan i2 nan i3],[f1,nan,f2,nan,f3]);
产生相同图表的另一个选项是使用 分别绘制所有三个hold on
:
figure;
hold on
plot(i1,f1,'b');
plot(i2,f2,'b');
plot(i3,f3,'b');
或者使用以下plot(X,Y,X1,Y1,...,Xn,Yn
语法:
figure;
plot(i1,f1,'b',i2,f2,'b',i3,f3,'b')
请注意,对于后两者,您必须指定线型,以防止 MATLAB 将它们设置为不同的颜色,因此'b'
.
推荐阅读
- python - 为什么我在安装 python-weka-wrapper3 时出错,尽管安装了 Visual C++ 14.0
- javascript - 如何在 Postman 测试中使用 Promise?
- roblox - Roblox:如何通过 if 语句检查玩家所在的团队?
- javascript - 当我在不同页面应用程序的页眉中单击超链接时如何向下滚动到页脚
- java - Java 8 编译错误“推理变量 D 具有不兼容的边界”
- azure-devops - 关于为 azure 管道作业设置自托管 linux 构建服务器的说明
- c++ - 使用 ICEBuilder 将 ICE 文件转换为 C++
- symbols - 在 ESRI 地图上创建符号的问题
- reactjs - 使用 jest 测试反应服务
- c++ - 将子对象复制到父对象