chap4 关于matlab的程序设计
更新时间:2023-05-24 00:23:01 阅读量: 实用文档 文档下载
- 查P4能不能吃东西推荐度:
- 相关推荐
程序设计
第四章 程序设计
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('%15.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的程序设计05-24
中国生物燃料乙醇产业的发展能缓解能源安全吗 基于石油价格传递模型的理论与实证研究11-11
2016年下半年河南省抹灰工安全生产知识教育模拟试题09-13
平安小区创建活动实施方案的通知05-29
参考文献01-27
基于并购目标的财务尽职调查10-31
长春版小学语文各年级教材作文目录04-18
自考建筑设备必考复习资料08-25
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 程序设计
- matlab
- 关于
- chap4
- 关于建设“西沙群岛生态经济区”的建议
- 小型农田水利工程建设情况调研报告
- 营销师考试指南答案及策划答案
- 高一物理牛顿运动定律综合测试题
- 12条模拟电路设计经验总结
- crm在中国商业银行领域的应用
- 求解块三对角方程组的一种并行策略
- 2007中国十大企业危机公关案例
- 高二英语第二学期周考试卷
- 基础会计技能抽考模拟试卷7
- 浅谈巴彦淖尔市日光温室蔬菜不能越冬生产成因
- 预防艾滋病、梅毒、乙肝母婴传播职业暴露紧急预案
- 中国书法家协会会员名单
- 小学五年级下册语文期末考试卷及答案
- 无锡市物业服务收费管理实施办法
- 企业会计准则会计分录大全文库
- 钢筋混凝土机械项目商业计划书(包括可行性研究报告+融资方案设计+2013年资金申请报告)及融资对接
- 安全生产总应急预案
- 中国主要太阳能电池企业介绍
- 煤炭工业发展形势及“十三五”展望