第二讲-Matlab语言程序设计课件

上传人:无*** 文档编号:241662513 上传时间:2024-07-14 格式:PPT 页数:64 大小:2.04MB
返回 下载 相关 举报
第二讲-Matlab语言程序设计课件_第1页
第1页 / 共64页
第二讲-Matlab语言程序设计课件_第2页
第2页 / 共64页
第二讲-Matlab语言程序设计课件_第3页
第3页 / 共64页
点击查看更多>>
资源描述
第二讲第二讲 MATLAB 语言程序设计基础语言程序设计基础 Matlab基础与应用基础与应用张文静张文静2基本数据类型基本运算与输入输出程序流程语句文件编写与调试编程技巧主要内容主要内容3基本数据类型基本数据类型基本运算与输入输出程序流程语句文件编写与调试编程技巧主要内容主要内容43.1 基本数据类型基本数据类型数值型:双精度、单精度、整数字符串型函数句柄Java类逻辑类单元结构数据结构体53.1.1 变量、常量与赋值语句结构变量、常量与赋值语句结构变量命名规则变量命名规则 变量名区分大小写;变量名最多不超过63个字符;变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点、空格;MATLAB的保留关键字不能作为变量名。6MATLAB MATLAB 保留常量保留常量3.1.1 变量、常量与赋值语句结构变量、常量与赋值语句结构7赋值语句结构赋值语句结构3.1.1 变量、常量与赋值语句结构变量、常量与赋值语句结构u 直接赋值=u函数调用返回变量列表=函数名(输入变量列表)8矩阵:纵横排列的二维数据表格向量:矩阵只有一行或一列时,就成为向量标量:矩阵只有一行一列,就成为标量矩阵元素:实数或复数或表达式矩阵输入方法:直接输入法;利用M文件建立矩阵3.1.2 矩阵的矩阵的MATLAB表示表示简单矩阵简单矩阵9行向量列向量 A=1;2;3;4;5A=1 2 3 4 5 A=1 2 3,4,5A=1 2 3 4 53.1.2 矩阵的矩阵的MATLAB表示表示简单矩阵简单矩阵10简单矩阵简单矩阵A=1 2 3;4,5,6;7 8 9A=1 2 3 4 5 6 7 8 9例:A=1 2 34 5 67 8 9A=1 2 3 4 5 6 7 8 9输入方法1:输入方法2:3.1.2 矩阵的矩阵的MATLAB表示表示简单矩阵简单矩阵11矩阵元素还可以由表达式构成,例如 x=-1.3,sqrt(3),(1+2+3)*4/5得到如下结果:x=-1.3000 1.7321 4.8000矩阵元素可以用下标变量的形式来引用 x(5)=abs(x(1)x=-1.3000 1.7321 4.8000 0 1.30003.1.2 矩阵的矩阵的MATLAB表示表示简单矩阵简单矩阵12 B=1 2;3 4+1i*5 6;7 8 B=1+5i 2+6i;3+7i 4+8i3.1.2 矩阵的矩阵的MATLAB表示表示复数矩阵复数矩阵 注:矩阵元素内部不能有空格;数字和i之间不能留空格,1i中的1不可忽略(有些版本可以忽略)。13空矩阵 X=把一个空矩阵赋给x。特殊矩阵 伴随矩阵,对角矩阵,万达摩方阵,魔术矩阵 全0矩阵,全1矩阵,随机数矩阵,单位矩阵,线性等距向量,对数等分向量,设三维绘图基底坐标平面3.1.2 矩阵的矩阵的MATLAB表示表示空矩阵与特殊矩阵空矩阵与特殊矩阵14 利用冒号表达式建立一个向量,一般格式是:e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。a=0:0.5:10用linspace函数产生行向量,其调用格式为:linspace(a,b,n),其中a和b是生成向量的第一个和最后一个元素,n是元素总数。b=linspace(0,10,20)显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价3.1.2 矩阵的矩阵的MATLAB表示表示特殊矩阵特殊矩阵15 生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。例:求多项式 的伴随矩阵,可用命令 A=1,0,-7,6;compan(A)ans=0 -7 6 1 0 0 0 1 03.1.2 矩阵的矩阵的MATLAB表示表示特殊矩阵特殊矩阵伴随矩阵:eig(A)ans=-3.0000 2.0000 1.000016在区间20,50内均匀分布的5阶随机矩阵 x=20+(50-20)*rand(5)均值为0.6、方差为0.1的5阶正态分布随机矩阵 y=0.6+sqrt(0.1)*randn(5)3.1.2 矩阵的矩阵的MATLAB表示表示特殊矩阵特殊矩阵随机矩阵:17 建立一个33零矩阵:zeros(3)建立一个32零矩阵:zeros(3,2)设A为23矩阵,则可以用zeros(size(A)建立一个与矩阵A同样大小零矩阵:A=1 2 3;4 5 6;%产生一个23阶矩阵Azeros(size(A)%产生与A同样大小的零矩阵3.1.2 矩阵的矩阵的MATLAB表示表示特殊矩阵特殊矩阵零矩阵:18 每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,n2共n2个整数组成。求魔方矩阵的函数是magic(n),其功能是生成一个n阶魔方阵。magic(3)ans=8 1 63 5 74 9 23.1.2 矩阵的矩阵的MATLAB表示表示特殊矩阵特殊矩阵魔方矩阵:19 除第一行第一列外,其他每个元素都与左上角的元素相同。生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x,y均为向量,两者不必等长。例 toeplitz(1:3)toeplitz(1:3)ans=ans=1 2 31 2 32 1 22 1 23 2 13 2 13.1.2 矩阵的矩阵的MATLAB表示表示特殊矩阵特殊矩阵托普利兹矩阵:20 最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个万达摩矩阵。在MATLAB中,函数vander(V)生成以向量V为基础向量的万达摩矩阵。例:vander(1;2;3;5)ans=1 1 1 1 8 4 2 1 27 9 3 1 125 25 5 1 3.1.2 矩阵的矩阵的MATLAB表示表示特殊矩阵特殊矩阵万达摩方阵:大矩阵可由方括号中的小矩阵或向量建立 例:执行如下命令 A=A;1 3 5 将生成新的矩阵新增向量与原矩阵必须维数匹配,否则出现错误信息3.1.2 矩阵的矩阵的MATLAB表示表示建立大矩阵建立大矩阵22通过下标引用矩阵的元素 A(3,2)采用矩阵元素的序号(相应元素在内存中的排列顺序)来引用矩阵元素 A(5)3.1.2 矩阵的矩阵的MATLAB表示表示矩阵元素引用矩阵元素引用 在MATLAB中,矩阵元素按列存储,先第一列,再第二列,依次类推(序号(Index)与下标(Subscript)是一一对应的,以mn矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得)。23A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素;A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元素;A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。3.1.2 矩阵的矩阵的MATLAB表示表示矩阵拆分矩阵拆分(1)利用冒号表达式获得子矩阵注:end可用于表示某一维的末尾元素下标。24 在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为 X=注意:X=与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。3.1.2 矩阵的矩阵的MATLAB表示表示矩阵拆分矩阵拆分(2)利用空矩阵删除矩阵的元素25命令 cat()格式 A=cat(n,A1,A2,)n=1时,按A1;A2;A3构造n=2时,按A1,A2,A3构造n=3时,构造三维数组。3.1.3 构造多维数组构造多维数组26 输入的字符串要用单引号括起来。每个字符占用 一个元素位置。例:s=Hello s=Helloabs(s):将字符串转成ASCII码。setstr(v):将v向量转成字符串。3.1.4 字符串变量字符串变量27基本数据类型基本运算与输入输出基本运算与输入输出程序流程语句文件编写与调试编程技巧主要内容主要内容28 假定有两个矩阵A和B矩阵转置 B=A矩阵加减运算(维数相同的两个矩阵,或其中之一为标量)A+B A-B A+2 A-2矩阵乘法(维数匹配的两个矩阵,或其中之一为标量)若A为mn矩阵,B为np矩阵,则C=A*B为mp矩阵。矩阵除法两种矩阵除法运算:和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则AB和B/A运算可以实现。3.2.1 代数运算代数运算29矩阵的乘方矩阵的乘方运算可以表示成Ax,要求A为方阵,x为标量。点运算 点运算符有.*、./、.和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。矩阵翻转rot90(A),矩阵A逆时针翻转90度(Rotate matrix 90 degrees)flipud(A),矩阵A上下翻转(flip matrix in up/down direction)fliplr(A),矩阵A左右翻转(flip matrix in left/right direction)3.2.1 代数运算代数运算30六种逻辑运算逻辑与:&,and()逻辑或:|,or()逻辑非:,not()逻辑异或:xor()先决逻辑与:&先决逻辑或:|注意:逻辑运算中,矩阵元素非0即1逻辑与、或、异或操作中的两个矩阵维数相同或其中之一为标量。3.2.2 逻辑运算逻辑运算31六种关系运算小于:不大于:不大于:=等于:=不等于:=运算规则当两个比较量是标量时当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。当参与比较的量是两个维数相同的矩阵时当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。当参与比较的一个是标量,而另一个是矩阵时当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。3.2.3 关系运算关系运算321)find:寻找逻辑值的向量元素下标2)all:逻辑条件全部3)any:逻辑条件任何一个4)exist:检查某变量是否存在5)isnan:检查非数值量6)finite:探测无穷大7)isempty:探测空8)isstr:探测字符串9)strcmp:比较字符串关系运算与逻辑运算函数关系运算与逻辑运算函数基本数学函数abs:绝对值或复数的模floor:向负方向取整angle:相位角ceil:向正方向取整sqrt:平方根sign:符号函数real:实部rem:求余函数imag:虚部exp:指数函数conj:共轭复数log:自然对数round:四舍五入取整log10:常用对数fix:截尾取整3.2.4 矩阵元素的数据变换矩阵元素的数据变换三角函数sin:正弦sinh:双曲正弦cos:余弦cosh:双曲余弦tan:正切tanh:双曲正切asin:反正弦asinh:反双曲正弦acos:反余弦acosh:反双曲余弦atan:反正切atanh:反双曲正切atan2:双值反正切3.2.4 矩阵元素的数据变换矩阵元素的数据变换特殊函数bessel:贝塞尔函数gamma:函数rat:有理逼近erf:误差函数inverf:反误差函数elipk:第一种完全的椭圆积分elipj:雅可比椭圆函数3.2.4 矩阵元素的数据变换矩阵元素的数据变换36输入函数input,格式如下A=input(提示字符串)A=input(提示字符串,s)前者要求用户输入矩阵,后者要求用户输入字符串输出函数disp(),格式如下 A=1 2;3 4 disp(A)1 23 43.2.5 输入与输出语句输入与输出语句37基本数据类型基本运算与输入输出程序流程语句程序流程语句文件编写与调试编程技巧主要内容主要内容38for语句的格式为:for 控制变量=表达式 语句集end注:表达式是一个矩阵,矩阵的列被依次赋给控制变量,每赋一个新值,便执行一次循环体。通常表达式形式是 s1:s3:s2,它的每一列为一个标量。如果表达式关系不合理,内部循环体不执行。3.3.1 循环语句循环语句1)for 语句例:已知 ,当n=100时,求y的值。程序如下:y=0;n=100;for i=1:1:n y=y+1/(2*i-1);end3.3.1 循环语句循环语句40格式为:while 表达式 语句集 end 只要表达式的值不为0,语句集里的语句就不断被执行。3.3.1 循环语句循环语句2)while 语句41例:从键盘输入若干个数,当输入0时结束输入,求平均值及总和。程序如下:sum=0;cnt=0;val=input(Enter a number(end in 0):);while(val=0)sum=sum+val;cnt=cnt+1;val=input(Enter a number(end in 0):);endif(cnt 0)mean=sum/cnt;end3.3.1 循环语句循环语句42(1)(1)单分支单分支ifif语句语句if 条件 语句组End3.3.2 条件转移语句条件转移语句 当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。43(2)(2)双分支双分支ifif语句语句if 条件 语句组1else 语句组2end 3.3.2 条件转移语句条件转移语句 当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。例:计算分段函数的值程序如下:x=input(请输入x的值:);if x=A&c=a&c=0&c=9 disp(abs(c)-abs(0);else disp(c);end3.3.2 条件转移语句条件转移语句47switchswitch语句语句 switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 case 表达式m 语句组m otherwise 语句组n end3.3.3 开关语句开关语句48 当表达式的值等于表达式1的值时,执行语句组1,当表达式的值等于表达式2的值时,执行语句组2,当表达式的值等于表达式m的值时,执行语句组m,当表达式的值不等于case所列的表达式的值时,执行语句组n,即otherwise 语句。当任意一个分支的语句执行完后,直接执行switch语句的下一句。3.3.3 开关语句开关语句49例 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price0,x1=x;end if y*y20,x2=x;endendformat long;x,yx=2.219107148718498y=-2.058835324447728e-0103.4.1 文件编写与调试文件编写与调试函数文件函数文件Step单步执行Step in单步执行且深入被调函数Step out跳出被调函数Run(或Continue)程序运行到下一断点或结束Go Unit Cursor程序运行到光标处Set/Clear Breakpoint设置/清除断点Set/Modify Conditional Breakpoint设置/修改条件断点Enable/Disable Breakpoint断点使能/实效Clear Breakpoints in All Files清除所有文件断点Stop if Errors/Warnings若有错误/警告则停止Exit Debug Mode退出调试3.4.1 文件编写与调试文件编写与调试跟踪调试跟踪调试583.4.2 利用利用UltraEdit编写编写M文件文件1)安装UltraEditUltraEdit;2)从UltraEdit官方网站下载wordfile扩展文件包:ALL WORDFILES IN ONE,下载地址为http:/ 利用利用UltraEdit编写编写M文件文件604)打开ruby.uew,将第一行修改为/L20;同样,将matlab6.uew的第一行修改为/L12,分别保存以上两个文件。3.4.2 利用利用UltraEdit编写编写M文件文件61基本数据类型基本运算与输入输出程序流程语句文件编写与调试编程技巧编程技巧主要内容主要内容623.5 编程技巧编程技巧 充分利用速度和内存尽可能采用MATLAB提供的函数指令采用有效算法尽量用M函数文件代替M脚本文件尽量用save,load指令实施数据保存和获取。测定程序执行时间和时间分配tic,toc分别是启动秒表和停止秒表的指令cputime是获取CPU时间的指令耗时剖析profile on待测函数名profile viewer63测定程序执行时间和时间分配 例:tic,t=cputime;x1=1;x2=pi;for i =1:32 y1=log(x1)-sin(x1);y2=log(x2)-sin(x2);x=0.5*(x1+x2);y=log(x)-sin(x);if y*y10,x1=x;end if y*y20,x2=x;endendformat long;x,ytoc,cputime-t:x=2.219107148718498y=-2.058835324447728e-010Elapsed time is 0.008586 seconds.ans=03.5 编程技巧编程技巧 64耗时剖析profile on待测函数profile viewer例:测试分析magic(35)。程序如下:profile on magic(35);profile viewer 3.5 编程技巧编程技巧
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!