关于matlab分段函数如何绘图问题
例1
1、不分段的我会,如z=x^2+y^2
t=-5:0.5:5;[x,y]=meshgrid(t);z=x.^2+y.^2;mesh(x,y,z)
2、分段的
比如:-5<x<0时,z=x^2+y^3
0<x<5时,z=x^2+y^2怎么画?
如下:
%下面是MATLAB运行代码
%by dynamic
%see also http://www.matlabsky.com
%2009.2.1
t=-5:0.1:5;[x,y]=meshgrid(t);
z=(x.^2+y.^3).*(x<0&x>-5)+(x.^2+y.^2).*(x>0&x<5);
mesh(x,y,z)
例2
0<t<1 u(t)=0
其他时候u(t)=1
这个用matlab语言怎么定义函数u
如下:
function myfun(t) if 0<t && t<1 u=0 else u=1 end 输入myfun(8),可以得到结果
例3
比如说y=5/cos(x),我想绘制此曲线.但是x的定义域中不能包括1/2*pi和3/2*pi,怎样才能定义x,可以在除x=1/2*pi和3/2*pi以外绘制区间为[0,2*pi]的曲线. 谢谢各位厉害的大虾帮忙. 尽量写得详细一些.
如下:
>> x=0:.001:2*pi; >> c=.1; >> y=5./cos(x); >> y(abs(x-pi/2)<c | abs(x-3*pi/2)<c)=NaN; >> plot(x,y);
例4 比较经典的一个分段函数绘图例子
x=-3:0.01:3;
y1=zeros(size(x));
y2=zeros(size(x));
y3=zeros(size(x));
N=length(x);
for k=1:N
if x(k)<-1&x(k)>=-3;
y1(k)=(-x(k).^2-4*x(k)-3)/2;
elseif x(k)>=-1&x(k)<1 ;
y2(k)=-x(k).^2+1;
else x(k)<=3&x(k)>=1 ;
y3(k)=(-x(k).^2+4*x(k)-3)/2;
end
end
y=y1+y2+y3;
plot(x,y)
|