版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MATLAB编程,目标,学习如何在编辑窗口生成合乎文法的M-文件,并且在命令窗口运行它们. 理解文本文件和函数文件的区别. 理解如何在函数中加入帮助信息. 知道如何建立M-文件使得它们能与用户实时交互,能在命令窗口显示信息和运行结果. 理解子函数的作用,以及如何调用它们. 知道如何生成和读取数据文件.,目标 (续),学习如何通过结构化编程(包括逻辑运算和循环)来编写条理清晰的M-文件. 认识ifelseif结构和switch结构的区别. 认识forend结构和while结构的区别. 理解向量化的意义以及为什么它更有效率. 理解匿名函数如何可用来传递函数的函数到函数M-文件.,M-文件,命令可以
2、直接在命令窗口输入,但MATLAB还允许你将命令放入被称为M-文件的文本文件中. M-文件之所以被称为M-文件,是因为它存储的文件名的后缀是.m. 两种主要的M-文件 文本文件 函数文件,文本文件,文本文件仅仅是将一系列MATLAB命令保存在一个文件中- 当MATLAB运行文本文件时,就像在命令窗口中输入那些保存在文件的命令. 文本文件可通过在命令窗口中输入它们的名字(不包括.m)来运行,也可以在编辑窗口选择Debug,Run菜单(或Save and Run),或者在编辑窗口按F5键. 注意后两种方式将会保存任何对文件作出的改动,而第一种方式需要文件已经存在硬盘上.,文本文件(续),MATLA
3、B和R软件,clear all% 清除所有变量 x = 1 4 -2 3 -1 -5; y = 3 7 2 -5 1 2; z = x + y,函数文件,函数文件起的作用与文本文件完全不同. 函数文件可以从命令窗口接收输入变量,返回输出结果,而函数内部产生和操作的变量不会影响到命令窗口.,函数文件(续),function average = func1(vector) average = sum(vector)/length(vector);% 计算平均值,例:计算平均值,函数定义,输出参数,输入参数,函数名,函数体,注释行, vec = 1 5 3; ave = func1(vec) ave
4、 = 3,调用函数:,函数文件(续),function average = func1(vector) % func1 A simple function with a single help line. % %Usage of this function: %output = func1(input) %output is the average of the input vector input. average = sum(vector)/length(vector); % 计算平均值, help func1 func1 A simple function with a single h
5、elp line. Usage of this function: output = func1(input) output is the average of the input vector input.,带帮助行的例子:,函数文件语法,函数文件一般语法:function outvar = funcname(arglist)% helpcommentsstatementsoutvar = value;其中 outvar: 输出变量名 funcname: 函数名 arglist: 输入参数列表- 用逗号分隔 helpcomments: 通过help funcname 来显示的文本 state
6、ments: MATLAB 语句,子函数,一个函数文件可一包含一个函数,但也可以包含一个主函数和若干个子函数 主函数是M-文件中列在最前面的函数-它的函数名必须与该文件名相同. 子函数跟在主函数后面. 注意只能被主函数调用,同时子函数必须在同一个M-文件中,子函数不能被命令窗口或任何其它函数或文本文件调用.,子函数(续),例: 利用函数的递归调用,求n!。 函数文件factor1.m如下:,function f=factor1(n) if n=1 f=1; else f=factor1(n-1)*n; %递归调用求(n-1)! end,输入,从用户得到一个值的最方便的方法是input命令: n
7、 = input(promptstring)MATLAB 会显示promptstring中的字符, 此时输入的任何值会赋给变量 n. 例如, 如果你输入pi, n 就会被赋值为 3.1416 n = input(promptstring, s)MATLAB会显示promptstring中的字符, 此时输入的任何字符会以字符串的形式赋值给变量n. 例如,如果你输入pi, n 就会被赋值为一个2x1 字符数组,元素分别为p 和 i.,输出,最方便的显示一个矩阵的值的方法是打它的名字,但这在函数和文本文件中不适用。此时,用disp命令 disp(value)可以在屏幕上显示value, 如果它是字符
8、串, 会用单括号将它括起来.,格式化输出,对于格式化输出,或对于由变量的值与文字组合起来的输出,用fprintf 命令: fprintf(format, x, y, )其中format是一个字符串,用来表明变量x, y,等等如何来显示- 包括与这些变量一同显示的文字内容. 变量中的值依据format代码来确定输出格式.,格式和控制代码,在format 字符串中, 下列format代码用以指定一个数值如何显示:%d 整数格式%e 用小写字母e表示的科学记数格式 %E 用大写字母E表示的科学记数格式 %f 10进制格式%g - %e 和 %f中较紧缩的格式 下列控制代码可以产生特殊字符:n 换行t
9、 - tab - 输出字符 在字符串中用一对输出一个 ,生成和读取数据文件,MATLAB有内置的文件格式用来保存和载入变量的值. save filename var1 var2 varn将列表中的变量保存到文件名为filename.mat的文件中去. 如果列表中没有变量,则保存所有变量. load filename var1 var2 varn 从名为filename.mat的文件中载入所列变量. 如果没有列出变量,则文件中的所有变量都被载入. 注意 这些不是文本文件!,ASCII 文件,为了生成用户可读的文件,在save命令的最后加上一个标志-ascii. 这将数据保存到一个文本文件中,文本
10、方式与将其显示到屏幕上相同. 注意在这种情况下,MATLAB不会在文件名后添加任何后缀,所以需要你自己添加诸如.txt 或 .dat的文件扩展名. 当从一个文本文件中载入一个矩形数组时,只需要使用load命令和文件名. 数据将被存入一个与文件名(不包括扩展名)相同名字的矩阵.,结构化编程,结构化编程可以让MATLAB根据程序的条件来作判断和选择. MATLAB中的判断基于逻辑和关系运算的结果,并通过if, ifelse, 和 ifelseif结构来实现. MATLAB中的选择基于对一个文字表达式的比对,并通过switch结构来实现.,关系运算,MATLAB中的关系运算:,逻辑运算,x (非-N
11、ot): 如果x是假(或零),则为真;否则为假 x for n=1:100 s=s+1/n/n; end; s,向量化,有时,MATLAB执行整个数组的运算远比对数组的元素逐个运算来的有效. 这可通过向量化来实现.,while 循环,while循环与for循环不同,while循环的循环次数可以是不确定的. 其基本语法为while condition statementsend其中condition是一个逻辑表达式. 如果condition为真, statements包含的语句将会运行,运行后循环会再次检查condition是否为真. 注意 尽管在statements运行过程中,conditio
12、n会变为假,但只有到所有的statements语句运行完之后,这才会起作用.,提前终止,有时需要提前终止某个for或while循环- 这可以通过break来实现, 通常这需要与if结构配合使用. 例子:x = 24while (1) x = x - 5 if x 0, break, endend将生成x的值24, 19, 14, 9, 4, 和 -1, 然后停止.,嵌套和缩格,结构可以嵌入到其它结构中. 例如, 一个ifelseifelse结构可以包含一段for循环语句. 为了便于阅读,结构通常采用缩格的方式来区别不同的层次.,嵌套和缩格(续),%M函数eg2_2a.m function y=eg3_2a(x) n=length(x); for k=1:n if x(k)1 y(k)=x(k)2; elseif x(k)-1 y(k)=1; else y(k)=3+2*x(k); end end,匿名函数fname=(m)sum(1./(1:m).k) fname = (m)sum(1./(1:m).k) feval(fname,1000) ans = 1.6439,函数的函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年土建施工人员考试押题卷附参考答案详解(轻巧夺冠)
- 2026年国开电大市场营销策划形考通关训练试卷及答案详解(新)
- 2026年河南技术工人题库检测试题(研优卷)附答案详解
- 2026年信息技术知识笔押题宝典通关考试题库附答案详解【轻巧夺冠】
- 2026年大学量学期末每日一练及答案详解(历年真题)
- 2026年公务员法律考前自测高频考点模拟试题附完整答案详解【有一套】
- 幼儿园紫外线灯使用制度
- 航空公司航班安全检查制度
- 快递行业配送服务制度
- 建筑工地安全施工规范制度
- 2026年主题教育活动问题清单及整改措施
- 建筑与小区雨水控制及利用工程技术规范
- SPD项目介绍教学课件
- 安全教育培训考核制度
- 2026年华为法务专员面试题集与答案
- 第5章专题01平面向量及其应用(题型篇)(原卷版)
- 混凝土质量缺陷修补施工方案
- 2026年河南工业贸易职业学院单招职业技能测试题库及答案1套
- 呼吸道感染护理课件
- 2025年榆林旅投集团招聘备考题库(25人)附答案
- 2026届新高考数学冲刺突破复习立体几何
评论
0/150
提交评论