不训练会憋死星人
2021-07-11 20:51
采纳率: 33.3%
浏览 273

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条)

相关推荐 更多相似问题