matlab-note.doc_第1页
matlab-note.doc_第2页
matlab-note.doc_第3页
matlab-note.doc_第4页
matlab-note.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MatLab notes:先来初步认识matlab:Matlab是第四代语言,也是一种混合语言,基于Fortran和C。Matlab语言和与C这种第三代语言肯定是不可同日而语。相对于C语言而言,Matlab的最大优点是灵活。Matlab灵活到什么程度呢?Matlab灵活性本质上是基于其高度的智能化,高智能化的本质是把大量的运算和分析都交给软件去做。而为此付出的代价就是软件本身消耗了大量的硬件资源,因此Matlab程序的运行速度会比较慢。Matlab编程语言和C语言的不同之处:1.分号在C语言中作为语句的结束,而空格被忽略,因此语句后必须有分号;而matlab中分号、逗号以及空格的意义相近,都可作为结束符号来用;特别是逗号和空格,几乎没有区别。但是在数组定义中,分号和空格是有区别的。2.matlab语言的语法规则比C语言要宽松得多。例如,C语言中的任何一个变量在使用前都要定义其类型,而在matlab中是不需要的。除非专门定义,否则matlab中的任何变量都具有所有的数据类型。例如,a=1;a=c;a=0,1;只输入这三个语句也可以在matlab中正常执行。Matlab编程基础:1、 变量最重要特点:Matlab不需要声明变量类型,可以直接对变量进行赋值,软件根据需要自动决定其数据类型(非整数结果均采用双精度)。常用常数变量:矩阵的特征值函数:常用数据:图形颜色、标记和线形参数表色彩字符所定颜色线型字符线型格式标记符号数据点形式标记符号数据点形式y黄-实线(默认).点右三角形axis函数(坐标控制函数)的调用格式为:axis(xmin xmax ymin ymax zmin zmax)axis常用的格式还有:axis equal: 纵、横坐标轴采用等长刻度。axis square: 产生正方形坐标系(缺省为矩形)。axis auto: 使用缺省设置。axis off: 取消坐标轴。axis on:显示坐标轴。常用常量:inf 正无穷大运算符优先级:常用函数:rand (M, N) 返回一个M行N列的随机矩阵,元素值位于(0,1)范围内。当只有一个参数时,返回N阶方阵。randn (M, N) 与rand基本相同,不同的地方是rand的取值范围为(0,1),且取值为均匀分布。而randn的取值为高斯分布,此高斯函数的均值期望为0,方差为1。magic(N) 返回魔术矩阵。魔术矩阵是指矩阵的行、列、对角元素和都相等。当N=3时,方阵的行、列、对角和均为15。N不能为2。eps():精度函数,eps()参数为计算精度,缺省值为2 (-52)。y=x % y为x的共轭复数。linspace (m, n) 返回m, n 区间内的100个等间隔数值组成的向量。MatLab绘图:1.在比较运算中,若两个矩阵内含有复数元素,则对于“”、“=”这四种逻辑运算符只比较两个矩阵相对应位置上的元素的实部,不比较虚部!而对于“=”和“=”这两种比较运算符则既比较元素的实部,又比较虚部!例如,若矩阵z和z1在一行一列的元素分别为5+6i和3+8i,则zz1为真,zz1,zz1和z=z1的结果均为假,只有z=z1的结果为真!2.在矩阵逻辑运算中,all和any这两个函数对于向量和矩阵的运算是不一样的。如果是向量,则返回一个逻辑值;如果是矩阵,则对每一列都返回一个值。还有,find函数返回的是元素的序号,而且排序的顺序是从上向下、从左向右,即一列一列的排序元素。3.注意矩阵和数组运算的区别,数组不按照线性代数的规则去运算。例如乘法,数组是相应位置的元素相乘,而不是按照线代的规则去计算。4.对于多项式函数中,poly()返回的是多项式的系数向量,而poly2str()返回的是以一个向量为系数的多项式字符串,因此poly2str()不能作为roots()的参数,但poly()可以。即一个向量即表示向量,又可表示为多项式,关键看调用什么函数。5.matlab中的break语句大有玄机,break语句应该是跳出循环结构的,也就是说执行到break语句后将跳出循环,执行循环结构后的语句。但是在matlab中,break语句是跳到下一个“end”符号后执行语句,同时也跳出循环。例如,有以下程序:for i=100:200if rem(i,21)=0break;endx=12;end在这个程序中“x=12”这条语句被执行了,这就说明程序执行到break后是跳到第一个end后继续执行语句的。而第一个end是和if配对的,而不是和for配对的,所以不能说break是跳出循环结构,如果是跳出循环结构,就是跳到第二个end后,即x=12不该被执行。6.matlab不支持给类似x1,x2,形式的向量或矩阵直接赋值。例如,有x1=1,x2=2,x3=3,x4=4。那么,语句x1,x2=x3,x4或者x1,x2=0,1都是不成立的。而语句x1=1,x1=x2或x1=1,2都是成立的。对于赋值语句左边是中括号的这种情况,只有当幅值语句的右边是函数数才能使用。例如,x1,x2=function(a,b),这个成立的。而语句x1,x2=x3,x4不成立的原因是x1,x2和x3,x4是两个向量,而这两个向量是没有向量名的,所以不成立。7.matlab平面绘图函数plot(x,y)分析:对于绘图函数plot(x,y),则x的相关参数为横坐标,y的相关参数为纵坐标。其参数x、y可以有三种形式:1)x、y都是向量:x和y必须为同维向量。x为横坐标,y为纵坐标。x和y相对位置上的数值可以看做是函数y=f(x)的取值。如x=1 2 3;y=4 5 6。2)x、 y一个是向量,一个是矩阵:此时,向量的维度必须和矩阵的行或者列的数量一致。若x为m维向量,y为n乘m维矩阵,则x与y的每一行形成y=f(x)函数,函数数量等于y的行数。若x为m乘n维矩阵,y为m维向量,则x的每一列都和y形成y=f(x)函数,函数数量等于x的列数。3)x、y均为矩阵:x、y必须是同等形式的矩阵,必须均为m乘n形式。此时x的每一列和y的每一列形成y=f(x)函数,行数数量等于列数。8.matlab中的title函数格式为title(TEXT),若在TEXT中含有单引号,则需表示为两个单引号形式(注意:不是双引号!)。例如,title(abcd)会显示为abcd。9.对于plot函数,当只有一个参数时,函数的横坐标会有不同定义。下面分情况讨论之。y为全实数:当y为一个向量时,plot(y)的横坐标是向量y的元素下标,若y有5个元素,则横坐标为1、2、3、4、5,图形是这五个点连起来的折线。当y为一个矩阵式,plot(y)是按列来绘图的,就是将每列看成是一个向量,曲线数量等于矩阵列数,横坐标仍然为元素下标。y含有虚数:此时,plot(y)的横坐标不是元素下标了,而是复数的虚坐标,纵坐标则是实坐标,其他规则不变。10.对于plot3函数和mesh函数的比较。函数plot3用于生成三维曲线,而mesh函数用于生成三维曲面。曲面和曲线的本质区别仅仅是对于其定义域的要求不同,曲线的定义域是一个无限长向量,而曲面的定义域是无数个无限长向量(或者维度为无限大的矩阵)。但在数字计算中,不可能表示成无限长的向量或矩阵。因此实际应用中的向量或者矩阵都是有限维度的,得出的图形是这些点的离散点连起来的折线,当点足够多时,看起来曲线是平滑的。下面回归正题。对于三维曲线,当定义域x,y是一维向量时候,那么函数z=f(x,y)在xOy平面上的定义域区域仅仅是一条直线,而不是一个区域,此时z=f(x,y)就是一条空间曲线了。需要注意的是,当x与y有相互运算时,x与y的向量数量应该是一样的,且应采用数组计算形式,因为是x与y对应元素进行计算。正如你所想,如果将xOy平面上的定义域换成一个平面而不是一条直线,就可以将函数z=f(x,y)从空间曲线转换为空间曲面。对于三维曲面,关键则是如何定义面积区域的问题。定义面积区域,毫无疑问需要的是矩阵。由于在二维函数y=f(x)中采用的是列向量对应原则,因此要充分利用这一点。例如,若想将x与y在-1,1区间内各采样6个点。则可将两个矩阵表示为:x = -1.0000 -0.6000 -0.2000 0.2000 0.6000 1.0000 -1.0000 -0.6000 -0.2000 0.2000 0.6000 1.0000 -1.0000 -0.6000 -0.2000 0.2000 0.6000 1.0000 -1.0000 -0.6000 -0.2000 0.2000 0.6000 1.0000 -1.0000 -0.6000 -0.2000 0.2000 0.6000 1.0000 -1.0000 -0.6000 -0.2000 0.2000 0.6000 1.0000y = -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.6000 0.6000 0.6000 0.6000 0.6000 0.6000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 由于采用列对应原则,可以看到,x的第一列对应y的第一列,表示为当x= -1时,y的取值。因此,矩阵x与y表示的定义域是一个由36个点组成的点阵。如下图所示:下面在此定义域内用plot3和mesh函数分别生成z=x2+y2图形。由于是列对应,因此plot3生成的是6条离散空间曲线,如下图所示:而mesh函数只是把这6条曲线用网格连起来,形成锥体曲面,如下图所示:需要注意的是,矩阵和向量一样,x与y的相关运算仍然是相同下标的采样点进行运算,因此必须保证矩阵x与y有相同的元素数量且要有相同的行列数(为了保证采样点形成矩形网格),而不必都是方阵。例如x=1,2,3;1,2,3和y=1,1,1;2,2,2也是可以的。当然,方阵与矩阵仅仅是采样间隔上的不同,不会对图形产生大的影响,因此为了方便起见,最好用方阵(个人建议)。此外,z=f(x,y)中的x,y运算都是采用数组计算的形式。例如,对于z=x2+y2,在程序中应写为:z=x.2+y.2mesh()的类似函数:meshz()带底座;meshc()带等高线;surf()颜色随高度变化,缺省值为颜色随z满色阶变化。下图为四个函数的对比:上图曲面函数为z=sin(sqrt(x.2+y.2)./sqrt(x.2+y.2+eps)标准曲面函数:x,y,z=cylinder (R, N) 返回圆柱体函数。R为圆柱体半径向量,N为一个圆周上的采样点数量。这个圆柱体是以xOy平面上的原点为底面圆的中心,圆柱体的轴心为z轴。x,y,z=sphere (N) 返回标准球体函数,半径为1,中心为原点。N为标准球面面函数中三个变量x,y,z的矩阵维数,缺省值为20。x,y,z=peaks (N) 一种多峰函数,N的意义与sphere函数相同。其他三维函数:三维条形图bar3(向量或矩阵),三维饼图pie3(向量或矩阵),三维杆图stem3(向量或矩阵),fill3(矩阵,矩阵,矩阵,颜色)以前三个矩阵列对应参数为定点,填充多边形,多边形数量为三个矩阵的列数。三个矩阵形式需相同。waterfall (x,y,z) 瀑布图;contour3 (x,y,z,n,k) 等高线图,n为等高线等级。view函数:用于看图。view (az, el) 其中az为方位角,el为仰角。着色函数:三维表面图形的着色 三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。 shading faceted命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色。这是系统的缺省着色方式。shading flat命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。shading interp命令在网格片内采用颜色插值处理,得出的表面图显得最光滑。MATLAB提供了灯光设置的函数,其调用格式为:light(Color,选项1,Style,选项2,Position,选项3)图形的裁剪处理例. 绘制三维曲面图,并进行插值着色处理,裁掉图中x和y都小于0部分x,y=meshgrid(-5:0.1:5);z=cos(x).*cos(y).*exp(-sqrt(x.2+y.2)/4);surf(x,y,z);shading interp;pause %程序暂停i=find(x=0&y 0 & OFFSET PERIOD.% -2 0; : Variable step discrete sample time% where FLAG=4 is used to get time of% next hit.% There can be more than one sample time providing% they are ordered such that they are monotonically% increasing. Only the needed sample times should be% specified in TS. When specifying more than one% sample time, you must check for sample hits explicitly by% seeing if% abs(round(T-OFFSET)/PERIOD) - (T-OFFSET)/PERIOD)% is within a specified tolerance, generally 1e-8. This% tolerance is dependent upon your models sampling times% and simulation time.% You can also specify that the sample time of the S-function% is inherited from the driving block. For functions which% change during minor steps, this is done by% specifying SYS(7) = 1 and TS = -1 0. For functions which% are held during minor steps, this is done by specifying% SYS(7) = 1 and TS = -1 1.% SIMSTATECOMPLIANCE = Specifices how to handle this block when saving and% restoring the complete simulation state of the% model. The allowed values are: DefaultSimState,% HasNoSimState or DisallowSimState. If this value% is not speficified, then the blocks compliance with% simState feature is set to UknownSimState. % Copyright 1990-2009 The MathWorks, Inc.% $Revision: 1.18.2.4 $ % The following outlines the general structure of an S-function.%switch flag, % % Initialization % % case 0, sys,x0,str,ts,simStateCompliance=mdlInitializeSizes; % % Derivatives % % case 1, sys=mdlDerivatives(t,x,u); % % Update % % case 2, sys=mdlUpdate(t,x,u); % % Outputs % % case 3, sys=mdlOutputs(t,x,u); % % GetTimeOfNextVarHit % % case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); % % Terminate % % case 9, sys=mdlTerminate(t,x,u); % % Unexpected flags % % otherwise DAStudio.error(Simulink:blocks:unhandledFlag, num2str(flag); end % end sfuntmpl %=% mdlInitializeSizes% Return the sizes, initial conditions, and sample times for the S-function.%=%function sys,x0,str,ts,simStateCompliance=mdlInitializeSizes % call simsizes for a sizes structure, fill it in and convert it to a% sizes array.% Note that in this example, the values are hard coded. This is not a% recommended practice as the characteristics of the block are typically% defined by the S-function parameters.%sizes = simsizes; sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs = 0;sizes.NumInputs = 0;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1; % at least one sample time is needed sys = simsizes(sizes); % initialize the initial conditions%x0 = ; % str is always an empty matrix%str = ; % initialize the array of sample times%ts = 0 0; % Specify the block simStateCompliance. The allowed values are:% UnknownSimState, The default setting; warn and assume DefaultSimState% DefaultSimState, Same sim state as a built-in block% HasNoSimState, No sim state% DisallowSimState Error out when saving or restoring the model sim statesimStateCompliance = UnknownSimState; % end mdlInitializeSizes %=% mdlDerivatives% Return the derivatives for the continuous states.%=%function sys=mdlDerivatives(t,x,u) sys = ; % end mdlDerivatives %=% mdlUpdate% Handle discrete state updates, sample time hits, and major time step% requirements.%=%function sys=mdlUpdate(t,x,u) sys = ; % end mdlUpdate %=% mdlOutputs% Return the

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论