~第8章M文件程序设计基础
MATLAB-程序设计-M文件建立
1、先建立函数M文件fun2.m来定义函数f(x) function f=fun2(x) 1 else if x<=0
f=x^3 else
f=2*x end end
2、再在MATLAB命令窗口输入fun2(2),fun2(0.5), fun2(-1)即可.
MATLAB入门
程序设计
M文件
MATLAB的内部函数是有限的,有时为了研究 某一个函数的各种性态,需要为MATLAB定义新函 数,为此必须编写函数文件. 函数文件是文件名后 缀为M的文件,这类文件的第一行必须是一特殊字 符function开始,格式为:
function 因变量名=函数名(自变量名) 函数值的获得必须通过具体的运算实现,并赋 给因变量.
2x x 1
1、编写函数M文件 function f=fun1(x) if x>1
f=x^2+1 end if x<=1
f=2*x end
2、在MATLAB命令窗口输入fun1(2),fun1(-1)即可.
2) 有两个选择的一般形式是: if (expression1) {commands1} else {commands2} end
例: 设银行年利率为11.25%.将10000元钱存入银行, 问多长时间会连本带利翻一番?
money=10000; years=0; while money<20000
years=years+1; money=money*(1+11.25/100); end years money
运行结果:
years =7 money = 2.1091e+004
3. if-else-end结构
(1)有一个选择的一般形式是: if (expression) {commands} end
3-第1章-MATLAB基础-M文件(3)
有调用关系的函数在同一文件
调用函数应放在被调用函数上方。 被调用函数次序无限制。范例func4.m
function out=func4(x) Recip=func3(x) ; out=sum(recip); %定义子函数 function output=func3(input) Output=1./input >>func4([1,2,3]) ans= 1.8333
第2行为函数的实现 规范函数的运算过程,并指定输出变量的值。
调用函数
调用函数funcavg1,可输入 >>vec=[1 2 3]; >>ave=funcavg1(vec) ave= 2
函数的输入和输出
一个函数可以有多个输入和输出 funcavg2.m可接受两个输入并产生两个输出。
function [avg1,avg2]=funcavg2(vec1,vec2); avg1=sum(vec1)/length(vec1); avg2=sum(vec2)/length(vec2);
funcavg2.m的调用 >>[a,b]=funcavg2([1,2,3],[4,5,6]) a= 2 b= 6
•说明:nargin和nargout是库函数,可以检查任何函数M文件 的输入和输出参数个数。 >>nargin(‘funcavg2’); ans= 2
范例
>>[a,b]=funcavg3([1,2,3],[4,5,6,7]) a= 2 b= 6 >>c=funcavg3([1 3 5 7 9]) c= 5
MATLAB 程序设计-M文件 鲁 坚
jianlu@ 深圳大学 数学与计算科学学院
Matlab课件
在命令窗口提示符后键入如下命令, 回车: >>example93 运行结果如图9-3所示:
图9-3
6阶拟合结果
三、函数文件
下例给出了一个典型的M文件函数。 function y=average(x) % AVERAGE求向量元素的均值 % 其中,X是向量,Y为计算得到向量元素的均值 % 若输入参数为非向量则出错 % 代码行 [m,n]=size(x); % 判断输入参数是否为向量 if (~((m==1)|(n==1))|(m==1)&(n==1)) % 若输入参数不是向量,则出错 error('Input must be a vector'); end % 计算向量元素的均值 y=sum(x)/length(x);
图9-5
序列的FT和DFT结果
从图9-5可见,序列的离散傅立叶变换DFT的确是其傅立叶变换FT在的N点等间 隔采样。这里做的是16点变换,读者也可尝试对其它的序列做任意点的傅立叶 变换。
第二节
M文件程序流程控制
一、分支结构 在许多情况下,需要根据不同的条件执行不同的语句,在 编程语言里,是通过分支结构实现的。Matlab语言提供的 分支结构有If-Else-End结构、Switch-Case结构、TryCatch结构。 1.If-else-end分支结构 If语句的基本语法结构有三种,分别如下: (1)if 表达式 Matlab语句体 end 关键词if后的表达式确定了判断条件,表达式必须首先计 算,只有当表达式结果为True时,语句体才被执行,否则 跳过if-end结构,执行end后面的语句。
在命令窗口给出向量x、y和阶数fitorder,如下所示: >>x=[0.1 0.14 0.2 0.23 0.34 0.45 0.55 0.6 0.67 0.7 0.8 1]; >>y=[2.2 2.5 3.4 4.4 5.6 6.5 7.0 7.5 8 9 10 11]; >>fitorder=4; 然后调用函数fitdone,即 >>fitdone(x,y,fitorder),回车后,运行结果如图9-4所示:
第二讲MATLAB的程序设计和M文件
第二讲MATLAB的程序设计和M文件在MATLAB中,程序设计主要是通过编写和运行M文件来实现。
M文件是MATLAB的主要代码文件,用于实现不同功能的程序,可以包含变量定义、算法实现、函数调用和图形绘制等。
下面将介绍MATLAB的程序设计和M文件的基本知识。
MATLAB的程序设计主要包括如下几个方面:1.变量和数据类型:在M文件中,可以使用不同的变量类型存储数据,如整型、浮点型、字符型等。
不同的变量类型在MATLAB中有不同的表示方法和功能。
2.运算和表达式:在M文件中,可以使用常见的数学运算符(如加减乘除、指数等)进行计算。
同时,也可以使用逻辑运算符(如与、或、非等)进行逻辑运算。
3. 条件语句:在M文件中,可以使用条件语句实现根据不同的条件执行不同的操作。
MATLAB中的条件语句主要有if语句和switch语句,通过判断条件的真假来决定执行路径。
4. 循环语句:在M文件中,可以使用循环语句实现对一段代码的重复执行。
MATLAB中的循环语句主要有for循环、while循环和do-while循环。
5.函数的定义和调用:在M文件中,可以通过定义函数来实现特定功能的封装。
函数可以包含输入参数和输出参数,通过参数的传递来实现数据的交互和函数的调用。
1.M文件的命名和保存:M文件的命名应该具有描述性,以体现文件中代码的功能。
M文件的保存格式是以.m为文件扩展名。
2.M文件的结构:在M文件中,一般会包含变量定义、函数定义和主程序等部分。
变量定义部分用于声明和初始化变量,函数定义部分用于定义自定义函数,而主程序部分用于调用函数和执行主要功能。
3.代码注释:为了提高代码的可读性和可维护性,需要在M文件中添加注释。
注释可以用于解释代码的目的和思路,以及描述变量、函数和算法等的作用和实现方法。
4.代码风格:为了代码的一致性和可读性,需要遵循一定的代码风格规范。
例如,可以在操作符周围留有空格,使用一致的缩进和命名规则,避免使用不必要的缩写等。
第二讲 M文件及函数的编写
M文件及函数的编写 文件及函数的编写
(3)函数体说明及有关注解以(%)开头,用 以说明函数的作用及有关内容 (4)函数体语句 函数体内使用的除返回和输入变量这些在 function语句中直接引用的变量以外的所有 变量都是局部变量,即在该函数返回之后, 这些变量会自动在MATLAB的工作空间中 清除掉。如果希望这些中间变量成为在整 个程序中都起作用的变量,则可以将它们 编写
【例6】前面的要求,m, 10000 】前面的要求,
1.写好程序,存成findsum.m文件 写好程序,存成 写好程序 文件
function [s,m]=findsum(k) s=0; m=0; while(s<=k) m=m+1; s=s+m; end
2.在command window中调用: 在 中调用: 中调用 [s,m]=findsum(10000)
•无需修改程序 无需修改程序
M文件及函数的编写 文件及函数的编写
【例8 】函数的递归调用:阶乘
1.写好程序,存成my_fact.m文件 写好程序,存成 写好程序 文件 function k=my_fact(n) if n>1 k=n*my_fact(n-1); elseif n==0|n==1 k=1; else error(' U input a wrong parameter!') end 2.在command window中调用:num=my_fact(11) 在 中调用: 中调用 MATLAB函数为: 函数为: 函数为 prod(1:1000)
statements 3
M文件及函数的编写 文件及函数的编写
【例3】 编写 文件求 】 编写M文件求
为何要将第 三种情况放 在最后? 在最后?
第三章 matlab程序设计基础
3. 程序控制流 3.多分支if语句
• 多分支if语句格式为:
if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组m+1
end
3. 程序控制流
• 例 输入一个字符,若为大写字母,则输出其后继字符,若为 小写字母,则输出其前导字符,若为数字字符则输出其对应 的数值,若为其他字符则原样输出。 – 程序如下:
c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+1)); elseif c>='a'& c<='z' disp(setstr(abs(c)-1)); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else disp(c); end
分类:脚本文件(Script File)和函数文件(Function File)。 主要区别。
1. M文件 脚本文件
没有输入和输出 由一系列指令组成 可在命令窗口直接运行 产生的所有变量存储在workspace中。 例 test.m。
1. M文件 例 脚本M文件实例
脚本M文件实例,查找10 ~100所有素数。
1. M文件
• 函数文件examp.m: function fout=charray(a,b,c) %举例说明函数文件名与函数名不同 if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end • 命令窗口: x=[1:3];y=[1;2;3]; examp(x) examp(x,y') examp(x,y,3)
MATLAB基础及应用教程
4.1.1 脚本文件(Scripts)
当我们需要在命令窗进行大量的命令集合运行时, 直接从命令窗口输入比较麻烦, 这时 就可以将这些命令集合存放在一个脚本文件(Scripts)中,运行时只需要输入其文件名就 可以自动执行这些命令集合。需要注意的是,脚本文件运行所产生的变量都驻留在 MATLAB 的工作空间中,同时脚本文件也可以调用工作空间中的数据。因此,脚本文件所涉及的变量 是全局变量。前几章所涉及到的 M 文件都是这类脚本文件。 编辑一个脚本文件可以直接在命令窗口的左上角打开编辑窗进行编辑。 4.1.2 函数文件(func构成 (1)函数定义行: Function [输出参量]=gauss(输入参量) (2): 完成函数的功能。 (3)函数说明。 (4)函数行注。 从上面构成的情况看, 函数式文件实际上是完成输入参量与输出参量的转换, 这样的转换是 由函数文件名为 gauss 的文件来完成的。 函数体的功能必须说明清楚输入参量与输出参量的 关系。函数说明是用来解释该函数的功能的,函数行注是对程序行进行说明的。上面(1) 和(2)是必须的。 【例 4-1】分析下面函数文件。 %一个数列,任意项等于前两项之和,输入项数可以给出这个数列 function [a]=sul(n) if n==1
n 的最大数为 100,要求: (1) 保存你的 fibo.m 文件,当在命令窗调用 fibo 函数时,不论输入任何整数有正确的 输出。 (2) 做出 fibo 的二维离散函数图,n 取 1 到 10,图的函数值处用小圆圈并涂为黑色,请 保存你的图形。 (3) 用三次样条插值的方法对(2)中的 10 个点进行插值,自变量的分辨率为 0.01, 请保存你的图形。 (4) 将完成(3)工作的插值函数保存为 fib.m 文件, ,当在命令窗调用 fib 函数时,不论输 入任何具有两位小数且小于 10 大于 0 的数(如 5.45)时有正确的输出。 7. 设电子粒子束流从恒定磁场中某点以相同速率发射, 发射的方向与磁场方向的夹角很小, 观察不同方向入射的粒子束流的运动轨道。 (设磁场沿 Z 方向) 数学模型: 粒子流的速度初值为
SXSY_013-Matlab程序设计基础_程序文件与函数编程
常见问题
在非洲草原上, 有一种不起眼的动物叫吸血蝙 蝠。它身体极小却是野马的天敌。这种蝙蝠靠吸 动物的血生存, 它在攻击野马时, 常附在马腿上,用 锋利的牙齿极敏捷地刺破野马的腿, 然后用尖尖 的嘴吸血。无论野马怎样蹦跳、狂奔, 都无法驱 逐这种蝙蝠。蝙蝠却可以从容地吸附在野马身上, 落在野马头上直到吸饱吸足才满意地飞去。而野 马常常在暴怒、狂奔、流血中无可奈何地死去。
14
匿名函数
匿名函数支持变量替换
p=3; q=5; f=@(x,y) x^p + y^q; y=f(2,3) p=2; q=4; f=@(x,y) x^p + y^q; % 当参数发生改变时,函数必须重新定义 y=f(2,3)
若调用函数时涉及数组运算,则定义函数时也需要使用数组
运算
f=@(x) x.^2 + 1; x=1:5; y=f(x)
15
函数句柄
函数句柄:可以理解成一个函数的代号或别名,调用函数句柄 就等价于调用该函数。
函数句柄的定义
fhandle=@ 函数名 @ 的作用就是将一个函数的函数句柄赋值给左边的变量 例:f = @sin; y = f(pi/3)
16
我们不是程序员而是问题的解决者, 我们兴趣 在于模型和算法而不是编程。我们需要熟悉的是 什么方法对于一个给定的问题是适用的, 方法的 优点和缺点以及如何实现方法。 我们不需要一行 一行的从零开始去写每一个最基本的函数。我们 更加乐于组装现成的基本模块去解决手上的问题。 Matlab的优势之一正是具有丰富的内置函数、针 对具体领域的集成工具箱和网络资源 ( /matlabcentral)。
(1) 首先对你所面临的问题进行精确描述,即你遇到的到 底是什么问题。 (2) 定义输入输出量,即我们的目的和现有的条件。 (3) 设计算法,逐层分解,逐步求精,这是做事谋的一个过 程,大部分人做事出错就出在这个地方,懒得到逐层分解, 逐步求精, 总是妄想一步登天。 (4) 把算法转化为Matlab语言,这一步是踏踏实实做的过 程,没有这一步你什么也做不成。 (5) 检测程序,我们做的东西是否正确,不正确检测错误。 这一步是需要耐心的,不要怕错误,每一次检测都会让你 提高。做事时,不要因一些错误而畏缩不前。
matlab教程(完整版)
01 MATLABChapterMATLAB简介MATLAB是一种高级编程语言和环境,主要用于数值计算、数据分析、信号处理、图像处理等多种应用领域。
MATLAB具有简单易学、高效灵活、可视化强等特点,被广泛应用于科研、工程、教育等领域。
MATLAB提供了丰富的函数库和工具箱,方便用户进行各种复杂的数学计算和数据分析。
MATLAB安装与启动MATLAB界面介绍工作空间用于显示当前定义的所有变量及其值。
命令历史记录了用户输入过的命令及其输出结果。
基本运算与数据类型02矩阵运算与数组操作Chapter01020304使用`[]`或`zeros`、`ones`等函数创建矩阵创建矩阵使用`size`函数获取矩阵大小矩阵大小通过下标访问矩阵元素,如`A(i,j)`矩阵元素访问使用`disp`或`fprintf`函数显示矩阵信息矩阵信息矩阵创建与基本操作对应元素相加,如`C = A+ B`加法运算矩阵运算对应元素相减,如`C = A-B`减法运算数与矩阵相乘,如`B = k *A`数乘运算使用单引号`'`进行转置,如`B = A'`转置运算满足乘法条件的矩阵相乘,如`C = A * B`矩阵乘法使用`inv`函数求逆矩阵,如`B = inv(A)`逆矩阵数组创建数组大小数组元素访问数组操作数组操作01020304线性方程组求解数据处理与分析特征值与特征向量图像处理矩阵与数组应用实例03数值计算与数据分析Chapter数值计算基础MATLAB基本运算数值类型与精度变量与表达式函数与脚本数据分析方法数据导入与预处理学习如何导入各种格式的数据(如Excel、CSV、TXT等),并进行数据清洗、转换等预处理操作。
数据统计描述掌握MATLAB中数据统计描述的方法,如计算均值、中位数、标准差等统计量,以及绘制直方图、箱线图等统计图表。
数据相关性分析学习如何在MATLAB中进行数据相关性分析,如计算相关系数、绘制散点图等。
第7章 MATLAB程序设计和m文件
•While 循环的次数是不确定的。 循环的次数是不确定的。
第7章 MATLAB程序设计和m文件
7.2 MATLAB控制流 7.2.3 for循环和while循环 例:创建Hilbert矩阵 (1)直接循环计算 clear tic 。 K=1000; for m = 1:K for n = 1:K A1(m,n) = 1/(m+n -1); end end t1=toc 预先配置矩阵空间可显著提高运行效率!
第7章 MATLAB程序设计和m文件
7.2 MATLAB控制流 7.2.3 for循环和while循环 例:while循环,求解n!达到100位数的第一个n是多少。 n=1; while prod(1:n)<1e100 。 n=n+1; end n
第7章 MATLAB程序设计和m文件
7.2 MATLAB控制流
,编写能对任意一组输
入x值求相应y值的程序
• • • • • • • • • • • x=[-2,-1.2,-0.4,0.8,1,6] n=length(x); for k=1:n if x(k)<-1 y(k)=x(k); elseif x(k)>=1 y(k)=exp(1-x(k)); else y(k)=x(k)^3; end end %输入,可变 输入, 输入
7.2.4 控制程序流常用指令 指令及使用格式 v=input('message') v=input('message','s') keyboard break 使 用 说 明 该指令执行时,“控制权”交给键盘;待输入结 束,按下Enter键,“控制权”交还MATLAB。 message是提示用的字符串。 遇到keyboard时,将“控制权”交给键盘,用户 可以从键盘输入各种MATLAB指令。 break指令,或导致包含该指令的while、for 循环 终止,或在if - end, switch - case, try – catch中导 致中断。 跳过位于它之后的循环体中其他指令,而执行循 环的下一个迭代。 第一种格式使程序暂停执行,等待用户按任意键 继续; 第二种格式使程序暂停n秒后,再继续执行。
MATLAB程序设计基础教程(刘国良)-第4章
函数
体
第4章 M脚本与M函数
2.脚本M文件 脚本文件也叫命令文件,是独立执行的文件,它不接受输 入参数,不返回任何值,而是代码的结合,该方法允许用户将 一系列MATLAB命令输入到一个简单的脚本“.m”文件中,只 要在MATLAB命令窗口中执行该文件,则会依次执行该文件中 的命令。 脚本M文件中包含一族由MATLAB语言所支持的语句,它类 似于DOS下的批处理文件,它的执行方式很简单,用户只需在 MATLAB 的提示符“>>”下键入该M文件的文件名,这样 MATLAB就会自动执行该M文件中的各条语句,并将结果直接返 回到MATLAB 的工作空间。
第4章 M脚本与M函数
3.块注释 在 MATLAB 5以前的版本中,注释是逐行进行的,采用百 分号(%)进行标记。逐行注释不利于用户增加和修改注释内容。 在MATLAB 5及以后的版本中,用户可以使用“%{”和“%}” 符号进行块注释,“%{”和“%}”分别代表注释块的起始和 结束。
第4章 M脚本与M函数
第4章 M脚本与M函数
在使用脚本文件时需要注意一点:如果当前工作区中存在 与该脚本同名的变量,则当输入该文件名时,系统将其作为变 量名执行。
MATLAB中有一个专门用于寻找“.m”文件的路径搜索器。 “.m”文件是以目录和文件夹的方式分布于文件系统中的,一 部分“.m”文件的目录是MATLAB的子目录,由于MATLAB的一 切操作都是在它的搜索路径,包括当前路径中进行的,因此如 果调用的函数在搜索路径之外,MATLAB就会认为此函数不存 在。
第4章 M脚本与M函数
4.1.2 M文件的建立、运行与命名规则 M文件的语法类似于一般高级语言,是一种程序化的编程
语言,但是与传统的高级语言相比,M文件又有其特点。它只 是一个简单的ASCII码型文本文件,因此,它的语法比一般的 高级语言要简单,程序也容易调试,并具有很好的交互性。
《程序设计基础(C语言)》实验指导书
《程序设计基础(C语言)》目录第1 章概述 (1)1.1 课程简介 (1)1.2 实验环境选择 (1)第 2 章实验要求 (1)2.1 实验过程要求 (1)2.2 考核及评分标准 (1)第 3 章实验内容 (2)3.1 实验1 熟悉C语言运行环境 (2)3.2 实验2 数据类型 (3)3.3 实验3 运算符和表达式 (4)3.4 实验4 顺序结构及输入和输出 (6)3.5 实验5 选择结构 (7)3.6 实验6 循环结构 (9)3.7 实验7 数组(1) (11)3.8 实验8 数组(2) (12)3.9 实验9 字符串及其操作 (13)3.10 实验10 函数 (14)3.11 实验11 结构体 (15)3.12 实验12 指针 (16)第 1 章概述1.1 课程简介《程序设计基础(C语言)》是软件工程各专业或其它相近专业学生的公共职业基础课,是软件类各专业的入门课程,直接影响学生后继职业技术课程的学习及可持续发展能力的培养。
通过本书,学习基本的程序设计概念和程序设计方法,学会使用C语言解决实际问题,进行初级的程序设计。
1.2 实验环境选择VC++6.0第 2 章实验要求2.1 实验过程要求本课程中,实验者必须服从指导教师和实验室工作人员的安排,遵守纪律与实验制度,爱护设备及卫生。
在指定的实验时间内,必须到机房内实验,其余时间可自行设计和分析。
本课程所涉及的程序代码,都要求有较高的可读性和效率,多文件表示。
2.2 考核及评分标准若实验者在指定上机时间三次不到课,取消考核资格。
请假,必须提前出具正式假条,不接受事后假条。
如果发现抄袭、篡改、伪造实验数据,或实验报告和设计报告雷同,涉及的所有学生的该课程成绩计为0 分。
本课程采用结构化评分,主要由指导教师灵活处理,可以是考勤等。
第 3 章实验内容3.1 实验1 熟悉C语言运行环境一、实验目的1.了解什么是C语言2.熟悉C语言程序开发环境二、实验内容和步骤1.大学生涯的第一个程序1)运行Microsoft Visual Studio 2008或者VC6.02)创建项目,选择win32控制台应用程序或者空项目,项目名为MyFirstApp3)新建项目,选择C++源文件,文件名为HelloWorld4)在程序编辑窗口,输入如下代码#include <stdio.h>/* 主程序*/void main(){printf("hello world\n");}5)执行程序,Ctrl+F56)观察输出结果,并记录2.修改程序1)增加语句,观察输出结果是否不同printf("hello world\n");printf("world is me\n");2)删除输出字符串中的“\n”,观察输出结果是否不同printf("hello world\n");3)进行换行输出,观察输出结果是否不同printf("hello, ");printf("world");printf("\n");4)将上个程序块中的printf("\n");去掉,观察输出结果是否不同3.用自己的语言,描述下对C语言程序的第一印象4.简单描述下,第二步骤中,输出结果相同与不同的原因;以及“\n”的用途3.2 实验2 数据类型一、实验目的1.掌握变量的命名规则和定义2.掌握C语言程序中的各种数据类型并使用它们二、实验内容和步骤1.定义3个变量numInt、numFloat、charInfo,他们的类型分别为整型,单精度类型,字符型;并分别初始化为2,2.0和‘A’,最后输出这三个变量的值。
汇编语言程序设计教程第4版课件第8章
与宏有关的操作符
(1)连接操作符(&) • 在宏定义中,可以用连接操作符&作为形参的前 缀或后缀。在宏展开时,&符前后的两个符号连 接在一起构成一个新的符号。这个连接的功能对 修改某些符号是很有用的。 (2)字符串传递操作符(< >) • 在宏调用时,若某个实参中包含逗号或空格等间 隔符,则必须用字符串传递操作符将该实参括起 来,以保证其完整性。这样就可以将该实参作为 一个单一的参数而不是多个参数了。
2018/9/26 汇编语言程序设计教程 3
宏定义与宏调用
• 宏是具有宏名的一段汇编语句序列。宏的 定义相当于C语言中的预定义语句DEFINE, 定义一个标识符来代表一组指令序列。 • 在汇编时,汇编程序用对应的代码序列替 代宏指令。
2018/9/26
汇编语言程序设计教程
4
宏定义的格式
宏定义是用一组伪指令来实现的。其格式是:宏名 MACRO [形式参数表] ┇ (宏体) ENDM
2018/9/26 汇编语言程序设计教程 17
定义宏库的原则
• • • • • 宏尽量具有通用性; 宏定义中的标号必须用 LOCAL 伪指令说明; 要对宏中使用的每一个寄存器进行保护; 附有必要的使用说明; 宏库文件是文本文件,其扩展名无严格限 制,可由用户定义。
2018/9/26
汇编语言程序设计教程
2018/9/26 汇编语言程序设计教程 25
不定重复汇编伪指令IRP
IRP的格式为: IRP 形参,<参数表> ┇ (重复体) ENDM • IRP的功能是使汇编程序对重复体作重复汇编,汇编时, 依次将参数表中的参数取出代替形参,重复汇编的次数等 于参数表中参数的个数。 • IRP 和 ENDM 必须成对出现,重复体部分的语句序列的重 复次数由参数表中的参数个数决定,参数之间应用逗号分 隔,用参数表中的参数取代形参后得到的应该是有效的指 令序列。
大学计算机基础(第三版)-第8章 程序设计基础
算法的概念
用计算机解决问题的算法应具有以下特征:
有穷性
能行性
确定性
可输入输出信息
算法的表示
自然语言——使用人们能读懂的简短语句对算法的步骤 进行描述。
流程图法——用一些图框、线条以及文字说明来形象地、 直观地描述算法。 N-S流程图法—— 去掉了传统流程图中带箭头的流向线, 全部算法以一个大的矩形框表示,框内还可以包含一些从 属于它的小矩形框,适于结构化程序设计。 伪代码法—— 用介于自然语言和计算机语言之间的文 字和符号来描述算法。 计算机语言—— 用计算机语言描述算法,只有用计算 机语言编写的程序才能被计算机执行。
Hale Waihona Puke 算法的表示及三种基本结构1 顺 序 结 构
2 分 支 结 构
3 循 环 结 构
算法的表示及三种基本结构
(1)
顺序结构
块1
块2 块3
演示算法执行过程
【例】 求两数之和。
num115; num220; sumnum1+num2; 输出sum; 流程图
显示结果:35
num1 15 + num2 20 sum 35 寄存器 35
解释程序
高级语言源程序
计算结果
解释方式执行过程
程序设计语言的组成
一般来说,程序设计语言都应包含以下四 种成分:
数据成分 运算成分 控制成分 传输成分
用以描述程序中所涉及的数据 用以描述程序中所包含的运算 用以描述程序中的控制结构 用以表达程序中数据的传输
程序设计语言的组成
程序语言提供的数据类型:
8.1 程序设计的基本概念
语言 人类交流思想的工具
程序设计语言 人和计算机之间进行交流的语言
915225-MATLAB程序设计与应用-第8章 MATLAB方程数值求解__源程序
第8章MATLAB方程数值求解例8-1用直接解法求解下列线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';x=A\b例8-2用LU分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[L,U]=lu(A);x=U\(L\b)例8-3 用QR分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[Q,R]=qr(A);x=R\(Q\b)例8-4 用Cholesky分解求解例8-1中的线性方程组。
命令如下:>> A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; >> b=[13,-9,6,0]';>> R=chol(A)Jacobi迭代法的MA TLAB函数文件jacobi.m如下:function [y,n]=jacobi(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵B=D\(L+U);f=D\b;y=B*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=B*x0+f;n=n+1;end例8-5 用Jacobi迭代法求解下列线性方程组。
设迭代初值为0,迭代精度为10-6。
在程序中调用函数文件jacobi.m,程序如下:A=[10,-1,0;-1,10,-2;0,-2,10];b=[9,7,6]';[x,n]=jacobi(A,b,[0,0,0]',1.0e-6)Gauss-Serdel迭代法的MA TLAB函数文件gauseidel.m如下:function [y,n]=gauseidel(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵G=(D-L)\U;f=(D-L)\b;y=G*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=G*x0+f;n=n+1;end例8-6 用Gauss-Serdel迭代法求解例8-5中的线性方程组。
MATLAB程序设计基础教程(刘国良)-第9章
第9章 句柄图形与GUI设计
1.set()函数 在MATLAB中,使用set()函数可以设置对象的属性值,其 通常的调用格式如下: set(H,'PropertyName',PropertyValue,...):设置由句 柄H指定的图形窗口的属性,属性名由'PropertyName' 指定, 其属性值为 PropertyValue。H可以为向量,此时将H中指定 的所有窗口的PropertyName属性设置为 PropertyValue。 例如:set(gca,'YAxisLocation','right') 通过set()函数可以查看一个对象的所有可设置属性的所 有可能的值。 >> set(axes) ActivePositionProperty: [ position | {outerposition} ] ALim ALimMode: [ {auto} | manual ]
第9章 句柄图形与GUI设计
一个图形是由许多的图形对象组成的,这些对象是以层次 顺序保存的。图形对象包括:
根对象。 绘制图形的图形框架窗口对象(即Figure窗口)。 核心(Core)对象。 绘图(Plot)对象。 注释对象。 MATLAB中这些对象的组织形式为层次结构,如图9-1所示。
第9章 句柄图形与GUI设计
句柄图形是对底层图形例程集合的总称,它进行生 成图形的实际工作。这些细节通常隐藏在图形M文件的内部, 如果想使用它们,则通过图形句柄也是可得到的。图形对象是 MATLAB显示数据的基本绘图元素,每个对象拥有一个唯一的 标志,即句柄。通过句柄可以对已有的图形对象进行操作,控 制其属性。句柄图形使用户可以自定义MATLAB的信息显示方 式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语句组m
otherwise 语句组n
end
例: switch input_num
case -1 disp('negative one');
case 0 disp('zero');
case 1 disp('positive one');
otherwise disp('other value');
c=
21.1111
x=
21.1111
21
例 编写函数文件求半径为r的圆的面积和周长
function [s,p]=fcircle(r)
%CIRCLE calculate the area and perimeter of a circle of radii r
%r 圆半径 %s 圆面积 %p 圆周长 %2009年7月30日编
15
(3). 分支结构——根据一定条件来执行的各条语句 if — else — end语句有3种形式 if 表达式 执行语句
end if 表达式 ——— 是
语句1 else ———— 否
语句2
end
16
if 表达式1 ——— 多分支
语句1
例 对输入的字符:大写字母->小
elseif 表达式2
s = svd(x);
if (nargin == 1) tol = max(size(x)) * max(s) * eps;
程序部分
end
r = sum(s > tol);
9
(2). 函数m文件— 需要输入变量,返回输出变量
❖ matlab用户可以根据需要编辑自己的m文件,它们 可以像库函数一样方便的调用,从而极大地扩展了 matlab 的能力。
12
for — end
for i = 表达式 (表达式为一个向量) 可执行语句
end
例:利用for循环求1!+2!+3!+ +5!的值
sur k=1:i pdr=pdr*k;
sum = 153
end
sum=sum+pdr;
end
13
while — end 循环 while循环将循环体中的语句循环执行不定
3
例如: x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1 =
0 1 2 3 4 5 6 7 8 9 10 x2 =
0369 x3 =
11.5000 8.5000 5.5000 2.5000
❖ 在matlab窗口输入数据和命令进行计算时,当处理 复杂问题和大量数据时是不方便的,因此应编辑m 文件。
try
C=A*B;
catch
C=A.*B;
end
C lasterr
%显示出错原因19
(5). break语句和continue语句
❖ break语句用于终止循环的执行 ❖ continue语句控制跳过循环体中的某些语句
例 求[100,200]之间第一个能被21 整除的整数。
for n=100:200
c=5*(f-32)/9
在命令窗口调用该函数文件: >> clear; >>y=input('Input F’s temperature:');
在命令窗口中输入文件名: >>f2c %将会执行该文件 Input F’s temperature:73
c=
22.7778
>>x=f2c(y) Input F’s temperature:70
函数可以嵌套调用,即一个函数可以调用别的函数,甚 至调用它自身。一个函数调用它自身称为函数的递归调用。23
例 利用函数的递归调用,求n!
递归调用函数文件factor.m如下: function f=factor(n) if n<=1
f=1; else
f=factor(n-1)*n; %递归调用求(n-1)! end
写字母, 小写字母->大写字母,数字 字符->对应数值,其他字符原样输出
语dis句p(输2出项):
输出项既可以为字
elsei符f 串表,也达可式以3为矩 语阵。句3 ···
c=input('请输入一个字符','s'); if c>='A' & c<='Z'
disp(setstr(abs(c)+32)); elseif c>='a'& c<='z'
4. 也可因需要定义全局变量,使用global命令:
global 变量名(习惯上用大写字母以示区分)
例如:函数文件wadd.m: function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y;
在命令窗口中输入:
global ALPHA BETA
ALPHA=0.7;
第8章 matlab的程序设计
—— matlab语言称为第四 代编程语言,程序简洁、可 读性很强而且调试十分容易。 是matlab重要组成部分。
1
m文件简介
❖ 用户如想灵活应用matlab去解决实际问题, 充分调用matlab的科学技术资源,就需要编 辑m文件
❖ 包含matlab语言代码的文件称为m文件,其 扩展名为m。
disp(setstr(abs(c)- 32));
else 语句n
elseif c>='0'& c<='9' disp(abs(c)-abs('0'));
else
end
disp(c); end
17
④ switch-case-end语句
switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2
27
❖ input —— 提示用户从键盘输入数值、字符串、 表达式。 例:n=input('How many apples= ')
How many apples= 5
n=
5 ❖ pause —— 暂停,等待用户响应
可令m文件执行暂停,并在继续执行前按任 一个键 ,若要强行中止程序的运行可使用 Ctrl+C命令。
❖ 命令行方式程序可读性差,而且不能存储,对复杂 的问题,应编写成能存储的程序文件。
4
❖ m文件模式
将matlab语句构成的程序存储成以m为扩展 名的文件,然后再执行该程序文件,这种工 作模式称为程序文件模式。
程序文件不能在指令窗口下建立,因为指令 窗口只允许一次执行一行上的一个或几个语 句。
end 18
(4).检测语句try-catch
语句格式为:
try 语句组1
catch 语句组2
end
try语句先试探性执行语句 组1,如果语句组1在执行 时出现错误,则将错误信 息赋给保留的lasterr变量, 并转去执行语句组2
例 判断出错原因
A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12];
5
m文件的创建
❖ m文件的类型是普通的文本文件,我们可以 使用系统认可的文本文件编辑器来建立m文件。 如windows的记事本和word等。
❖ 具体的创建方法: 在matlab命令窗 口点击 File 菜单 new m-file
6
二、matlab文件的类型
1. 数据文件(包括.mat文件和其他可被接受的 文件类型)
P192
7
2. m文件
m文件的语法类似于c语言,但又有其自身特 点。它只是一个简单的ASCII码文本文件,执 行程序时逐行解释运行程序,matlab是解释 性的编程语言。
m文件有两类独立的m文件 — 称命令文件
可调用m文件 — 称函数文件
(1). 命令文件 — 简单的m文件
命令文件实际上是一串指令的集合,与在命
s=pi*r*r; p=2*pi*r;
22
例 利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之 间的转换。
函数文件tran.m: function [rho,theta]=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x);
调用tran.m的命令文件main1.m: x=input('Please input x=:'); y=input('Please input y=:'); [rho,the]=tran(x,y); rho the
令窗口逐行执行文件中的所有指令,其结果
是一样的,没有输入输出参数。
8
❖ 命令文件包括两部分:注释部分和程序部分
%RANK Number of linearly independent rows or columns. % K = RANK(X) is the number of singular values of X % that are larger than MAX(SIZE(X)) * NORM(X) * EPS. % K = RANK(X,tol) is the number of singular values of X that % are larger than tol.
❖ mat文件是matlab以标准二进制格式保存的 数据文件,可将工作空间中有用的数据变 量保存下来。
❖ mat文件的生成和调用是由函数save和load 完成的,也可用数据输入向导来导入文件。
save —— save data —— save data a b ——