matlab入门及数组.ppt
《matlab入门及数组.ppt》由会员分享,可在线阅读,更多相关《matlab入门及数组.ppt(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第二讲第二讲 MATLABMATLAB基础知识与基础知识与数组数组介绍课本第一章介绍课本第一章1.31.3及第及第3 3章章提纲提纲MatlabMatlab入门(数值表示、变量、表达式)入门(数值表示、变量、表达式)数组(教材第数组(教材第3 3章和附录章和附录A A)提纲提纲MatlabMatlab入门(数值表示、变量、表达式入门(数值表示、变量、表达式)数组(教材第数组(教材第3 3章和附录章和附录A A)介绍一些基本规定。这里先介绍关于变量的若干规定。1 1、数值的记述、数值的记述 MATLAB的数值采用习惯的十进制表示,可以带小数点或负号。以下记述都合法。3 -99 0.001 9.
2、456 1.3e-34.5e33数值通常采用“占用64位内存的双精度”表示。eps。2 2、变量命名规则、变量命名规则l变量名、函数名是对字母大小写敏感的。如变量myvar和MyVar表示两个不同的变量。sin是MATLAB定义的正弦函数名,但SIN,Sin等都不是。l变量名的第一个字符必须是英文字母,其后最多可包含63个字符(英文、数字和下连符)。如myvar201是合法的变量名。l变量名中不得包含空格、标点、运算符,但可以包含下连符。如变量名my_var_201是合法的,且读起来更方便。而my,var201由于逗号的分隔,表示的就不是一个变量名。l用户自定义变量或函数名n不能与matlab
3、关键词同名,iskeyword VarNamen不能与Matlab自用变量名、函数名、文件夹相同 exist VarName3 3、MATLABMATLAB默认的预定义变量默认的预定义变量 在MATLAB中有一些所谓的预定义变量(Predefined Variable),见下表。每当MATLAB启动,这些变量就被产生。这些变量都有特殊含义和用途。建议:用户在编写命令和程序时,应尽可能不对下表所列预定义变量名重新赋值,以免产生混淆。表表MATLABMATLAB中最常用的预定义变量中最常用的预定义变量不是一个数(Not a Number),如0/0,虚单元圆周率说明假如用户对表中任何一个预定义变量
4、进行赋值,则那个变量的默认值将被用户新赋的值“临时”覆盖。所谓“临时”是指:假如使用clear命令清除MATLAB内存中的变量,或MATLAB命令窗被关闭后重新启动,那么所有的预定义变量将被重置为默认值,不管这些预定义变量曾被用户赋过什么值。l被0 除是允许的。它不会导致程序执行的中断,只是在给出警告信息的同时,用一个特殊名称(如Inf,NaN)记述。这个特殊名称将在以后的计算中以合理的形式发挥作用。4 4、运算符和表达式、运算符和表达式(1)标量算术运算符在MATLAB中的表达方式,见下表。(3.3节数组和3.4节矩阵)(2)Matlab表达式由已赋值变量、运算符和已经存在的函数组成。可通过
5、等号“=”向某个变量赋值。如无等号,结果默认保存在ans变量中说明lMatlabMatlab用用“”和和”/”/”分别表示分别表示“左除左除”和和“右除右除”。对标量而言,两者没有区别。对。对标量而言,两者没有区别。对矩阵产生不同影响。(后面详细说明)矩阵产生不同影响。(后面详细说明)lMATLABMATLAB表达式的书写规则与表达式的书写规则与“手写方式手写方式”几乎完全相同。几乎完全相同。l表达式按与常规相同的优先级自左至右执行表达式按与常规相同的优先级自左至右执行运算。运算。l优先级:指数运算级别最高,乘除次之,加优先级:指数运算级别最高,乘除次之,加减最低。减最低。l括号改变运算的次序
6、。括号改变运算的次序。5 5、面向复数设计的运算、面向复数设计的运算MATLABMATLAB的所有运算都是定义在复数域上的。这样的所有运算都是定义在复数域上的。这样设计的好处是:在进行运算时,不必像其他程序语言设计的好处是:在进行运算时,不必像其他程序语言那样把实部、虚部分开处理。为描述复数,虚数单位那样把实部、虚部分开处理。为描述复数,虚数单位用预定义变量用预定义变量 i i或或 j j表示。表示。【例】复数表达,及计算。本例演示:正确的复数输入法;涉及复数表示方式的基本命令。1)经典教科书的直角坐标表示法z1=4+3i%合法,但建议少用或不用 z1=4.0000+3.0000i l在这种书
7、写格式中,3i是一个完整的虚数,在3和i之间不许“空格”存在2)采用运算符构成的直角坐标表示法和极坐标表示法z2=1+2*iz2=1+2*i%运算符构成的直角坐标表示法运算符构成的直角坐标表示法z3=2*exp(i*pi/6)z3=2*exp(i*pi/6)%运算符构成的极坐标表示法运算符构成的极坐标表示法z=z1*z2/z3z=z1*z2/z31.8840+5.2631i z2=1.0000+2.0000iz3=z=1.7321+1.0000i运行结果3)复数的实虚部、模和幅角计算real_z=real(z)real_z=real(z)image_z=imag(z)image_z=imag(
8、z)magnitude_z=abs(z)magnitude_z=abs(z)angle_z_radian=angle(z)angle_z_radian=angle(z)%弧度单位弧度单位angle_z_degree=angle(z)*180/piangle_z_degree=angle(z)*180/pi%度数单位度数单位【例】图示复数本例演示:MATLAB的运算在复数域上进行;命令后“分号”的作用;复数加法的几何意义;展示MATLAB的可视化能力。的和(下图)。z1=4+3*i;z2=1+2*i;z1=4+3*i;z2=1+2*i;z12=z1+z2z12=z1+z2%以下用于绘图以下用于绘
9、图clf,hold onclf,hold onplot(0,z1,z12,-b,LineWidth,3)plot(0,z1,z12,-b,LineWidth,3)plot(0,z12,-r,LineWidth,3)plot(0,z12,-r,LineWidth,3)plot(z1,z12,ob,MarkerSize,8)plot(z1,z12,ob,MarkerSize,8)hold off,grid on,hold off,grid on,axis equalaxis equalaxis(0,6,0,6)axis(0,6,0,6)text(3.5,2.3,z1)text(3.5,2.3,z1
10、)text(5,4.5,z2)text(5,4.5,z2)text(2.5,3.5,z12)text(2.5,3.5,z12)xlabel(real)xlabel(real)ylabel(image)ylabel(image)shgshg%在一个物理行中,允许输入多条命令。在一个物理行中,允许输入多条命令。%但各命令间要用但各命令间要用“分号分号”或或“逗号逗号”分开。分开。%命令后采用命令后采用“分号分号”,使运算结果不显示。,使运算结果不显示。%clf%clf清空图形窗。逗号用来分隔两个命令。清空图形窗。逗号用来分隔两个命令。【例】用MATLAB计算 能得到 2 吗?1)直接计算时,得到处
11、于第一象限的方根。a=-8;a=-8;r_a=a(1/3)r_a=a(1/3)%求求3 3次根次根 2)的全部方根计算如下:%先构造一个多项式p=1,0,0,-a;p=1,0,0,-a;%p是多项式3)图形表示MR=abs(R(1);MR=abs(R(1);%计算复根的模计算复根的模t=0:pi/20:2*pi;t=0:pi/20:2*pi;%产生参变量在产生参变量在0 0到到2*pi2*pi间的一组采样点间的一组采样点x=MR*sin(t);x=MR*sin(t);y=MR*cos(t);y=MR*cos(t);plot(x,y,b:),grid on plot(x,y,b:),grid o
12、n%画一个半径为画一个半径为R R的圆的圆%注意注意“英文状态逗号英文状态逗号”在不同位置的作用在不同位置的作用hold onhold onplot(R(2),.,MarkerSize,30,Color,r)plot(R(2),.,MarkerSize,30,Color,r)%画第一象限的方根画第一象限的方根plot(R(1,3),o,MarkerSize,15,Color,b)plot(R(1,3),o,MarkerSize,15,Color,b)%画另两个方根画另两个方根axis(-3,3,-3,3),axis squareaxis(-3,3,-3,3),axis square%保证屏幕显
13、示呈真圆保证屏幕显示呈真圆hold offhold off 注:注:MarkerSizeMarkerSize图形对象属性,点大小图形对象属性,点大小 square-square-轴属性为方形轴属性为方形说明l本例有助于理解MATLAB的计算特点。l对复数进行方根运算时,MATLAB只给出处于“第一象限”的那个根,运算只返还一个“主解”。要得复数的全部方根,必须专门编写程序。6 6、面向数组设计的运算、面向数组设计的运算 在MATLAB中,标量数据被看作 的数组(Array)数据。所有的数据都被存放在适当大小的数组中。为加快计算速度(运算的向量化处理),MATLAB对以数组形式存储的数据设计了两
14、种基本运算:一种是所谓的数组运算;另一种是所谓的矩阵运算。在此仅以算例展示MATLAB的计算特点,在后续的课程中更详细的叙述。【例】实数数组的“一行”输入法。AR=1,3;2,4AR=1,3;2,4 实数数组的“分行”输入法。AI=5,7AI=5,76,86,8 说明l在MATLAB中,不必事先对数组维数及大小做任何说明,内存将自动配置。l二维数组输入的三大要素:数组标识符“”;元素分隔符空格或逗号“,”;数组行间分隔符分号“;”或“回车键”。lMATLAB对字母大小写是敏感的。比如本例中的数组赋给了变量AR,而不是 Ar,aR,或ar。l在全部键入一个命令行内容后,必须按下 Enter 键,
15、该命令才会被执行。【例】对复数数组进行求实部、虚部、模和幅角的运算。l本例演示:复数数组的生成;MATLAB命令对数组元素“并行操作”的实质。1)创建复数数组AR=1,3;2,4;AI=5,7;6,8;AR=1,3;2,4;AI=5,7;6,8;A=AR-AI*iA=AR-AI*i%形成复数矩阵形成复数矩阵 2)求复数数组的实部和虚部A_real=real(A)A_real=real(A)A_image=imag(A)A_image=imag(A)3)求复数数组中各元素的模和幅角循 环法(笨拙!)forfor m=1:2m=1:2 for for n=1:2 n=1:2 Am1(m,n)=ab
16、s(A(m,n);Am1(m,n)=abs(A(m,n);Aa1(m,n)=angle(A(m,n)*180/pi;Aa1(m,n)=angle(A(m,n)*180/pi;%以度为单位计算幅角以度为单位计算幅角 endendendendAm1,Aa1 Am1,Aa1 4)求复数数组中各元素的模和幅角直接法Am2=abs(A)Am2=abs(A)Aa2=angle(A)*180/piAa2=angle(A)*180/pi 说明l函数real,imag,abs,angle是同时、并行地作用于数组的每个元素。对4个元素运算所需的时间大致与对单个元素所需时间相同。这有利于运算速度的提高。这是“向量化
17、”运算的一种形式。l本例给出了循环法求各元素模和幅角的命令。这是很笨拙的计算方法。对于MATLAB以外的许多编程语言来说,可能不得不采用“循环”处理方式来解本例。记住:对于MATLAB来说,应该尽量摒弃“循环”处理,而采用“向量化”处理方式。【例】画出衰减振荡曲线,的取值范围是 t=0:pi/50:4*pi;t=0:pi/50:4*pi;%定义自变量定义自变量t t的取值数组的取值数组y=exp(-t/3)y=exp(-t/3).*.*sin(3*t);sin(3*t);%计算与自变量相应的计算与自变量相应的y y数组。数组。plot(t,y,-r,LineWidth,2)plot(t,y,-
18、r,LineWidth,2)%绘制曲线绘制曲线axis(0,4*pi,-1,1)axis(0,4*pi,-1,1)xlabel(t),ylabel(y)xlabel(t),ylabel(y)注意:乘法符前面的小黑点。注意:乘法符前面的小黑点。乘法符前面的小黑点,称为点乘,对于矩阵的点乘,即为对应元素的乘法例如:A=A1,A2,A3,A4;B=B1,B2,B3,B4C=A.*B=A1*B1,A2*B2,A3*B3,A4*B4说明l本例第二条命令中的“.*”符号表示乘法是在两个数组相同位置上的元素间进行的。Matlab中把这种乘法称为“数组乘”或简称“点乘”。数组乘的引入,不但使得程序简洁自然,而
19、且避免了耗费机时的“循环计算”。关于数组运算的详细叙述以后进行。l本例第二条命令是典型的“向量化”处理形式。建议同学们,只要可能,应尽量采用“向量化”运算形式。【例】复数矩阵的生成,既计算矩阵A,B的乘积 本例演示:MATLAB矩阵运算命令的简捷性。A=1-5*i,3-7i;2-6*i,4-8*i A=1-5*i,3-7i;2-6*i,4-8*i%复数数组的又一种输入方式复数数组的又一种输入方式B=3+2i,2+6i;5+3*i,4-2*i B=3+2i,2+6i;5+3*i,4-2*i%注意标点符号的作用注意标点符号的作用C=A*B C=A*B%矩阵乘法矩阵乘法 说明l当数组被赋予“变换”属
20、性时,二维数组就被称为矩阵。只有当两个矩阵的“内维大小相等”时,矩阵乘法才能进行。本例中,矩阵A的列数与矩阵B的行数相等,所以可以进行A乘B。l从表达方式看,“矩阵相乘”的命令格式与“标量相乘”命令格式一样。在其他编程语言中,矩阵乘法不得不依赖“循环”进行。lMatlab之所以能把矩阵运算表达得像标准“线性代数”那样简洁易读、自然流畅,那是由于Matlab的设计者采用了“面向对象”编程技术。提纲提纲Matlab入门(数值表示、变量、表达式)数组(教材第数组(教材第3 3章和附录章和附录A A)lMatlab的数据保存和传输的基本单位不是标量,而是复数阵列型数据,即数组lMatlab算数、关系、
21、逻辑运算的基本运算单元也不是标量,而是数组lMatlab提供的许多M函数的基本作用单元也不是标量也是数组数组运算及数组化编程数组运算及数组化编程数组及其运算在数组及其运算在MatlabMatlab是最基本元素是最基本元素1 1 数组、结构数组、结构l一个个标量数据被组织成矩形或长方体型的阵列集合,称一个个标量数据被组织成矩形或长方体型的阵列集合,称为数组为数组矩阵:由矩阵:由mnmn个标数组成的排成个标数组成的排成m m行行n n列的一个矩形的数表,其中列的一个矩形的数表,其中0000矩阵为空矩阵矩阵为空矩阵()()。数表中第。数表中第i i(1im)(1im)行第行第j(1jn)j(1jn)
22、列的数据列的数据称为矩阵元素称为矩阵元素 二维数组二维数组标量标量 :1111的矩阵,即为只含一个数的矩阵。的矩阵,即为只含一个数的矩阵。向量:向量:1n1n或或n1n1的矩阵,即只有一行的或者一列的矩阵。只有一行的矩阵,即只有一行的或者一列的矩阵。只有一行的矩阵称为行向量,只有一列的矩阵称为列向量。数表中第的矩阵称为行向量,只有一列的矩阵称为列向量。数表中第i i(1in)(1in)个数据称为向量元素。个数据称为向量元素。更一般数组是矩阵的延伸,一般指多维数组,其中标量、向量和矩阵更一般数组是矩阵的延伸,一般指多维数组,其中标量、向量和矩阵都是数组的特例。都是数组的特例。l获取数组结构参数的
23、获取数组结构参数的M M命令命令Nd=ndims(A)Nd=ndims(A)维度数目维度数目S=size(A)S=size(A)维度规模维度规模Snd=size(A,nd)Snd=size(A,nd)某维度规模某维度规模L=length(A)L=length(A)长度长度Ne=numel(A)Ne=numel(A)总数目总数目2 2 一维数组的创建和寻访一维数组的创建和寻访创建创建:(1 1)逐个元素输入法)逐个元素输入法x=2pi/2sqrt(3)3+5ix=2pi/2sqrt(3)3+5ix=2,pi/2,sqrt(3),3+5ix=2,pi/2,sqrt(3),3+5i(2 2)冒号生成
24、法)冒号生成法(x=a:inc:b)(x=a:inc:b)x=1:2:10;y=1:100;z=100:-3:1;x=1:2:10;y=1:100;z=100:-3:1;(3 3)线性)线性(或对数或对数)定点法定点法x=linspace(a,b,n)(x=linspace(a,b,n)(等差等差)同同x=a:(b-a)/(n-1):bx=a:(b-a)/(n-1):bx=logspace(a,b,n)(x=logspace(a,b,n)(等比等比)%n)%n为数组长度为数组长度例例:x=linspace(1,7,5):x=linspace(1,7,5)访问访问:x(3),x(1,35),x(
25、1:3),x(4:end),x(find(x4)x(3),x(1,35),x(1:3),x(4:end),x(find(x4)(4)(4)函数生成法例函数生成法例:ones(1,6):ones(1,6)3.3.二维数组的创建和寻访二维数组的创建和寻访(1 1)小规模数组直接创建)小规模数组直接创建:A=23;5,9;A=23;5,9;(2 2)中规模数组用数组编辑器或文件创建)中规模数组用数组编辑器或文件创建(3 3)用)用matlabmatlab函数创建数组函数创建数组lrand/rand/randnrandn均匀均匀/正态分布随机数组正态分布随机数组leyeeye单位数组单位数组lzero
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 入门 数组
限制150内