ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:42.92KB ,
资源ID:7002241      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7002241.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(第五节Matlab编程.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第五节Matlab编程.doc

1、第五节 Matlab编程 §5.1关系运算   §5.1.1 比较运算   §5.1.2逻辑运算 §5.2控制流   §5.2.1 for 循环   §5.2.2  while 循环   §5.2.3 if和break语句 §5.3 M文件、命令文件及函数文件   §5.3.1 M文件   §5.3.3函数文件   §5.3.2命令文件 §5.4 字符串、输入及输出   §5.4.1 echo、input、pause、keyboard   §5.4.2串和宏串   §5.4.3外部程序   §5.4.4输入输出数据 §5.1关系运算 §5.1.1 比较运算

2、 比较两个同阶矩阵有下面六种相关操作符: 相关操作符 <  小于 <= 小于等于 >  大于 >= 大于等于 == 等于 ~= 不等于 表5.1.1.1相关操作符 比较两个元素的大小,结果是“1”表明为真,结果是“0”表明为假. 例如2+2~=4 结果是“0”,表明为假. 例如一个6阶魔术方阵,矩阵元素计算满足各种条件: A=magic(6) ans =     35     1     6    26    19    24      3    32     7    21    23    25     31     9     2    22

3、    27    20      8    28    33    17    10    15     30     5    34    12    14    16      4    36    29    13    18    11 阶数为n的魔术方阵,即n×n矩阵,是由1~n2的整数组成(n=6).仔细观察这个矩阵,我们会发现任何行和、任何列和都相等.另外,每个3×3子行列式的对角线元素和,都可被3整除.为了显示这一特性,键入: p=(rem(A,3)==0) p =      0     0     1     0     0     1      1    

4、 0     0     1     0     0      0     1     0     0     1     0      0     0     1     0     0     1      1     0     0     1     0     0      0     1     0     0     1     0 为了再仔细地观察这个模式,可以用format+格式画出矩阵的压缩格式.此格式用“+”代表正元素,“-”代表负元素,空格代表0. format + p =   +  + +  +   +  +   +  + +  + 

5、 +  + find 函数在关系运算中很有用,它可以在0-1矩阵中找非零元素的下标. 若y是一个向量,例如:y=[1   3   2   4   3.5   2.9],则find(y<3.0),将指出y的分量在哪些位置上小于3.0. ans =     1     3     6 即:向量y的第1、3、6位置上的元素小于3.0. 当输入x==NaN时结果为NaN,因为按照IEEE算法规定任何具有NaN的操作,结果都是NaN.调试NaN很有用,例如测试x,输入isnan(x)函数,如果x元素是不定值则得1,否则得0.isfinite(x)更有用,如-¥

6、逻辑运算 & 与 | 或 ~ 非 表5.1.2.1逻辑运算符   “&”和“|”操作符可比较两个标量或两个同阶矩阵.对于矩阵来说必须符合规则,如果A和B都是0-1矩阵,则A&B或A|B也都是0-1矩阵,这个0-1矩阵的元素是A和B对应元素之间逻辑运算的结果,逻辑操作符认定任何非零元素都为真,给出“1”,任何零元素都为假,给出“0”. 非(或逻辑非)是一元操作符,即~A:当A是非零时结果为“0”;当A为“0”时,结果为“1”.因此下列两种表示: p | (~p)             结果为1. p & (~p)          结果为0. any和all函数在连接

7、操作时很有用,设x是0-1向量,如果x中任意有一元素非零时,any(x)返回“1”,否则返回“0”;all(x)函数当x的所有元素非零时,返回“1”,否则也返回“0”.这些函数在if语句中经常被用到.如: if all(A<5) do something end §5.2控制流 Matlab与其它计算机语言一样,也有控制流语句.控制流语句可使原本简单地在命令行中运行的一系列命令或函数,组合成为一个整体——程序,从而提高工作效率. §5.2.1 for 循环 Matlab与其它计算机语言一样有do或for循环,完成一个语句或一组语句在一定时间内反复运行的功能.例如: for 

8、 i = 1:n ,  x( i )=0,  end x的第一个元素赋0值,如果n<1,结构上合法,但内部语句不运行,如果x不存在或比n元素小,额外的空间将会自动分配. 多重循环写成锯齿形是为了增加可读性.例如: m=9;n=9; for i = 1:m for j=1:n                A( i, j ) = 1/( i + j - 1); end end A 程序的说明: (1)事实上,上述程序给出了Hilbert矩阵的构造过程,可参见函数hilb(n). (2)语句内部使用分号,表示计算过程不输出中间结果. (3)循环后的A命令表示显示矩阵A的结

9、果. (4)每个for语句必须以end语句结束,否则是错误的. for循环的通用形式为: for v=expression statements end 其中expression表达式是一个矩阵,因为Matlab中都是矩阵,矩阵的列被一个接一个的赋值到变量v,然后statements语句运行. 通常expression是一些m:n或m:k:n仅有一行的矩阵,并且它的列是个简单的标量.但如注意到expression可以为矩阵,即v可以为向量,对某些问题的处理将大大简化. §5.2.2  while 循环 Matlab中的while 循环语句为一个语句或一组语句在一个逻辑条件的控

10、制下重复未知的次数. 它的一般形式为: while  expression statements end 当expression的所有运算为非零值时,statements语句组将被执行.如果判断条件是向量或矩阵的话,可能需要all或any函数作为判断条件. 例如计算expm(A),在A并不是太大时,直接计算expm(A)是可行的. expm(A)=I+A+A^2/2!+A^3/3!+…   注意:这里的I表示单位矩阵. 程序为: E = 0*A; F = E + eye(size(E)); N = 1; while norm(F,1) > 0, F = A*F/N; E

11、 = E + F; N = N + 1; end §5.2.3 if和break语句 下面介绍if语句的二个例子. (1) 一个计算如何被分成三个部分,用符号校验: if n<0 A=negative(n) elseif mod(n,2)==0 A=even(n) else A=odd(n) end 其中的三个函数negative(n)、even(n)、odd(n)是自编的输出函数.参见下面的函数文件.   (2) 这个例子涉及数论中一个很有趣的问题,取任何的正整数,如果是偶数,用2除;如果是奇数,用3乘,并加上1,反复这个过程,直到你的整数成为1.这个极有趣

12、不可解的问题是:有使这个过程不中止的整数吗? %classic "3n+1"problem from number theory while 1 n=input('Enter n, negative quits: '); if n<=0 break,end         while n>1                if rem(n,2) == 0  %% 是连续的2个等号                       n=n/2                else                       n=3*n+1                end;

13、         end end 这个过程能永远进行吗? 程序的说明: (1)本程序用到了if语句与while语句,过程比较复杂; (2)使用input函数,可使程序在执行过程中,从键盘输入一个数(矩阵); (3)break语句提供了程序跳出死循环的途径. §5.3 M文件、命令文件及函数文件 §5.3.1 M文件 Matlab通常使用命令驱动方式,当单行命令输入时,Matlab立即处理并显示结果,同时将运行说明或命令存入文件. Matlab语句的磁盘文件称作M文件,因为这些文件名的未尾是.M形式,例如一个文件名为bessel.m,提供bessel函数语句. 一个M文件

14、包含一系列的Matlab语句,一个M文件可以循环地调用它自己. M文件有两种类型: 第一类型的M文件称为命令文件,它是一系列命令、语句的简单组合. 第二类型的M文件称为函数文件,它提供了Matlab的外部函数.用户为解决一个特定问题而编写的大量的外部函数可放在Matlab工具箱中,这样的一组外部函数形成一个专用的软件包. 这两种形式的M文件,无论是命令文件,还是函数文件,都是普通的ASCII文本文件,可选择编辑或字处理文件来建立. §5.3.2命令文件 当一个命令文件被调用时,Matlab运行文件中出现的命令而不是交互地等待键盘输入,命令文件的语句在工作空间中运算全局数据,对于进行

15、分析解决问题及做设计中所需的一长串繁杂的命令和解释是很有用的. 例如:一个自编的命令文件fibo.m,用于计算Fibonnaci数列 % An M-file to calculate Fibonnaci numbers f=[1, 1 ]; i = 1; while f(i)+f(i+1)<1000 f(i+2)=f(i)+f(i+1); i=i+1; end plot(f) 在Matlab命令窗口中键入fibo命令,并回车执行,将计算出所有小于1000的Fibonnaci数,并绘出图形. 要注意的是:文件执行后,f和i变量仍然留在工作空间. §5.3.3函数文件 如果

16、M文件的第一行包含function,这个文件就是函数文件,它与命令文件不同,所定义变量和运算都在文件内部,而不在工作空间.函数被调用完毕后,所定义变量和运算将全部释放.函数文件对扩展Matlab函数非常有用. 例如:一个自编的函数文件mean.m,用于求向量的(或矩阵按列的)平均值 function  y=mean(x) % MEAN Average or mean value,For Vectors, % MEAN (x) returns the mean value % For matrix MEAN (x) is a row vector % containing the m

17、ean value of each column [m,n]=size(x); if m==1 m=n; end y=sum(x)/m; 磁盘文件中定义的新函数称为mean函数,它与Matlab函数一样使用,例如z为从1到99的实数向量: z=1:99; 计算均值:mean(z) ans= 50 mean.m程序的说明: (1)第一行的内容:函数名,输入变量,输出变量,没有这行这个文件就是命令文件,而不是函数文件. (2)%:表明%右边的行是说明性的内容注释.前一小部分行来确定M文件的注释,并在键入help mean后显示出来.显示内容为连续的若干个%右边的文字.

18、3)变量m,n和y是mean的局部变量,在mean运行结束后,它们将不在工作空间z中存在.如果在调用函数之前有同名变量,先前存在的变量及其当前值将不会改变.   再例如:一个计算标准差的函数文件stat.m function [mean,stdev]=stat(x) [m,n]=size(x); if m==1 m=n end mean=sum(x)/m; stdev=sqrt(sum(x.^2)/m-mean.^2); stat表明返回多输出变量是可能的.   又如:使用多输入变量计算矩阵秩函数 function r=rank(x,tol) % rank of

