分段函数的matlab———m文件定义及其画图

合集下载

MATLAB m文件和函数

MATLAB m文件和函数

Matlab与系统仿真
h
22
➢ 例:
>> t=0:0.1:2*pi; >> y1=sin(t); >> y2=cos(t); >> y3=sin(t).*cos(t); >> plot(t,y1,'-',t,y2,':g',t,y3,'xk')
Matlab与系统仿真
h
23
思考:但很多实验情况下,实际上是对同一个变量进行测 量,并将数据进行绘图比较。
➢ subplot(m,n,p) :将当前窗口分割成m行、n列,并且 当前在其中的第p个区域绘图。
➢ 绘图区域编号原则:“从左到右,从上到下”。
➢ 允许每个子窗口不同的坐标系。
Matlab与系统仿真
h
26
➢ 例:
subplot(3,2,2) t=0:0.1:2*pi; y1=sin(t); plot(t,y1,'-')
Matlab与系统仿真
h
5
例1 :
>>t=0:0.1:pi; >>plot(t)
Matlab与系统仿真
h
6
例2 :绘制出一个周期内的正弦曲线
*语句命令及绘图结果:
>>t=0:0.1:2*pi; >>y=sin(t); >>plot(t,y)
Matlab与系统仿真
h
7
例3 :
>> t=0:0.1:2*pi; >> y1=sin(t); >> y2=cos(t); >> y3=sin(t).*cos(t); >> plot(t,y1,'-')

MATLAB 的M文件

MATLAB 的M文件

函数文件的基本格式
(1)函数定义行: function[返回参数列表]=函数名(输入变量) (2)%H1行及帮助文档:解释此函数的功能 (3)函数主体及注释 (4)空行:也占位置,也有行号
例题:6-1
● function y= average( x) ● % AVERAGE Mean of vector elements. ● % AVERAGE(X),Where X is a vector, is the mean of vector elements. ● % Nonvector input results in an error. ● [m,n]=size(x); ● if (~((m==1)|(n==1))|(m==1&n==1)) ● error('Input must be a vector') ● end ● y=sum(x)/length(x);
永久变量(persistent)只能在函数M文件中定义和使用, 且只允许定义它的函数存取。
脚本文件过程中产生的变量均为全局变量,保存在内 存工作空间。函数文件中产生的变量如果不是特别声明均 为局部变量。
4、函数参数
1)确定函数参数个数 对一些不知道输入输出参数个数的函数,调用时不能确定要
提供多少参数,需测试确定,避免调用出错。
N]=函数名(参数1,参数2,… ,参数M)。
6、函数文件的调用
例6-2:定义函数
(1)计算:f (1) f (2) ( f (3))2
(2)[-1,1] 画图
6、函数文件的调用
例6-2:定义函数
function out=fun_1(in) out=(in.^3-2*in.^2+in-6.3)./(in.^2+0.05*in-3.14)

matlab 分段函数

matlab 分段函数

matlab 分段函数Matlab是一款常用的数学软件,可以进行各种数学计算和图形绘制。

其中,分段函数是一种常见的函数类型,在Matlab中也有相应的实现方法。

本文将介绍Matlab中分段函数的定义、表示方法、绘制方法以及应用场景。

一、分段函数的定义在数学中,分段函数是由多个函数拼接而成的函数,每个函数在一定的区间内有定义。

