matlab画分段函数,横坐标对不准(0,15,60)。为什么不分开,还是连在一起的线。求修改!

function F=Piecewise_x(x)
F=(0.78-0.0056*x).*(x>=0&x<=15)+(0.48-0.0056*x).*(x>=15&x<=60)+0.*(x<=0|x>=60);
end

clear all;
clc;
x=linspace(-100,100);
F=Piecewise_x(x);%计算相应函数值
plot(x,F);%绘制曲线

第1个回答  2014-03-20
程序没问题,就看你函数写的对不对了。或者你直接按百分比取值行不?
第2个回答  2014-03-20

其实是对准了的,只是各个点连起来了,看起来没对准,请见附图:星号表示各个点,然后连起来,就成了你见到的样子。

 

如果要分开,我没想到简捷的办法,但可以一段一段画,参考程序和附图,看看是不是你想要的。

 

clear all;

clc;

x=linspace(-100,100);

F=(0.78-0.0056*x).*(x>=0&x<=15)+(0.48-0.0056*x).*(x>=15&x<=60)+0.*(x<=0|x>=60); %计算相应函数值
subplot(2,1,1);
plot(x,F,'--*');%绘制曲线
axis([-120 120 -0.02 0.9]);

subplot(2,1,2);
x1=(x<0);
c1=sum(x1);
plot(x(1:c1),F(1:c1));%绘制曲线
axis([-120 120 -0.02 0.9]);

x2=( x<15);
c2=sum(x2);
hold on; plot(x((c1+1):c2),F((c1+1):c2));

x3=( x<60);
c3=sum(x3);
hold on; plot(x((c2+1):c3),F((c2+1):c3));

hold on; plot(x((c3+1):100),F((c3+1):100));

 

 

%很高兴为您解答,w231818为您解答有关matlab的问题,以期共同提高
%如果本题有什么不明白可以追问,如果满意记得采纳
%如果有其他问题请采纳本题后另发点击向我求助,答题耗时,请予以肯定,多多支持,谢谢!

本回答被提问者采纳
第3个回答  2014-03-20
代码的第三行有错误,要改为
clear all;
clc;
x=linspace(-10,80,100);
F=Piecewise_x(x);%计算相应函数值
plot(x,F);%绘制曲线