19、 a matrix s=svd(x); if(nargin==1) tol=max(size(x))*s(1)*eps; end r=sum(s>tol); 这个变量说明利用永久变量nargin确定输入变量的个数,变量nargout虽然这里没有使用,但它包含有输出变量的个数. 一些有用的说明: 当M函数文件第一次在Matlab运行时,它被编译并放入内存,以后使用时不用重新编译即可得到. what命令:显示磁盘当前目录中的M文件, dir命令:列出所有文件. 一般而言,输入一个名字到Matlab,例如键入whoopie命令,Matlab用以下步骤解释: (1) 看whoo

20、pie是否为变量. (2) 检验whoopie是否为在线函数. (3) 检验whoopie文件的当前目录. (4) 将whoopie看成Matlab的PATH中的一个文件,在Matlab PATH目录中搜索. 如果whoopie存在,Matlab首先将其作为变量而不是作为函数. §5.4 字符串、输入及输出 §5.4.1 echo、input、pause、keyboard 一般来说,当一个M文件运行时,文件的命令不在屏幕上显示,而echo命令则使M文件运行时,命令在屏幕上显示,这对于调试、演示相当有用. input功能:输入Input('How many apples')给用户

21、一个提示串,等待,然后显示用户通过键盘输入的大量表达式.可以用input命令建立驱动M文件的菜单. 与input功能相同,但功能更强的keyboard命令将计算机作为一个命令文件来调用,放入M文件中,此特性对调试或正在运行期间修改变量很有用. pause命令:使用户暂停运行一个程序,当再按任一键时恢复执行,pause(n)等待n秒钟后再继续执行. §5.4.2串和宏串 字符串用单个引号输入到Matlab中,例如: s='Hello' 结果显示为: s = Hello 字符存在向量中,每个元素就是一个字符,如: size(s) ans = 1       5 表明S为一

