大黄菜头 2021-07-11 20:51 采纳率: 20%
浏览 603
已采纳

matlab用syms绘制分段函数,用fplot绘制不在定义域的函数曲线

使用matlab绘制函数y=1/x的曲线图,
尝试使用了syms 的方法,和fplot的方法,
面临的问题是:fplot可以绘制分段函数,可是在x=0的左右两侧会有一个线,如图所示:

img

为了解决这个办法,分别绘制了两条曲线,使用命令:
fplot(f,[-3,3,-3,3])
fplot(@(x)1/x,[-3,0,-3,3]);hold on;
fplot(@(x)1/x,[-0,3,-3,3]);
axis([-3,3,-3,3])
得到的图好看的多了。但是右上角会出现data是两条曲线,如图所示:

img

这不符合要求。于是在增加一个命令:
legend('y=1/x');
貌似把这个曲线标注给解决了,可实际上plot的原始数据依然是两个曲线。因为点击legend的图标,已然会出现两条曲线。如图:

img

所以我的问题是:使用fplot如何把两个不连续的定义域连结起来,整成一条曲线呢?也就是如何去掉不在定义域的点呢?
对于syms的方法,可以很好的把不在定义域的点去掉,但是syms怎么画分段函数呢!

  • 写回答

2条回答 默认 最新

  • CSDN专家-Matlab_Fans 2021-07-11 21:18
    关注

    解决办法:使用nan非数进行镂空

    x = linspace(-3,3,500);
    f = @(x) 1./x;
    for ii = 1:length(x)
        if  abs(x(ii))<0.03 
            x(ii) = nan;
            y(ii) = nan;
        end
    end
    plot(x,f(x))
    legend('y=1/x')
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月11日
  • 创建了问题 7月11日

悬赏问题

  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
  • ¥15 前后端分离的学习疑问?
  • ¥15 stata实证代码答疑
  • ¥15 MATLAB数据处理插值
  • ¥50 husky+jaco2实现在gazebo与rviz中联合仿真
  • ¥15 dpabi预处理报错:Error using y_ExtractROISignal (line 251)
  • ¥15 在虚拟机中配置flume,无法将slave1节点的文件采集到master节点中
  • ¥15 husky+kinova jaco2 仿真
  • ¥15 zigbee终端设备入网失败
  • ¥15 金融监管系统怎么对7+4机构进行监管的