通常情况下,分段函数可以用以下形式表示: f(x) = {f1(x) , x∈D1{f2(x) , x∈D2{f3(x) , x∈D3…其中,f1(x)、f2(x)、f3(x)等为不同的函数,D1、D2、D3等为函数的定义域。

二、分段函数的表示方法在Matlab中,可以用以下方法表示分段函数:1. 利用 if 语句利用 if 语句可以实现分段函数的表示。

例如,对于以下分段函数:f(x) = {x+1 , x<0{x^2 , x≥0可以用以下代码表示:function y = f(x)if x<0y = x+1;elsey = x^2;endend2. 利用 piecewise 函数Matlab中的 piecewise 函数可以方便地表示分段函数。

例如,对于以下分段函数:f(x) = {x+1 , x<0{x^2 , x≥0可以用以下代码表示:syms xf = piecewise(x<0, x+1, x>=0, x^2)三、分段函数的绘制方法在Matlab中,可以利用 plot 函数绘制分段函数的图像。

以下是绘制分段函数的步骤:1. 定义分段函数可以使用前面提到的方法定义分段函数。

2. 定义绘图区间定义绘图区间,例如:x = -5:0.01:5;这里定义绘图区间为从-5到5,步长为0.01。

3. 绘制图像利用 plot 函数绘制分段函数的图像。

例如:y = f(x);plot(x,y);这里的 f(x) 就是前面定义的分段函数。

四、分段函数的应用场景分段函数在数学中有广泛的应用,例如在物理学中,可以用分段函数表示物体在不同的运动状态下的运动规律;在经济学中,可以用分段函数表示不同的经济模型;在工程学中,可以用分段函数表示不同的控制模型等。

matlab分段函数绘图及标签设置

matlab分段函数绘图及标签设置

1 % Copyright@Yuyiycl 2012,yuchenglongchq@2 %3 %^主要演示绘图标签的添加4 % annotation()函数添加箭头标签的应用5 % dsxy2figxy()函数转化axis坐标为figure坐标的运用6 % 图形和标签属性设置应用7 % 分段函数的latex字符表示方法8 % latex字符中表示空格的\quad字符应用9 % 分段函数的三种表示方法10 %11 %**************************************************************************12 clear all ;clc;13 f =inline(['x.^2.*(x>=0 & x<1)+'...14 'cos(pi*(x-1)).*(x>=1 & x<2)+'...15 '(-x.^2./(x+2)).*(x>=2 & x<=4)'],'x');16 %17 %字符串断行时必须用中括号“[]”括起来,否则运行错误,不能形成一个字符串18 %19 figure ('position',[200 50 950 620]); %设置画布大小20 %x=0:0.01:4; 21 x =linspace(0,4,401); %两种生成线性等分向量的方法 22 y =f(x); 23 h =plot(x,y);24 axis ([0 4 -3 3]); %设置坐标区间25 set (h,'linewidth',2,'color',[1 0 1]) %句柄h可以用gca代替26 %27 %gca是当前坐标系的句柄,gcf是当前figure的句柄28 %gca是get hanlde to current axis(得到当前图的句柄)的意思,29 %除set函数外在以上函数中均可省略不写,默认就是gca。

matlab-m文件与m函数

matlab-m文件与m函数

第1章 MATLAB 语言系统
1.3.2 独立m文件 独立m文件是不需要输入输出参数 的带有扩展名.m的m文件,可以分为两种: 一种是注释文件,另一种是执行文件。
第1章 MATLAB 语言系统
注释文件只有注释行,没有命令执行行。
注释文件可以响应help命令。
注释行的各书写行之前需要冠以“%”符号来标识,
作为命令在MATLAB平台上执行。
第1章 MATLAB 语言系统
不同的是,需要相应的参数方可以 正确地执行,如本函数,需要输入参数x, 并且返回3个参数y,y1,y2。
第1章 MATLAB 语言系统
在MATLAB平台上执行m函数exam03.m
如下:(在matlab中演示)
x=0:2*pi/180:2*pi;
y=exam03(x);
plot(x,y)
第1章 MATLAB 语言系统
输入命令显示结果如图1-22所示。
图1-22
输入命令显示
第1章 MATLAB 语言系统
输出图线显示结果如图1-23所示。
图1-23
演示曲线
第1章 MATLAB 语言系统 可以看到,exam03.m是依赖于变量x来执
行的,并且返回变量y到MATLAB平台上或者变
量内存,与独立m文件的执行是不同的。 注: function[y,y1,y2]=exam03(x) 如文件名为:ff.m 则调用ff(x),所以一般把 文件名与函数名起一样的。
总结
• 1.M文件如何建立?如何执行? (1)EDIT (2)“文件”—“新建” (3)文件名<回车> • 2.看M文件用什么语句?--- type <文件名> • 3. M文件的注释,用什么语句? help <文件名> • 4. M函数,调用文件名(自变量) function[y,y1,y2]=exam03(x) 如文件名为:ff.m 则调用ff(x)

matlab 函数作图

matlab 函数作图

03 函数作图1 平面图形(1)竖直条形图调用格式为:bar(x,y)(2)用描点法绘制函数y f ( x) 随x 从a 到b 间的图形.调用格式为:x=a:h:b ;y=f(x) ;plot(x,y)(3)在同一坐标系下绘制多个函数图形.调用格式为:x=a:h:b ;plot(x,y1,x,y2,…)(4)绘制函数y=f(x)随x 从a 到b 间的图形.调用格式为:explo t(‘f(x)’, [a,b])(5)x 从xa 到xb和y 从ya到yb间隐函数 f ( x, y) 0 的图形.调用格式为:ezplo t(‘x’,’y’,[xa, x b , y a , y b ])(6)绘制t 从ta 到tb间参数方程x x(t ),y y(t )的函数图形.调用格式为:ezplo t(‘x’,’y’,[ta, t b ])(7)在一坐标系下可以绘制一个或多个显函数图形,对变化剧烈的函数,用此命令来进行较精确的绘画.调用格式为:fplot(’fun(x)’,[a,b])fplo t (‘[f1(x),f2(x),…]’,[a,b])其中fun(x)可以是自定义函数,[f1(x),f2(x),…]是函数组.(8)绘制散点图.调用格式为:scatter(x,y)2 空间图形(1)空间曲线.调用格式为:plot3(x,y,z)(2)产生一个以向量x 为行,向量y 为列的矩阵.调用格式为:meshgrid(x,y)(3)空间曲面.调用格式为:surf(x,y,z)(4)网格曲面.调用格式为:mesh(x,y,z)例 1 一次考试成绩0~10 分有0 人,10~20 分有0 人,20~30 分1 人,30~40 分有1 人,50~60 分有2 人,60~70 分有18 人,70~80 分有20 人,80~90 分有9 人,90~100 分有6 人.绘出成绩分析竖直条形图.【matlab 命令】>> x=0:10:90;>> y=[0,0,1,1,0,2,18,20,9,6];>> bar(x,y)【输出结果】20002图1例1输出图像例 2 绘制显函数图形.x(1)设 y 1x 3 2x , y2000 cos2sin x请分别作出这两个函数在区间 x[20,40] 的图像,然后将它们的图像在一个平面直角坐标系中,并判断方程 y 1x 3 2 x 1500cos x2sin x 有几个实数解.(2)在 x[0,4] 上画出分段函数方法一:【matlab 命令】>> x=-20:0.1:40;>> y1=x.^3-35*x.^2+100*x+1500; >> y2=2000*(cos(x/2)-sin(x)); >> figure(1)>> plot(x,y1,'b-'); >> figure(2) >> plot(x,y2,'k');f ( x )32 x 2x 20 x 2 x 2的图像>> figure(3)>> plot(x,y1,'b-',x,y2,'k')【输出结果】图2例2(1)函数y1图3 例 2(1)函数 y 2 输出图像图4例 2(1)函数 y 1 和 y 2 输出图像 从图中知:有 7 个交点,也就是有 7 个实数根.说明:绘制图形着色时,g 表示绿色,r 表示红色,b 表示蓝色,k 表示黑色.方法二:【matlab 命令2】%自定义函数M文件fx1 function y1=fx1(x)y1=x^3-35*x.^2+100*x+1500%自定义函数M文件fx2 function y2=fx2(x)y2=2000*(cos(x/2)-sin(x));Matlab命令窗口输入以下命令: >> figure(1)>> fplot('fx1(x)',[-20,40]); >> figure(2)>> fplot('fx2(x)',[-20,40]); >> figure(3)>> fplot('[fx1(x) , fx2(x)] ', [-20,40]); 【输出结果2】结果同上.【matlab 命令3】>> x=0:0.01:2;>> y=(2*x-x.^2).^(1/3);>> plot(x,y,'k','linewidth',2)>> hold on>> x=2:0.01:4;>> y=x-2;>> plot(x,y,'k','linewidth',2)【输出结果3】图5例2(2)函数f(x)的输出图像例3绘制隐函数和参数方程所确定函数的图形.(1)在x [3,3] 上画隐函数x 2 2 9 的图像.(2)在t [0,2] 上画参数方程x cos3 t ,y sin 3 t 的图像.【matlab 命令1】>> ezplot('x^2+y^2-9',[-3,3])>> axis equal【输出结果1】图6例3(1)输出图像说明:axis on 显示坐标轴,axis off 取消坐标轴,grid on 表示加网格线,grid off 表示不加网格线,clf 清楚图形窗口中的图形.也可以通过编辑图像的方法改变或增加设置,比如在图形窗口中,菜单栏Tools中鼠标选中Edit-Plot,可改变图像的颜色.【matlab 命令2】>> ezplot('cos(t)^3','sin(t)^3',[0,2*pi])【输出结果2】图7例3(2)输出图像例4将图4,5,6,7在同一个图形窗口表现出来.【matlab 命令】clfsubplot(2,2,1)x=-20:0.1:40;y1=x.^3-35*x.^2+100*x+1500;y2=2000*(cos(x/2)-sin(x));plot(x,y1,'b-',x,y2,'k');subplot(2,2,2)x=0:0.01:2;y=(2*x-x.^2).^(1/3);plot(x,y) holdon x=2:0.01:4;y=x-2;plot(x,y)subplot(2,2,3)ezplot('x^2+y^2-9',[-3,3])axis equal subplot(2,2,4)ezplot('cos(t)^3','sin(t)^3',[0,2*pi])【输出结果】图8 例4输出图像例5已知平面内8个散点的坐标(1,15,2,20(3,27(4,36(5,49,(6,65(7,87(8,117,在直角坐标系中绘制点图.【matlab 命令】 clf x=1:8; y=[15.3,20.5,27.4,36.6,49.1,65.6,87.8,117.6]; scatter(x,y,'ko') 【输出结果】图9例6 在区间[0,10] 上画出参数曲线x sin t, y cos t, z t .【matlab 命令】clft=0:pi/50:10*pi;plot3(sin(t),cos(t),t)【输出结果】图10例7画函数Z ( X Y) 2 的图形.【matlab 命令】clfx=-3:0.1:3; y=1:0.1:5;[X,Y]=meshgrid(x,y);Z=(X+Y).^2;surf(X,Y,Z)shading flat【输出结果】图11例8画出马鞍曲面Z X 2 Y2 在不同视角的网格图.【matlab 命令】clfx=-3:0.1:3; y=1:0.1:5;[X,Y]=meshgrid(x,y);Z=X.^2-Y.^2;mesh(X,Y,Z)【输出结果】图123 习题1.某城市一年12个月的日平均气温(单位: 0C )分别为:-10,-6,5,10,20,25,30,24,22,19,10,6,试画出条形图. 2.作出函数 f ( x )cos(e x ) e x / 2) 在区间 x [4,4] 的图形3.作隐函数 sin( xy ) 0 在 [6,6] 内的图形.cos x 2 x 2 4.已知分段函数 y x x 1 ,作出 15 x 15 的函数图形. 2 sin( x 1) 1x 15.在同一直角坐标系中,作出函数 y5 的图形和函数 x 3 的图形.6.已知sin( x 2 2 )7.绘制空间图形:(墨西哥帽子).x 2 2。

关于MATLAB中分段函数的画法

关于MATLAB中分段函数的画法

关于MATLAB中分段函数的画法.txt如果你看到面前的阴影,别怕,那是因为你的背后有阳光!我允许你走进我的世界,但绝不允许你在我的世界里走来走去。

关于MATLAB中分段函数的画法最近拿到一题关于MATLAB的分段函数画法的题目,我在网上找了挺久,但没发现很多有用的资料.所以感觉很棘手.但是问题还是要解决,所以我就自己整理了些东西,不怕大家见笑.我把这些分段函数分为两类:一.对于y=f(x)这个模型来讲,一类是关于其中一个段是y为常量的一个模型,举例说明.例 1.y={0,(x<0);1,(x>=0)};在x>-10&x<10区间内的图形代码如下 :x=-10:0.01:10;y=ones(size(x));y(x<=0)=0;plot(x,y);axis([-10 10 -0.5 1.5]);这样的处理方法就是对于x是变量而Y为常量的而直接定义常数矩阵,再通过判断进行修改,只适合于Y为常量的基础上.________________________________________________华丽分割线_______________________________________________二.第二种是y=f(x),y是关于x的一个变量.需要将x进行赋值的分段函数.这种处理方法比较多.这里引用一段经典matlab分段画图的例子给大家(代码为蓝色区域):例 2: x=-3:0.01:3;y1=zeros(size(x));y2=zeros(size(x));y3=zeros(size(x));N=length(x);for k=1:Nif 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;endendy=y1+y2+y3;plot(x,y)这里运用的是将Y的值设置成三个与x的数量相等的空变量.然后分别依次讲X的值通过f(x)转换为Y然后画出图形并将三个图形进行组合.______________________________________________________华丽分割线_______________________________________________是否除了这个方法,还有其他的解决方案呢?是有的.这里将代码奉上,这个我告诉大家的第三个方法.x1=-3:0.01:-1;x2=-1:0.01:1;x3=1:0.01:3;y1=(-x1.^2-4*x1-3)/2;y2=-(x2).^2+1;y3=(-x3.^2+4*x3-3)/2;x=[x1,x2,x3];y=[y1,y2,y3];plot(x,y)axis([-3 3 0 1]);有人觉得,第一种类型应该包含在第二种类型里面.便想用这个方法解决第一个问题,却发现出错:还是用第一个例子吧.x1=-10:0.01:0;x2=0:0.01:10;y1=0;y2=1;x=[x1,x2];y=[y1,y2];plot(x,y);axis([-10 10 -0.5 1.5]);如果这样输入的话,看起来是没错,但是编译的时候通不过,有这样的提示:Vectors must be the same lengths.提示你的X,Y的长度不同,不能画图.怎样才能让X,Y的长度相同呢.这个有一个解决方法.使得这个方法通用性更强.就是+X*0;代码如下:x1=-10:0.01:0;x2=0:0.01:10;y1=0*x1;y2=1+0*x2;x=[x1,x2];y=[y1,y2];plot(x,y);axis([-10 10 -0.5 1.5]);可以达到图1相同的效果.不过这个方法有一个缺点就是无法设定图形的折点.比如例 2,你无法设定x=1和x=-1时,y的值.如果不是0.那么就有错误.__________________________________________________华丽分割线____________________________________________________现在说的最开始我讲的的那题.我讲它作为第三个例子来讲.是这样一题:y={x,(x>1);x^2,(x>=1&x<=4);pow2(x),(x>4)};在区间(-10 10)里面的图形.这是它的图形.那么大家想一下应该可以用几种方法解决呢?下面我介绍给大家的一种最古老的,最笨而实在的方法.通过IF函数判断然后算出Y 的值进行画图:代码如下:i=1;for x=-10:0.05:10if x<1y(i)=x;elseif x>=1&x<4y(i)=x.^2;else x>=4y(i)=pow2(x);endi=i+1;endx=-10:0.05:10;plot(x,y)这样通过计算出Y的值,然后再画出图形是可行的.继续,另一种方法:fun=@(x)x.*(x<1)+(x.^2).*(x>=1&x<4)+(pow2(x)).*(x>=0&x<pi);%计算函数值x=-10:10;y=fun(x);%绘制函数图形fplot(fun,[-10 10]);axis([-10 10 -10 20]);大家还想到什么方法?这里我用我上面提到的第三种方法来试试.x1=-10:0.01:1;x2=1:0.01:4;x3=4:0.01:10;y1=x1;y2=(x2).^2;y3=pow2(x3);x=[x1,x2,x3];y=[y1,y2,y3];plot(x,y)axis([-10 10 -10 20]);果然OK,那么到现在,大家学会了几种方式去画分段函数呢?*另外还有一种方法,是用stepwise函数直接计算分段函数,不过这个方法我查不到怎么用,如果大家有兴趣,可以自己去查下资料.举个例子y=-exp(10.5*(x+0.5)) x<-0.5y =exp(3.51*(x0.5))-2*exp(-3.51*(x+0.5)) (-0.5,0.5)y=-exp(10.5*(x+0.5)) x>0.5matlabx=-1:0.02:1;y=-exp(10.5*(x+0.5)).*( x<-0.5 )+...(exp(3.51*(x+0.5))-2*exp(-3.51*(x+0.5))).*(x>-0.5&x<0.5)...-exp(10.5*(x+0.5)).*(x>0.5);plot(x,y)semilogy(x,y)。

matlabM文件PPT课件

matlabM文件PPT课件
以文件名存入
然后在MATLAB命令窗口调用该函数:
[s,p]=fcircle(10)
MATLAB
系统文件——s函数
用于描述系统运动的专用函数,是特殊的 m 文件。 完整函数调用的命令格式:
s 函数有3类: 由simulink结构图自动创建 可用c语言程序设计mex文件直 接定义
用函数m文件编写
MATLAB
注意问题:
+ 1. 函数m文件第一行必须以单词function作为引 导词,表示该M文件是一个函数文件,必须遵循 如下形式: function [输出参数]=函数名(输入参数)
+ 2. 函数名的命名规则与变量名相同,m文件的文 件名必须是<函数名> .m。
+ 3.函数执行后,只保留最后的返回结果,不保留 任何中间过程。程序中的变量均为局部变量, 不保存在工作空间中,其变量只在函数运行期 间有效,随函数调用的结束而从工作空间消除。
文件的分类
M文件有两类:命令文件(脚本文件)和函数 文件。它们的扩展名均为.m。
①命令文件:将用户在MATLAB环境下直接输入的多条语 句或者命令,存 放为 .m 后缀的文件,在命令行键入文 件名,来替代在命令窗口输入多条语句,一次执行成批 命令。
②函数文件:它是有特定书写规范的M文件。如果M文件 第一行包含function, 则此文件为函数文件。每个函数 文件都定义一个函数。用来扩充Matlab的应用范围和满 足用户不同的实际需求。
MATLAB
2)函数帮助信息行 函数信息行:给出函数的帮助信息,帮助信息
要从%开头,并放在一行的开头,用help+函数名 可查询到;
3)函数体----是函数的功能实现部分 4)注释
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档