22、个1×5的矩阵,有五个元素.字符以ASCII值存入,abs函数或double函数将显示以下值(即Hello的ASCII值) abs(s) ans =    72   101   108   108   111 getstr函数,使向量作为字符显示,而不显示ASCII值. disp可在变量中显示字符.sprintf, num2str和int2str可以将数字转换成串. 字符变量通过括号连成大串.例如: s='hello'; s=[s,' world'] s = hello world eval是与字符变量—起工作的函数,执行简单字符宏调用.eval( t )执行包含在t内的

23、字符.如果t是任何Matlab表达式或语句的源字符,则字符串被解释执行.例如: t='eye(2)', eval(t) 结果为: ans= 1     0 0     1 又例如,给矩阵元素赋值 t='1/(i+j-1)'; for i=1:n for j=1:n                a( i, j)=eval(t); end end 这儿有一个例子,介绍如何一起使用eval与load命令,装入十个具有顺序文件名的文件中的数据: fname='mydata'; for i = 1:10 eval([ 'load ', fname, int2str( i

24、 )]) end §5.4.3外部程序 Matlab与外部独立程序的通讯方式可以是多种多样的,下面介绍其中的一个办法: (1) Matlab中将变量存入磁盘 (2) 运行外部程序(读数据文件,进行处理),将结果写到磁盘上 (3) 将处理后的文件装回到工作空间中 例如:用外部程序gareqn找garfield方程的结果: function y=garfield(a,b,q,r) save gardata a,b,q,r ! gareqn load gardata 使用FORTRAN或其它语言写gareqn程序,使其可以读gardata.mat,进行处理,将结果存入文件

25、中. 这个程序可将计算机的“连接码”提供给Matlab,在许多系统中它将新的目标码连接到程序中比物理联接要方便得多. §5.4.4输入输出数据 可使用各种方法将其它程序和外部世界的数据送入Matlab,同样可把Matlab数据输送到外部世界,使你的程序以Matlab使用的文件形式直接计算数据. 最好的方法取决于多少数据,数据是否可读,什么形式等: (1) 清晰的元素表输入: 如果你有少量数据,比如说小于10~15个元素,使用方括号[]输入. (2) 使用文本编辑建立命令文件,将数据列为清晰的元素表输入.如果数据不是可读形式,又不得不以一种方法键入,可以重复运行M文件,重复修改数据

26、. (3) 如果数据以ASCII形式存贮,并有固定长度,行尾有回车符,各数间有空格的文件称为flat file(ASCII的flat file可由普通文本编辑来编辑),flat file通过load命令直接读进Matlab,结果存入名为文件名的变量中去. (4) 将数据文件译成Matlab文件形式,使用load命令,translate程序由Matlab中的应用程序库支持,translate程序将ASCII文件、二进制文件、FORTRAN非格式文件和DIF文件转换为Matlab使用的特定的MAT文件,当磁盘文件中存有大量数据时,这个方法输入最好. Matlab数据输出到外部世界的方法:

27、1) 小矩阵时:使用diary命令建立日志文件,在文件中列出变量,用文本编辑处理日志文件,日志的输出包括运行中的Matlab命令. (2) 使用save命令存入变量,退出Matlab,用translate程序将MAT文件转换成任一种其它文件形式.                                                                                                                                           上一页           回目录         下一页  

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服