第一范文网 - 专业文章范例文档资料分享平台

chap4 关于matlab的程序设计

来源:用户分享 时间:2025/6/7 23:43:42 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

第四章 程序设计

4.1 M文件函数

Matlab函数有M文件函数与脚本文件之分。所谓的脚本文件是没有输入输出变量,只是一系列系统命令的集合,类似于DOS的宏命令;M文件函数获取传递给它的变量,进行处理,返回计算结果。 讲例:>>type(edit) flipud

M文件函数的构成

? 首行称为函数说明符,以function开头,第一行定义的函数名必须与要保存的文

件名一致,实际上MATLAB忽略首行的函数名,直接根据存储在磁盘上的文件名执行函数。

? 接下来是文件的注释行,即help的帮助文本。(用函数flipud示例)其中第一行

帮助文体称为H1行,是由lookfor命令所搜索的行。 ? M文件名最多31个字符,命名规则与变量相同。

? 调用函数error可中止函数执行,显示出错信息,并把控制权返回命令窗口 ? 调用函数warning可探囊取物报告警告信息,然后继续运行

warning(‘…’) %在命令窗口中显示警告字符串 warning on,warning off在全局范围内打开或关闭

? M文件函数可以调用脚本文件或其它作为子函数的函数,多个子函数的顺序可任

意排列

输入输出变量

? M文件可以没有输入输出变量

? 可以用比M文件函数中的说明行所确定的数目少的实际输入输出变量,可分别调

用函数nargin,nargout确定函数调用中所用的输入输出变量个数。由于nargin,nargout不是变量,所以不能运用赋值函数进行重新赋值。(help mmdigit) ? 调用一个函数时,输入变量不会拷贝到函数的工作空间,但如果改变输入变量内

的任何值,则数组就拷贝到函数的工作空间。因此,为节约存储和增加速度,最好从大数组内抽取元素,对它们作修正,而不使整个数组拷贝到工作空间。 ? 在函数说明行中指定最后一个输入参量为varargin,则函数可接受一个变量和无限

个输入变量。Varargin是一个预定义的单元数组,它的第i个变量是从varargin出现开始的第i个参量。例:

function a=myfunction(x,varargin)

用a=myfunction(x,y,z,t)调用,则varargin(1)=y,varargin(2)=z,,varargin(3)=t 这样每次可以用不同数目的参量进行调用。

? 在函数说明行中指定最后一个输出变量为varargout,则函数可接受一个变量和无

限个输出变量。Varargin是一个预定义的单元数组,它的第i个单元是从varargout出现开始的第i个参量。如

function [a,varargout]=function(x,y)

调用形式为 [a,b,c]=function(x,y),则varargout(1)=b,varargout(2)=c

函数工作空间

函数都有自己的临时工作空间,该空间随函数的调用而建立,随函数操作的结束而删除,递归调用的函数均有自己的独立工作空间,MATLAB提供了几种用于基本工作空间与函数工作空间间的通信关系

1. 全局变量说明为global函数可以和其它函数、MATLAB工作空间共享变量,并自

身递归调用。但必须在每个所期望的工作空间中用global对该变量进行说明。例:tic,toc中变量TICTOC的用法

2. 函数evalin允许延伸到另一工作空间,计算一个表达式,然后返回结果到当前空

间,与eval类似。A=eval(‘caller’,’expression’)在调用空间计算expression,然后返回给变量A;A=evalin(‘base’,’expression’)在MATLAB工作空间中计算expression,把结果返回到当前工作空间变量A;evalin(‘workspace’,’try’,’catch’)提供了捕捉错误功能,如果在空间中第一个表达式’try’出现错误,则‘catch’就是当前工作空间中要计算的表达式

3. 函数assignin可以把当前工作空间内的一些表达式的结果赋值给另一个工作空间

内的变量。Assignin(‘workspace’,’vname’,x)把当前工作空间内的变量X的内容赋值给工作空间名为vname的变量

