MATLAB 程序设计方法 I

合集下载

MATLAB程序设计及应用实例

MATLAB程序设计及应用实例
程序如下: price=input('请输入商品价格'); switch fix(price/100) case {0,1} rate=0; case {2,3,4} rate=3/100; case num2cell(5:9) rate=5/100; case num2cell(10:24) rate=8/100; case num2cell(25:49) rate=10/100; otherwise rate=14/100; end price=price*(1-rate)
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运行环境及程序设计

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程序设计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基础及程序设计

一、变量和数值
➢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程序设计

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 程序设计

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语言程序设计基础

MATLAB语言程序设计基础
第22页/共41页
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程序设计

Matlab程序设计
nargin %在函数体内获取实际输入变量个数 nargout %在函数体内获取实际输出变量个数 nargin(‘fun’) %在函数体外获取定义的输入参数个数 nargout(‘fun’) %在函数体外获取定义的输出参数个数
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命令窗口运行。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3/16
————表达式和运算符 表达式和运算符———— 表达式和运算符
用赋值语句创建变量 用赋值语句创建变量 变量名=数据 变量名 数据
变量名=表达式 变量名 表达式
表达式——由变量,运算符,函数,数字组成 由变量,运算符,函数, 表达式 由变量 球坐标变换
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
相关文档
最新文档