用matlab在一幅图中绘制多条分段函数曲线

如题所述

分段函数的绘制方法有下面几种:

%方法一,分段分别画,然后用hold on将图像保持在同一个axes中
%保持在同一个坐标轴中还可以用set(gca,'Nextplot','Add')命令
x1 = linspace(0,1,30);
y1 = x1;
x2 = linspace(1,2,30);
y2 = x2.^2;
plot(x1,y1)
hold on
%或者
% set(gca,'Nextplot','Add')
plot(x2,y2)
%方法二,巧用判断条件
x = linspace(0,2,60);
y = x.*(x>=0).*(x<=1) + x.^2.*(x>1).*(x<=2);
plot(x,y)
%方法三,使用矩阵索引
x = linspace(0,2,60);
x1 = x(x>=0&x<=1);
x2 = x(x>=1&x<=2);
y1 = x1;
y2 = x2.^2;
plot(x1,y1)
set(gca,'Nextplot','Add');
plot(x2,y2)
%注意这时第一个线段最后一个元素和第二个线段第一个元素没连在一起,如果需要连
%使用如下语句
line([x1(end) x2(1)],[y1(end) y2(1)])
%方法四,将原分段函数编为一个m函数,然后使用for循环求出函数值,最后画图
%这种方法虽然易懂,但速度慢不推荐
x = linspace(0,2,60);
y = zero(size(x));
for fi = 1:size(x,2)
    y(fi) = myfun(x(fi));       %myfun为自己定义的分段函数
end
plot(x,y)
%myfun函数清单如下
function y = myfun(x)
if x >= 0 & x <= 1
    y = x;
else
    y = x^2;
end
end

 对于多条分段函数绘制在同一幅图中,只需像方法一那样。hold on一下就行了。

温馨提示:答案为网友推荐,仅供参考