4. 正在被执行的M文件名可在一个函数内的变量mfilename中得到,这种变量在脚

本文件中也存在。 4.2

4.2.1 顺序结构

若程序是命令文件,则程序运行后,中间变量都予以保留;若程序是函数文件,则程序运行完成后,中间变量将全部删除 4.2.2 循环结构

1. for-end 循环

程序流的控制

for x=arrays (commands) end

? for循环不会因为在循环体内对循环变量重新进行赋值而终止 ? for后面的表达式中的数组可以是任何合法的MATLAB数组 ? for循环结构可以按需要进行嵌套 应用技巧

(1)为得到高效的代码,就尽量提高代码的向量化程度,避免使用循环结构 如 for i=1:10 i=1:10;

A(i)=1/(i+1) A(i)=1./(i+1) end

(2)为得到尽快的运算速度,应尽量对数组进行预定义。 如 对于上面的(1)中编程方法,可改为

i=1:10; A=zeros(1,10); A(i)=1./(i+1)

2. while-end 循环

while expression

statements end

? 表达式的值一般为标量,但MATLAB允许是一个数组,只有当该数组的所有元素

均为真时,才会执行循环体;若表达式为空数组,则不执行循环体

4.2.3 分支结构

1.if-else-end if expression

statements1;

else

statements2;

end

? 如果只有一种选择,else部分可以不写 ? 如果多于两种选择,则中间可填加elseif 结构

2. witch-case-end结构

switch switch-expr case case-expr

statement;

case {case-expr1,case-expr2,…}

statement; …

otherwise statement; end 4.3

? return 指令

在被调函数中插入return语句,强制MATLAB结束执行函数并返回指令窗口 ? pause指令

使程序运行指令暂停,等待用户按任意键继续。主要用于程序调试用查看中间结果 另一种用法 pause(n) 在继续执行前,暂停n秒 ? break指令

使最内层for,while,if语句终止循环 ? input指令

提示用户从键盘输入数值、字符串或表达式,并接受输入

R=input(‘message’) 将用户从键盘输入的内容Message赋值给变量R

R=input(‘message’,’s’) 将用户从键盘输入的内容Message作为字符串的形式赋值

给变量R

输入的字符串需要转行时,可用符号‘\\n’ ? keyboard指令waitforkeyboard

与input一样,在遇到keyboard指令时,MATLAB将会暂停程序的运行,并调用键盘 指令进行处理,用户可以从键盘输入各种命令,只要输入return指令,按enter后, 程序将继续执行 ? error指令

显示错误信息并将控制权返回键盘。其它一些相关的命令 errortrap 错误发生后程序是否继续执行的双位开关

lasterr 显示MATLAB自动判断的最新出错原因,并中止程序执行 warning(‘some message’) 显示警告信息,并继续运行

lastwarn 显示MATLAB自动给出的最新出错信息,然后继续运行 ? echo 指令

程序流控制

用来控制M文件在执行过程中显示与否,这对程序的调试和演示极为有用。 对命令文件

echo on 显示其后所有执行文件的指令 echo off 关闭显示其后所有执行文件的指令 echo 在两种状态之间进行转换 对函数文件或命令文件

echo filename on 使filename指定文件中的指令在执行时显示出来 echo filename off

echo on all 使当前内存中函数文件的指令在执行中显示出来 echo off all 4.4

sprintf('%0.5g',(1+sqrt(5))/2) 1.618

sprintf('%0.5g',1/eps) 4.5036e+15 sprintf('.5f',1/eps) 4503599627370496.00000 sprintf('%d',round(pi)) 3 sprintf('%s','hello') hello

sprintf('The array is %dx%d.',2,3) The array is 2x3. sprintf('\\n') is the line termination character on all platforms

数据显示格式控制

搜索更多关于: chap4 关于matlab的程序设计 的文档
chap4 关于matlab的程序设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3c40a000ea0a6ri16zs4_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top