MATLAB 程序设计方法 I
MATLAB程序设计及应用实例
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
5.1.4 选择结构- switch语句
switch语句
其语句格式为: switch 表达式 case 值1 语句组1 case 值2 语句组2 …… case 值m 语句组m otherwise 语句组m+1 end
5.1.4 选择结构- switch语句
例 某商场对顾客所购买的商品实行打折销售,已知打折标 准,求所售商品的实际销售价格
例 矩阵乘法运算要求两矩阵的维数相容,否则会出错。 先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘
matlab运行环境及程序设计
• 2.4.4 远程帮助系统
在MathWorks公司的主页 ()上可以找到很 多有用的信息,国内的一些网站也有丰富的 信息资源。
•
联机查询 (1) 基本窗口介绍 (2) 演示界面 • 常用的命令和技巧 Cd 改变当前目录
Clear 清除内存中的所有变量和函数 Clc 擦除matlab工作窗口中所有显示的内容 Clf 擦除matlab当前窗口中的图形 Dir 列出指定目录下的文件和子目录清单 Disp 在运行中显示变量或文字内容
clear命令用于删除MATLAB工作空间中的变 量。who和whos这两个命令用于显示在 MATLAB工作空间中已经驻留的变量名清 单。who命令只显示出驻留变量的名称, whos在给出变量名的同时,还给出它们的大 小、所占字节数及数据类型等信息。
获取工作空间信息 who 显示工作空间中所存的变量名. whos 显示工作空间中各变量的属性(它包括大小 元素个数,所占用的字节数;元素精度 退出和保存工作空间
1.当前目录窗口 当前目录是指MATLAB运行文件时的工作目录, 只有在当前目录或搜索路径下的文件、函数可 以被运行或调用。 在当前目录窗口中可以显示或改变当前目录, 还可以显示当前目录下的文件并提供搜索功能。 将用户目录设置成当前目录也可使用cd命令。 例如,将用户目录c:\mydir设置为当前目录, 可在命令窗口输入命令: cd c:\mydir
• 2.MATLAB的搜索路径 当用户在MATLAB命令窗口输入一条命令 后,MATLAB按照一定次序寻找相关的文 件。基本的搜索过程是: (1) 检查该命令是不是一个变量。 (2) 检查该命令是不是一个内部函数。 (3) 检查该命令是否当前目录下的M文件。 (4) 检查该命令是否MATLAB搜索路径中其 他目录下的M文件。
MATLAB程序设计
MATLAB程序设计MATLAB提供了一个完善的程序设计语言环境,使用户能够方便地编制复杂的程序,完成各种计算。
本节先介绍关系运算、逻辑运算,再介绍M-文件(即程序文件)的结构及MATLAB的程序控制流语句。
一、关系运算和逻辑运算1.关系运算(1)关系运算符:< ;< = ;> ;> = ;= = ;~ =(2)关系表达式:用关系运算符将两个同类型的量(表达式)连接起来的式子。
【注】①关系运算本质上是标量运算,关系表达式的值是逻辑值(0-假1-真);②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵。
例1.对向量进行关系运算。
>> A=1:5,B=5:-1:1 % 输入向量A = 1 2 3 4 5B = 5 4 3 2 1>> C=(A>=4) % 对向量进行关系运算C = 0 0 0 1 1>> D=(A==B) % 对向量进行关系运算D = 0 0 1 0 02.逻辑运算(1)逻辑运算符:& (and,与)、| (or,或)、~ (not,非)(2)逻辑表达式:用逻辑将两个逻辑量连接起来的式子。
【注】①逻辑运算本质上是标量运算,它将任何非零元素视为1(真);②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵。
(真值表见P27)例2.对向量进行逻辑运算。
>> a=1:9,b=9-aa = 1 2 3 4 5 6 7 8 9b = 8 7 6 5 4 3 2 1 0>> c=~(a>4) % 非运算c = 1 1 1 1 0 0 0 0 0>> d=(a>=3)&(b<6) % 与运算d = 0 0 0 1 1 1 1 1 13.逻辑函数any(x) 向量x 中有非零元返回1,否则返回0。
(向量函数) all(x) 向量x 中所有元素非零返回1,否则返回0。
MATLAB基础及程序设计
一、变量和数值
➢Matlab的变量有一定的命名规则: (1)变量名区分大小写。’A’与’a’是不同的变量。 (2)变量名不能超过63个字符。 (3)变量名必须以字母开头。 (4)关键字(如if,while等)不能作为变量名。 (5)有一些系统自动定义的特殊变量,如pi,inf,i等。
➢特殊变量 ans: 用于结果的缺省变量名 pi: 圆周率 eps:计算机的最小数 inf:无穷大
>>syms a b c x f2=a*x^2+b*x+c 上面的语句即创建了符号变量a,b,c,x,又创建了符号表达 式,f1,f2符号表达式相同。
二、符号表达式的代数运算: 特点: 1、传统的数值运算由于计算机的有效位数的 限制,会产生误差。符号运算则可以避免。
2、符号运算可以得出完全的封闭解或任意精 度的数值解。
六、代数方程组的求解
[例] x1+x2=5 2x1+x2=7 x1+2x3=4
求解x1,x2。 a=[1 1 0;2 1 0;1 0 2];b=[1;5;5]; x=a\b x=
2 3
七、多项式拟合 多项式拟合是用一个多项式来逼近一组给定的 数据,在数据分析上是常用的方法,使用polyfit 函数来实现.拟合的准则是最小二乘法。 [例] x0=0:0.1:1;
2、用MATLAB函数创建 + rand —— 随机矩阵 >>rand(m,n)
+eye —— 单位矩阵 >>eye(m,n)
+zeros ——全部元素都为0 的矩阵
+>>zeros(m,n) +ones ——全部元素都为1的 矩阵
+ >>ones(m,n)
matlab教程(全)09Matlab程序设计
2020/11/8
Application of Matlab Language
14
5.5 Matlab矩阵分析与处理
5.5.1 特殊矩阵 常见的特殊矩阵有零矩阵、幺矩阵、单位矩阵等,这类特殊矩阵在应用
中具有通用性。 1、通用的特殊矩阵 常用的产生通用殊矩阵的函数有: zeros:产生全0矩阵(零矩阵)。 ones: 产生全1矩阵(幺矩阵)。 eye: 产生单位矩阵。 rand:产生0~1间均匀分布的随机矩阵。 randn:产生均值为0,方差为1的标准正态分布随机矩阵。
5.4.1 程序调试概述 一般说来,应用程序的错误有两类,一类是语法错误,另一类是运行时
的错误。语法错误,给出相应的错误信息,并标出错误在程序中的行 号。例如:输入下列程序: A = 87;
B = 9.3;
C = A+*B; 系统将给出错误信息:
??? Error: File: Untitled1.m Line: 3 Column: 7
2020/11/8
Application of Matlab Language
4
说明:
将以上函数文件以文件名fcircle.m保存,然后在命令窗口调用。
[s,p] = fcircle(10) 输出结果是: s=
314.1593 p=
62.8319 采用help命令或lookfor命令可以显示出注释说明部分的内容。 help fcircle 屏幕显示
进行存取和修改。
全局变量用global命令定义,格式为:
global 变量名
例5.13 全局变量应用示例。
先建立函数文件wadd.m,该函数将输入的参数加权相加:
function f = wadd(x,y)
matlab 程序设计
【例5.8】用try... catch... end结构来进行矩阵相乘运算. 例
% EX0508 try结构 n=4; a=magic(n); m=3; b=eye(3); try c=a*b catch c=a(1:m,1:m)*b end lasterr
5.2.6 流程控制语句
break, continue, return, pause, keyboard, input 1. break命令 命令 break命令可以使包含break的最内层的for或while 语句强制终止,立即跳出该结构,执行end后面的命令, break命令一般和if结构结合使用.
5.2.4 switch…case开关结构
语法: switch 开关表达式 case 表达式 表达式1 语句段1 语句段 case表达式2 case表达式2 表达式 语句段2 语句段 ... otherwise 语句段n 语句段 end
说明: (1) 将开关表达式依次与case后面的表达式进行比较,如 果表达式1不满足,则与下一个表达式2比较,如果都不 满足则执行otherwise后面的语句段n;一旦开关表达式 与某个表达式相等,则执行其后面的语句段. (2) 开关表达式只能是标量或字符串. (3) case后面的表达式可以是标量,字符串或元胞数组, 如果是元胞数组则将开关表达式与元胞数组的所有元素 进行比较,只要某个元素与开关表达式相等,就执行其 后的语句段.
(2) 将函数文件保存为"Ex0502.m". (3) 在MATLAB命令窗口输入以下命令,则会出现f的计算值 注意: 注意:M脚本文件和M函数文件的文件名及函数名的命名规 和绘制的曲线:f=Ex0502(0.3) 则与MATLAB变量的命名规则相同.
MATLAB语言程序设计基础
3.2 matlab语言基本运算及输入输出
3.2.5 输入与输出语句
input A=input(提示字符串)要求输
入矩阵
A=input(提示字符串,‘s’) 要求字符串eg:
n=input('how much')
n=input('ho第w23页m/共4u1页ch','s')
3.2 matlab语言基本运算及输入输出
关系运算和逻辑运
算
表3-6 关系运算和逻辑运算函数
函数 any all find
exist isnan
意义 逻辑条件任何一个
逻辑条件全部 寻找逻辑值的向量元素下 标
检查某变量是否存在 检查非数值量
函数 finite isempty isstr
strcmp
随机数元素矩阵 设三维绘图基底坐
第5页/共41页
单位矩阵
3.1.3构造多维数组
cat( ) a=cat(n,a1,a2,….) n:多维函数的维数 n=1:
cat(a1,a2,a3..)=[a1;a2;a3…] n=2:
cat(a1,a2,a3..)=[a1,a2,a3…] n=3: 图3-1示
重新定义维数
end 表示某一维末尾元素下标
2、复数矩阵: b=[1 2;3 4]+i*[5 6;7 8] b=[1+5i 2+6i;3+7i 4+8i]
第3页/共41页
3、空矩阵[]
0×0阶
与clear不同之处:clear删除变量
[]删除矩阵中的元素
A(:,[2,3])=[] 第2,3列元素删除
函数 abs angle sqrt real imag conj round fix
Matlab程序设计
19
例:计算2个数的和,根据输入的参数个数不同使用不同 的运算表达式。 function [sum]=Ex0514(x,y) if nargin==1 sum=x+0; else if nargin==0 sum=0; else sum=x+y end end [sum]=Ex0514(1,2)
可以在某一目录中建立一个private目录来存放相关函数,具有性质:在 私有目录下的私有函数,只能被其父目录的M函数文件调用,对其他目 录的文件私有函数是不可见的,可以和其他目录下的函数重名;私有函 数父目录的M脚本文件也不可调用私有函数;在函数调用搜索时,私有 函数优先于其他MATALB路径上的函数。
局部变量和全局变量
(1)局部变量是在函数体内部使用的变量,其影响范围只 能在本函数内,仅存在于函数的工作空间内,只在函数执行 期间存在,函数执行完变量消失。
(2)全局变量是可以在不同函数工作空间和MATLAB工作 空间中共享使用的变量。在使用前必须用global定义,而且 每个要共享全局变量的函数和工作空间,都必须逐个用 global对变量加以定义。
m文件模式
m文件编辑器缺省设置是(通过菜单Preferences) c:\windows\notepad.exe 还可设成:c:\windows\write.exe c:\windows\command\ 注意:所创建的m文件必须纳入matlab搜索路 径后,才能在matlab命令窗口运行。
《MATLAB程序设计》实验指导书
三、
实验仪器和设备
1、 计算机一台。 2、 MATLAB7.0 以上集成环境。
四、
预习要求
2
《MATLAB 程序设计》实验指导书
1、 复习 MATLAB 的启动与Байду номын сангаас出,熟悉 MATLAB 运行环境。 2、 复习 MATLAB 中矩阵的生成以及矩阵运算的基本原理。
五、
实验内容及步骤
实验内容:
1、 求下列表达式的值 1) z1
5
《MATLAB 程序设计》实验指导书
2) 函数调用 函数文件编制好后,就可调用函数进行计算了。函数调用的一般格式为 [输出实参表]=函数名(输入实参表) 注意:函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个 数一致,否则会出错。函数调用时,实参先传递给形参,然后再执行函数功能。 5、 选择结构 1) if 语句 a) 单分支 if 语句 if 条件 语句块 end b) 双分支 if 语句 if 条件 语句块 1 else 语句块 2 end c) 多分支 if 语句 if 条件 1 语句块 1 elseif 条件 2 语句块 2 …… elseif 条件 n 语句块 n else 语句块 n+1 end 2) switch 语句 switch 表达式 case 结果表 1 语句块 1 case 结果表 2 语句块 2 ……
二、
实验原理
1、 M 文件 用 MATLAB 语言编写的程序,称为 M 文件,它们的扩展名均为.m。M 文件根据 调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file) 。 2、 建立新的 M 文件 启动 MATLAB 文本编辑器有 3 种方法: 1) 单击工具栏上的“New M-File”命令按钮。 2) 从 MATLAB 主窗口的“File”菜单中选择“New”菜单项,再选择“M-file”命令。 3) 在 MATLAB 命令窗口输入命令“edit”。 3、 打开已有的 M 文件 1) 在当前目录窗口选中要打开的 M 文件,双击鼠标左键。 2) 单击 MATLAB 主窗口工具栏上的“Open File”命令按钮,再从弹出的对话框中 选择所需打开的 M 文件。 3) 从 MATLAB 主窗口的“File”菜单中选择“Open”命令,在“Open”对话框中选中 所需打开的文件。 4) 在 MATLAB 命令窗口输入命令“edit 文件名” 。 4、 函数文件 1) 函数文件的基本结构 函数文件由 function 语句引导,其基本结构为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 注意:函数名的命名规则与变量名相同。当输出形参多于一个时,应用方括号 括起来。
第4章MATLAB程序设计
例 求一个值n,使n!最大但小于1050。 MATLAB程序如下: %初始化 r=1;k=1; 执行后结果如下: %做循环 The 41!Is while r<1e50 3.345253e+049 r=r*k; k=k+1; end k=k-1;r=r/k;k=k-1; % 输出结果 disp(['The',num2str(k),'!is',num2str(r)])
4.2.3 循环结构 for 循环:可完成指定次重复的循环,且在循环开 始之前,就知道代码重复的次数。
while 循环:while语句可完成不定次重复的循 环,与for语句不同,每次循环前要先判断条件 是否满足,再决定循环是否进行。
例 利用rand函数产生10个随机数,然后利用嵌套 for循环进行从小到大排序。
2 1.5 1 0.5 0 150 100 50
然后通过调用函数fun计算出z, 并利用mesh绘制出网格线。 编写的脚本文件如下: % 坐标系准备 x=[0:.02:2]; y=[-2:.02:0]; % 调用函数计算函数值 z=fun(x,y); % 绘图 figure mesh(z)
150 100 50
4.3.2 函数的调用 函数调用的一般格式如下: [输出实参表] = 函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺 序、个数,应与函数定义时形参的顺序、 个数一致,否则会出错。函数调用时,先 将实参传递给相应的形参,从而实现参数 传递,然后再执行函数的功能。
例 对于函数
z ( x 1)2 ( y 1)2
fprintf函数中,format字符中常常会使用到一些特 殊字符来灵活的实现一些显示功能 format string 结果 %d %e %f %g 把值作为整数来处理 用科学记数法来显示数据 用于格式化浮点数,并显示这个 数 用科学记数格式,或浮点数格式, 根据那个表示的数位短,显示那 个 转到新的一行
实验一MATLAB程序设计入门
实验一MATLAB程序设计入门熟悉matlab界面;掌握matlab的变量的命名规则;掌握常用数学运算符号和标点符号的使用方法;掌握常用数学函数的使用方法;掌握建立和使用M文件的方法;学会创建简单的数组并对数组元素进行访问,掌握数组的各种运算;学会创建数组并对数组元素进行访问和操做,掌握矩阵的各种运算规则;掌握关系与逻辑运算符的使用规则;实验原理与方法一、变量与函数1、变量变量是任何程序设计语言的基本元素之一,MATLAB 语言当然也不例外。
与常规的程序设计语言不同的是,MATLAB 语言并不要求对所使用变量进行事先声明,也不需要指定变量类型,它会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型;在赋值过程中,如果变量已存在,MATLAB 语言将使用新值代替旧值,并以新的变量类型代替旧的变量类型。
在MATLAB 语言中变量的命名遵守如下规则:(1)变量名必须是不含空格的单个词;(2)变量名以字母开头,变量名中可包含字母、数字、下划线,但不能使用标点;(3)变量名长度不超过31位,第31个字符之后的字符将被忽略;(4)变量名区分大小写;(5)关键字(如if、while等)以及固有函数(如max,sum等)不能作为变量名;与其他的程序设计语言相同,MATLAB 语言中也存在变量作用域的问题。
在未加特殊说明的情况下,MATLAB 语言将所识别的一切变量视为局部变量,即仅在其调用的M文件内有效。
若要定义全局变量,应对变量进行声明,即在该变量前加关键字global。
一般来说,全局变量常用大写的英文字符表示,尽管这不是MATLAB 语言所必需的。
特殊变量:MATLAB 有一些预定义的变量,这些特殊的变量称为常量。
下表给出了MATLAB 语言中经常使用一些常量及其说明。
2、数学运算符号及标点符号(1)MATLAB的每条命令后,若为逗号或无标点符号,则显示命令的结果;若命令后为分号,则禁止显示结果.(2)“%” 后面所有文字为注释. (3)“...”表示续行.3、数学函数二、数组与矩阵1、创建简单的数组x=[a b c d e f ] 创建包含指定元素的行向量x=first:last 创建从first开始,加1计数,到last结束的行向量x=first:increment:last 创建从first开始,加increment计数,last结束的行向量x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量x=logspace(first,last,n)创建从first开始,到last结束,有n个元素的对数分隔行向量.例:x=linspace(1,2,10)y=10.^(x)z=logspace(1,2,10)2、数组元素的访问(1)访问一个元素:x(i)表示访问数组x的第i个元素.(2)访问一块元素:x(a :b :c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.(3)直接使用元素编址序号. x([a b c d]) 表示提取数组x的第a、b、c、d个元素构成一个新的数组[x(a) x(b) x(c) x(d)]. 3、数组的方向前面例子中的数组都是一行数列,是行方向分布的. 称之为行向量. 数组也可以是列向量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示.产生列向量有两种方法:直接产生例c=[1;2;3;4] 转置产生例b=[1 2 3 4]; c=b’说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素.4、数组的运算(1)标量-数组运算数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算. 设:a=[a1,a2,…,an], c=标量则:a+c=[a1+c,a2+c,…,an+c] a.*c=[a1*c,a2*c,…,an*c]a./c= [a1/c,a2/c,…,an/c](右除)a.\c= [c/a1,c/a2,…,c/an] (左除)a.^c= [a1^c,a2^c,…,an^c] c.^a= [c^a1,c^a2,…,c^an](2)数组-数组运算当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行的,不同大小或维数的数组是不能进行运算的. 设:a=[a1,a2,…,an], b=[b1,b2,…,bn] 则:a+b= [a1+b1,a2+b2,…,an+bn]a.*b= [a1*b1,a2*b2,…,an*bn] a./b= [a1/b1,a2/b2,…,an/bn] a.\b=[b1/a1,b2/a2,…,bn/an]a.^b=[a1^b1,a2^b2,…,an^bn] (3)数组维数:length(a)5、矩阵的建立逗号或空格用于分隔某一行的元素,分号用于区分不同的行;除了分号,在输入矩阵时,按Enter键也表示开始一新行;输入矩阵时,严格要求所有行有相同的列.例:m=[1 2 3 4 ;5 6 7 8;9 10 11 12] p=[1 1 1 1 2 2 2 2 3 3 3 3] 特殊矩阵的建立:a=[ ] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零.b=zeros(m,n) 产生一个m行、n列的零矩阵c=ones(m,n) 产生一个m行、n列的元素全为1的矩阵d=eye(m,n) 产生一个m行、n列的单位矩阵6、矩阵中元素的操作(1)矩阵A的第r行:A(r,:)(2)矩阵A的第r列:A(:,r)(3)依次提取矩阵A的每一列,将A拉伸为一个列向量:A(:)(4)取矩阵A的第i1~i2行、第j1~j2列构成新矩阵:A(i1:i2, j1:j2) (5)以逆序提取矩阵A的第i1~i2行,构成新矩阵:A(i2:-1:i1,:)(6)以逆序提取矩阵A的第j1~j2列,构成新矩阵:A(:, j2:-1:j1 )(7)删除A的第i1~i2行,构成新矩阵:A(i1:i2,:)=[ ] (8)删除A的第j1~j2列,构成新矩阵:A(:,j1:j2)=[ ] (9)将矩阵A和B拼接成新矩阵:[A,B];[A;B]7、矩阵的运算(1)标量-矩阵运算:同标量-数组运算。
第七章 MATLAB程序设计
1、输入程序: %对两个矩阵相 加 clc clear a=[1,2,3]; b=[4,5,6]; c=a+b
3、在命令窗口输入 myadd,回车 或打开文件,点击运 行按钮 给出结果: c=
5
7
9
18
打开已有的M文件,也有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单 中选择Open命令,则屏幕出现Open对话框, 在Open对话框中选中所需打开的M文件。在 文档窗口可以对打开的M文件进行编辑修改, 编辑完成后,将M文件存盘。 (2) 命令操作。在MATLAB命令窗口输入命令: edit 文件名,则打开指定的M文件。 (3) 命令按钮操作。单击MATLAB主窗口工具 栏上的Open File命令按钮,再从弹出的对话 框中选择所需打开的M文件。
直接访问work space 通过函数形参传递数据 中所有变量 直接选取MATLAB中 精心设计完成指定功能 执行的语句 重复操作 MATLAB功能扩展
7
1.3 M文件的创建
m文件的类型是普通的文本文件,我们可以使用 系统认可的文本文件编辑器来建立m文件。如 MATLAB下的m文件编辑器、windows的记事 本和word等。
s=pi*r*r; p=2*pi*r;
24
特定规则:
1.函数m文件第一行必须以单词function作为引导词,表示该M文件是一 个函数文件,必须遵循如下形式: function <因变量>=<函数名>(<自变量>)
2.函数名的命名规则与变量名相同,m文件的文件名必须是 <函数名> .m。 3.输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形 参多于一个时,则应该用方括号括起来。 4.程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数 运行期间有效。
实验4答案 Matlab程序设计1
实验4 Matlab 程序设计1实验目的:1、 掌握建立和执行M 文件的方法;2、 掌握实现选择结构的方法;3、 掌握实现循环结构的方法。
实验内容:1. 从键盘输入一个4位整数,按如下规则加密后输出。
加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。
a = input('请输入一个四位整数:');a1 = fix(a/1000);a2 = rem(fix(a/100),10);a3 = rem(rem(fix(a/10),100),10);a4 = rem(a,10);a1 = rem(a1+7,10)a2 = rem(a2+7,10)a3 = rem(a3+7,10)a4 = rem(a4+7,10)b1 = a1;a1 = a3;a3 = b1;b2 = a2;a2 = a4;a4 = b2;b = a1*1000+a2*100+a3*10+a42. 求分段函数的值。
,x x x x y x x x x x x x ⎧+- <≠-⎪=-+ ≤<≠≠⎨⎪-- ⎩2226035605231且且及其他用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。
x = input(请输入X 的值:');if x <0 & x~=-3y = x.*x +x-6;elseif x>=0 & x<5 & x~=2 & x~=3y = x.*x-5*x+6;elsey = x.*x-x-1;endy3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:(1)分别用if语句和swich语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
MATLAB程序设计基础教程(刘国良)-第1章
第1章 MATLAB基础
如果要查看以前的变量值,但忘记了该变量名,则输入 who即可查看曾经使用过的变量名,如:
>> who Your variables are: grade1 grade2 grade3 grade4 total 如果要查看以前变量值的详细信息,输入whos即可。
第1章 MATLAB基础
第1章 MATLAB基础
MATLAB具有以下缺点: (1) 运行效率较低。由于MATLAB是一种合成语言,因此 与一般的高级语言相比,用它编写的程序其运行时间往往要长 一些。 (2) 价格昂贵。
第1章 MATLAB基础
3.应用程序接口 由于MATLAB的代码编译器采用伪编译的方式,因此在 MATLAB中编写的程序无法脱离MATLAB的工作环境而独立运行。 针对这个问题,MATLAB提供了应用程序接口,允许MATLAB与 其他应用程序进行数据交换,一般来说,按目的可将它们分为 以下三种: (1) MEX文件。MEX文件作为一种动态链接库文件,必须 通过在MATLAB的工作环境内调用才能运行。 (2) MAT文件。MAT文件用于数据交换,不能利用MATLAB 提供的功能来完成计算任务。MAT文件由SAVE命令生成,由 LOAD命令调用。 (3) 拓广MATLAB的应用范围和应用手段的开发应用程序。 这是MATLAB引擎应用程序,是一种可以独立执行的应用程序, 但在应用程序执行时,将在后台启动一个MATLAB进程,用于
4.当前文件夹(Current Folder)窗口 当前文件夹窗口会显示当前用户工作的文件夹所在的路径。 如果用户改变文件的路径或所在文件夹,则当前文件夹窗口会 显示新的路径和文件夹。 在命令窗口中输入cd命令,并按Enter键确认,即显示当 前MATLAB工作所在目录: >> cd D:\My Documents\MATLAB 在命令窗口中输入dir命令,并按Enter键确认,即显示 当前MATLAB工作所在目录中的内容。
MATLAB程序设计第一讲
• 2.lookfor命令 help命令只搜索出那些关键字完全匹配的结 果,lookfor命令对搜索范围内的M文件进 行关键字搜索,条件比较宽松。 lookfor命令只对M文件的第一行进行关键 字搜索。若在lookfor命令加上-all选项,则 可对M文件进行全文搜索。
2.绘图功能 MATLAB提供了两个层次的绘图操作:一 种是对图形句柄进行的低层绘图操作,另 一种是建立在低层绘图操作之上的高层绘 图操作。 利用MATLAB的高级图形命令可以轻而易 举地绘制二维、三维乃至四维图形,并可 进行图形和坐标的标识、视角和光照设计、 色彩精细控制等等。
3.编程语言 MATLAB具有程序结构控制、函数调用、 数据结构、输入输出、面向对象等程序语 言特征,而且简单易学、编程效率高。 4.MATLAB工具箱 MATLAB包含两部分内容:基本部分和各 种可选的工具箱。 MATLAB工具箱分为两大类:功能性工具 箱和学科性工具箱。
1.5 变量和数据操作
1.5.1 变量与赋值 1.变量命名规则 (i).变量名必须是以字母开头,后可接字 母、数字或下划线; (ii). 变量名最多不超过63个字符; (iii).变量名严格区分字母的大小写。
2.赋值语句 (1) 变量=表达式 (2) 表达式 其中表达式是用运算符将有关运算量连接 起来的式子,其结果可以是一个数值,也 可以是一个矩阵。 • MATLAB书写表达式的规则与“手写算式” 差不多相同。 • 如果一个指令过长可以在结尾加上...(代表 此行指 令与下一行连续)。
MATLAB第二章
function [egg1,egg2,chicken1]=myegg(n)
% egg1 隔1天的蛋个数 % egg2 隔2天的蛋个数 % chicken1 过n天后母鸡个数 if n==1
egg1=1; egg2=0; chicken1=1; elseif n==2 egg1=1; egg2=1; chicken1=1;
27
>> x=0:0.1:2*pi; >> y=sin(x); >> plot(x,y) >> plot(x,y,‘ro’) %默认是蓝色曲线 >> x=[0 1 2 5];y=[4 -2 1 2]; >> plot(x,y) >> fplot(‘x^2+4*x+1’,[-15 15]) %函数用字符串表示
1 -8 4 9 -4 5 7 -9 >> fun=@myfun5 %例28中的函数 fun =
@myfun5 >> y=fun(A) %直接调用 y=
1 -13 16 81 -5 25 49 -15 >> y=feval(fun,A) %利用feval y=
1 -13 16 81 -5 25 49 -15
1 4 9 16 5 10 15 20
2024/7/5
第二章 MATLAB编程与作图
24
>> k=5;
>> ff=@(x)x^2+2*x+k %可以使用空间中的变量k
ff =
@(x)x^2+2*x+k
>> ff(5)
ans =
40
>> A=[1 2 ;3 4]
matlab04 Matlab 编程1
在Matlab命令窗口中输入 命令窗口中输入
>> f2cf(100)
调用该函数时,既有输入参数,又有输出参数; 调用该函数时,既有输入参数,又有输出参数;函数调用 完后, 、 没有被保留在工作空间。 完后,变量 c、f 没有被保留在工作空间。
case子句后面的表达式可以是标量或字符串此时表达式的值等于该单元中的某个元素时执行相应的语句循环结构循环结来自是按照给定的条件重复执行指定的语句
Matlab 程序设计
Matlab 程序设计介绍 程序设计介绍
Matlab是一种科学计算语言,但同时也具有和 、 是一种科学计算语言,但同时也具有和C 是一种科学计算语言 FORTRAN等高级语言相类似的语言特征,能方便地实 等高级语言相类似的语言特征, 等高级语言相类似的语言特征 现程序控制。 利用Matlab的程序控制功能 , 可以将有 的程序控制功能, 现程序控制 。 利用 的程序控制功能 命令编成程序存储在一个文件中( 文件 文件) 关 Matlab命令编成程序存储在一个文件中 ( M文件 ) , 命令编成程序存储在一个文件中 然后运行该文件, 然后运行该文件 , Matlab就会自动依次执行文件中的 就会自动依次执行文件中的 命令,直到全部命令执行完毕。 命令,直到全部命令执行完毕。 程序设计中, 在Matlab程序设计中,要充分利用 程序设计中 要充分利用Matlab数据结构 数据结构 的特点,提供编程效率。 的特点,提供编程效率。
10
选择结构
选择结构是根据给定的条件成立或不成立, 选择结构是根据给定的条件成立或不成立,分别执行不 同的语句。 用于实现选择结构的语句有if语句 同的语句。Matlab用于实现选择结构的语句有 语句 用于实现选择结构的语句有 语句。 和switch语句。 语句 if 语句 单分支 if expr (条件) 条件) statement (语句组) 语句组) end
实验三MATLAB的程序设计
end
ifk==0
Y=1;
elseifk==1&&n==1
Y=1;
elseifk<=n
Y=(n/k)*c(k-1,n-1);
end
程序测试:
>> c(0,0)
ans =
1
>> c(0,1)
ans =
1
>> c(3,4)
ans =
4
7,计算以下和式,并估计其求和公式以及验证:
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k;
end
测试:
>> s(3)
ans =
6
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k^2;
end
测试:
>> s(3)
ans =
14
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k^3;
end
测试:
>> s(2)
4
>> Joseph0(7,4)
2
11,求出 之间的所有素数;
M函数文件:
functionout = nprimes(N)
A= [1:N];
A(1)=0;
i=2;
whilei<= floor(sqrt(N));
forj= 2:fix(N/i)
A(i*j) = 0;
end;
i = A(find(A>i,1));
第6章 MATLAB程序设计
如果用户调用toc时不指定输出参数t, 例如: >> tic >> toc elapsed_time = 4.0160 函数在命令窗口显示函数工作空间变量 elapsed_time 的值,但在MATLAB命令工作空间里不给输出参数t赋任 何值,也不创建变量t。
如果如果用户调用toc时指定输出参数t,例如: >> tic >> out=toc out = 2.8140 则以变量out的形式返回到命令窗口,并在 MATLAB命令工作空间里创建变量out。
function y = linspace(d1, d2, n) %LINSPACE Linearly spaced vector. if nargin == 2 n = 100; end n = double(n); y = [d1+(0:n-2)*(d2d1)/(floor(n)-1) d2];
function t=toc % TOC Read the stopwatch timer.
Global TICTOC If nargout<1 elapsed_time=etime(clock,TICTO C) else t=etime(clock,TICTOC); end
(8)全局变量可以为编程带来某些方便,但却破坏了函 数对变量的封装,所以在实际编程中,无论什么时候都应 尽量避免使用全局变量。如果一定要用全局变量,建议全 局变量名要长、采用大写字母,并有选择地以首次出现的 M文件的名字开头,使全局变量之间不必要的互作用减至 最小。 (9)MATLAB以搜寻脚本文件的同样方式搜寻函数文件。 例如,输入>>cow,MATLAB首先认为cow是一个变 量;如果它不是,那么MATLAB认为它是一个内置函数; 如果还不是,MATLAB检查当前cow.m的目录或文件夹; 如果仍然不是,MATLAB就检查cow.m在MATLAB搜 寻路径上的所有目录或文件夹。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
————表达式和运算符 表达式和运算符———— 表达式和运算符
用赋值语句创建变量 用赋值语句创建变量 变量名=数据 变量名 数据
变量名=表达式 变量名 表达式
表达式——由变量,运算符,函数,数字组成 由变量,运算符,函数, 表达式 由变量 球坐标变换
x = R cos θ cos y = R cos θ sin z = R sin θ
7/16
————程序设计中的流程控制————
条件控制; 循环控制; 错误控制;终止运行控制 条件控制 循环控制 错误控制 终止运行控制 条件控制——有选择地运行程序块 有选择地运行程序块 条件控制 year=input('input year:='); 1. if / elseif 语句 n1=year/4; 例2 .8 判润年程序 n2=year/100; n3=year/400; 润年条件有二 if n1==fix(n1)&n2~=fix(n2) 能被4整除 整除, ①能被 整除,但 disp('是润年 是润年') 是润年 elseif n1==fix(n1)&n3==fix(n3) 不能被100整除; 不能被 整除; 整除 disp('是润年 是润年') 是润年 能被4整除 整除, ②能被 整除,又 else 能被400整除. 整除. 能被 整除 disp('不是润年 不是润年') 不是润年 end
12/16
————程序设计中的流程控制————
只能被1和它自身整除 和它自身整除, 如果一个正整数 n 只能被 和它自身整除,则称这个 数为素数(或质数 例如: , , , , , 或质数). 数为素数 或质数 .例如:2,3,5,7,11, 例2.16 用试商法判别素数 n=input('input n:='); for k=2:n-1 if mod(n,k)==0,break,end end if k <n-1 disp('不是素数 不是素数') 不是素数 else disp('是素数 是素数') 是素数 end
14/16
————程序设计中的流程控制————
调整程序, 调整程序,使输入数据能完整有效地提供给用户 立方倍积问题实验. 作一立方体,使其体积等于单位 立方倍积问题实验 . 作一立方体 使其体积等于单位 正方体的两倍.对边长取不同位数 显示计算结果误差. 对边长取不同位数,显示计算结果误差 正方体的两倍 对边长取不同位数 显示计算结果误差. H=power(2,1/3); D=1; for k=1:6 D=D*10; 1.2000e+000 2.7200e-001 h(k)=fix(H*D)/D; 1.2500e+000 4.6875e-002 V(k)=power(h(k),3); 1.2590e+000 4.3830e-003 end 1.2599e+000 1.0024e-004 format short e 1.2599e+000 4.9998e-006 [h',2-V'] 1.2599e+000 2.3761e-007
————程序设计中的流程控制————
3. continue 命令
循环语句中,与 通常用于 for 或 while 循环语句中 与 if 语句一起使 跳过本次循环 用,跳过本次循环 去执行下一轮循环 跳过本次循环,去执行下一轮循环 4. break命令 命令 循环语句中,与 通常用于 for 或 while 循环语句中 与 if 语句一起使 中止本次循环 用,中止本次循环 跳出最内层循环 中止本次循环, If 条件表达式,break, end 条件表达式, 5. error('message') 显示文本 message,并中断程序执行 , If 条件表达式 error('message'), end 条件表达式,
%中止循环
13/16
例2.17海伦公式 海伦公式
S=
p( p a )( p b)( p c )
其中, 其中, 分别为三条边长. 其中,p = (a + b + c)/2,其中,a,b,c分别为三条边长. 其中 分别为三条边长 if a+b<c | a+c<b | b+c<a error('输入错误 三角形两边之和大于第三边 输入错误,三角形两边之和大于第三边 输入错误 三角形两边之和大于第三边') end >> hero input a:=3 input b:=4 input c:=8 ??? Error using ==> hero 输入错误, 输入错误,三角形两边之和大于第三边
4973.73
5/16
————表达式和运算符 表达式和运算符———— 表达式和运算符
1 .算术运算符 算术运算符
+ * / \ ^ 加 乘 右除 左除 矩阵幂 减 .* 点乘 ./ 点右除 .\ 点左除 .^ 点幂
2.关系运算符 关系运算符
< > == 小于 大于 等于 不等于 <= 小于等于 >= 大于等于 ~=
15/16
练习与思考题
1.叙述古希腊三大难题之一的化圆为方问题 并用实验 叙述古希腊三大难题之一的化圆为方问题,并用实验
数据显示误差. 数据显示误差.
2. 用一句话说明循环控制语句的特点. 用一句话说明循环控制语句的特点.
3.说明 循环 说明for循环 循环语句的相同和不同之处. 说明 循环while循环语句的相同和不同之处. 循环语句的相同和不同之处
R=6400; S0=4*pi*R*R; d=10000; S=2*pi*R*R*d/(R+d); S/S0*100
2/16
M文件分为命令文件和函数文件两种 文件分为命令文件和函数文件两种 文件分为命令文件 命令文件——MATLAB命令的有序集合. 命令的有序集合. 命令文件 命令的有序集合 文件执行——对文件中命令进行批处理,即从第一 对文件中命令进行批处理, 文件执行 对文件中命令进行批处理 条命令开始按顺序执行,直到最后一条命令.如果 条命令开始按顺序执行,直到最后一条命令. 中间某条命令出错, 中间某条命令出错,则中断并输出错误信息 ①在编辑窗口中编写; 在编辑窗口中编写 保存并对文件命名; ②保存并对文件命名; ③命令窗口键入文件 名运行; 名运行; 观察运行结果; ④观察运行结果;
4.修改"试商法判断素数"的程序,产生 以内的 修改"试商法判断素数"的程序,产生100以内的
全部素数. 全部素数.
5.用help命令获取primes的使用方法,用求素数函 的使用方法, 产生100以内的全部素数. 以内的全部素数. 数primes()产生 以内的全部素数
16/16
�
3.逻辑运算符 逻辑运算符 & 与 | 或 ~ 非
ቤተ መጻሕፍቲ ባይዱ
(and) (or) (not)
6/16
运算优先级
①函数运算 exp(),log(),sin(),abs(),fix(), , , , , , ②算术运算 .^,^,.*,./,*,/,+,–,; , , , , , , , ,; ③关系运算 <,<=,>,>=,==,~= , , , , , ④逻辑运算 &,| , (1+fix(pi))*mod(2,4)+2*3^2结果为 结果为ans=26; 表达式 (1+fix(pi))*mod(2,4)+2*3^2结果为ans=26; 三角形任意两边之和大于第三边的逻辑表达式 (A) a+b>=c | a+c>=b | b+c>=a (B) a+b<=c | a+c<=b | b+c<=a (C) a+b>c | a+c>b | b+c>a (D) a+b>c & a+c>b & b+c>a
f(44)=701408733
9/16
————程序设计中的循环控制————
2. while循环
将循环体中语句循环执行直到条件不成立为止. 将循环体中语句循环执行直到条件不成立为止. 语法: 语法: while 条件表达式 可执行语句 end
条件表达式一般由变量,数字,逻辑运算,关系运 条件表达式一般由变量,数字,逻辑运算, 算符和一般运算符组成, 算符和一般运算符组成,以判断循环的进行和停止; 只要表达式的值(逻辑值)结果为正确(非0),循环继 , 直到表达式值为0,循环停止. 续;直到表达式值为 ,循环停止.
n=input('input n='); while n~=1 r=rem(n,2); if r = =0 n=n/2 else n=3*n+1 end end n=5
%输入数据 输入数据 %求n/2的余数 求 %第一种操作 第一种操作 %第二种操作 第二种操作
16, 8, 4, 2, 1
11/16
θ
x=R*cos(theta)*cos(fai); y=R*cos(theta)*sin(fai); z=R*sin(theta);
纬度 θ ——纬度
——经度 经度
4/16
格林威治天文台建于1675年, 例2.2 格林威治天文台建于 年 其纬度为北纬51 其纬度为北纬 0.设地球半径为 R=6400(km),试计算格林威治天 , 文台在地心直角坐标系中的坐标 R=6400; fai=0; theta=51*pi/180; x=R*cos(theta)*cos(fai); y=R*cos(theta)*sin(fai); z=R*sin(theta); Op=[x,y,z] Op = 4027.65 0