




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章第二章 MATLAB程序设计基础程序设计基础 * 第一节教学目标 1 基本运算介绍。 2 变量的概念。 3 系统函数的概念。 4 一般的应用问题转换为计算机模型。第二章第二章 MATLAB程序设计基础程序设计基础 一、基本运算第二章第二章 MATLAB程序设计基础程序设计基础 一、基本运算 简单的数学运算 1+2+3+4+5 1+2+3+4+5;第二章第二章 MATLAB程序设计基础程序设计基础 一、基本运算 复杂一点点的数学运算已知 : x=15,y=10,z=7求解: (x+2Y+5z)/3 x=15;y=10;z=7; (x+2*y+5*z)/3第二章第二章 MATLAB程序设计基
2、础程序设计基础 一、基本运算 操作数运算符第二章第二章 MATLAB程序设计基础程序设计基础 一、基本运算 1 MATLAB算术运算符 加、减、乘、除、幂次方 + - * / 运算次序:自左向右运算。 优先级最高,乘除次之,后加减。 如果有括号,括号优先执行。第二章第二章 MATLAB程序设计基础程序设计基础 一、基本运算 2 format命令 用来显示计算的精度。 不是用来改变计算的精度。MATLAB默认以double(双精度)进行运算和存储。使用format可以控制数据不同的显示格式。format shortformat short eformat longformat long efor
3、mat ratformat bank第二章第二章 MATLAB程序设计基础程序设计基础 一、基本运算 2 format命令 用pi来测试一下显示精度:piformat shortpiformat longpiformat ratpi第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 变量程序执行过程中可以变化的量。MATLAB中的中的变量可以由用户指定变量名。通过变量名随时可以引用变量和修改变量。第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 MATLAB特殊之处:无需进行变量声明。(遇到新变量名时,自动生成变量, 并指定合适的存储空间。 如变量早已存在,则自动更新。)
4、 *利与弊的分析*第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 1.系统特殊变量1+2+3+4+5ans 是个特殊的系统变量。没有指定变量来存储运算结果时,系统会自动将结果存储在临时变量ans中。第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 1.系统特殊变量 MATLAB的系统特殊变量ans: 临时变量pi : inf : 无穷大eps :极小值NaN:Not a Number (Not Available) nan:同上 i: 虚数sqrt(-1) j: 虚数sqrt(-1)第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 2 自定义变量注意我的这
5、些操作: a= 1 abc= 1+2+3+4+5 a=1;b=3;c=5; A=2,B=4,C=6 area = r2 ?第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 2 自定义变量命名规则 * 变量名由字母、数字和下划线组成。 字母间不可留空格且第一个字符必须为字母 * 区分大小写。 * 变量名的长度上限为n个字符。 补充: * 变量名不能为中文; * 系统变量名不要和自定义重名。 第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 万一自定义变量名和系统变量名一样结果会怎样?怎么办? 第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 观察下面的变量名是
6、否合理? isvarname myVarNameisvarname 7myVarName 第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 3 获取当前变量 命令行直接键入变量名。第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 4 变量的显示精度控制显示精度函数: format控制精度计算的函数: digits(n):设置缺省的精度; vpa(S,n):将S表示为n位有效位数的形式。第二章第二章 MATLAB程序设计基础程序设计基础4 变量的显示精度问题: 积少成多的累计误差? ( 1/3+1/3)=? format long 1/3+1/3第二章第二章 MATLAB
7、程序设计基础程序设计基础 s= 1/3+1/3 digits(2) s ? vpa(s) vpa(s,10) s= 1+1/3+1/3 ?4 变量的显示精度第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 5 查看变量 who: 查看当前工作区(workspace)的变量。 whos:查看当前变量的详细信息。第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 6 清除变量 clear:清除所有定义过的变量。 clear 变量名:清除某个变量。第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 7 变量的初始化(三种方式)1用赋值语句初始化变量。2用input 函
8、数从键盘输入初始化变量。 例如: in1 = input(enter data:); Enter data:1.23 in2 = input(enter data:,s) Enter data:1.23 in1+in2 (?)(?)3从文件读取一个数据。(以后介绍)第二章第二章 MATLAB程序设计基础程序设计基础 二、变量 8 变量的作用域(1)局部变量(Local)(2)全局变量(Global)(3)永久变量(Persistent) 第二章第二章 MATLAB程序设计基础程序设计基础二、变量7 变量的作用域局部变量:在函数中使用的变量, 只能在函数的范围内使用。全局变量:在命令文件或工作空
9、间中定义。 用global定义全局变量。 global Gvar1 Gvar2 Gvar3永久变量:只能在函数文件中定义和使用, 只允许定义它的函数存取。 只有清除函数或者关闭MATLAB时, 才能从内存中清除它们。 persistent perVar; 第二章第二章 MATLAB程序设计基础程序设计基础四、函数相关知识3 变量的作用域 局部变量:在函数中使用的变量, 只能在函数的范围内使用。全局变量:在命令文件或工作空间定义。 用global定义全局变量。 global var1 var2 var3 例如:例如:(?)(?)func1.m function y=func1(x)global
10、Gvar; (?)(?)y=x;Gvar=x*10func2.mfunction y=func2(x)global Gvar; y=x;Gvar=x*100 例如:例如: global Gvar (!)func1.m function y=func1(x)global Gvar; Y=x;Gvar=x*10func2.mfunction y=func2(x)global Gvar; Y=x;Gvar=x*100第二章第二章 MATLAB程序设计基础程序设计基础 tips:尽量不使用全局变量和永久变量!第二章第二章 MATLAB程序设计基础程序设计基础 三、常用函数 初等数学函数:help el
11、fun 高等数学函数:help specfun help elmat第二章第二章 MATLAB程序设计基础程序设计基础 三、常用函数 注意问题:(1)等式中,函数一定是出现在等式的右边。(2)函数参数要求。(变量个数和格式要求)(3)允许函数嵌套。 第二章第二章 MATLAB程序设计基础程序设计基础 四、现实问题转化为数学模型 例如:哥哥弟弟年龄问题。 哥哥比弟弟大19岁,哥哥年龄是弟弟的3倍还多1,问:哥哥和弟弟的年龄分别是多少?第二章第二章 MATLAB程序设计基础程序设计基础 四、现实问题转化为数学模型 例如:吃桃问题。 桃子1毛钱一个,每3个桃核可以换一个桃子。如果有一元钱,问:一共能
12、吃到多少桃子?课后任务课后任务一、一、熟悉熟悉基本数学运算。基本数学运算。二、二、熟练熟练使用变量的相关应用使用变量的相关应用。第二章第二章 MATLAB程序设计基础程序设计基础 * 第二节教学目标 通过实例演练熟悉部分常用函数。 第二章第二章 MATLAB程序设计基础程序设计基础 实战演练常用函数的使用第二章第二章 MATLAB程序设计基础程序设计基础 函数?第二章第二章 MATLAB程序设计基础程序设计基础小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z
13、的共轭复数 angle(z):复数z的相角round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为多项分数展开rats(x):将实数x化为分数表示 第二章第二章 MATLAB程序设计基础程序设计基础小整理:MATLAB常用的基本数学函数 sign(x):符号函数 (Signum function)。 当x0时,sign(x)=1。 rem(x,y):求x除以y的馀数 gcd(x,y):整数x和y的最大公因数 lcm(x,y):整数x和y的最
14、小公倍数 exp(x):自然指数 pow2(x):2的指数 log(x):以e为底的对数,即自然对数 log2(x):以2为底的对数 log10(x):以10为底的对数 第二章第二章 MATLAB程序设计基础程序设计基础实战1:函数 abs功能 数值的绝对值与复数的幅值格式 Y = abs(X) %返回参量X的每一个分量的绝对值; %若X为复数的,则返回每一分量的幅值 % abs(X) = sqrt(real(X).2+imag(X).2)例 x= -18; z1 = abs(x) y= -2+ 4i; z2 = abs(y)第二章第二章 MATLAB程序设计基础程序设计基础实战2:函数 sq
15、rt功能 求平方根函数格式 Y = sqrt(X) % 数值的平方根运算例 x= 16; z1 = sqrt(x) y= -18; z2 = sqrt(y) f= 2+ 4i; z3 = sqrt(f)第二章第二章 MATLAB程序设计基础程序设计基础实战3:函数 exp功能 以e为底数的指数函数格式 Y = exp(X) % 对参量X的每一分量,求以e为底数的指数函数Y。 % X中的分量可以为复数。 % 对于复数分量如,z = x +i*y, % 则相应地计算:ez = ex*(cos(y) + i*sin(y)。例 x= 3; z1 = exp(x) y= -3; z1 = exp(y)
16、f= 2+ 4i; z3 = exp(f)第二章第二章 MATLAB程序设计基础程序设计基础实战4:函数 log功能 自然对数,即以e为底数的对数。格式 Y = log(X) % 对参量X中的每一个元素计算自然对数。 % 其中X中的元素可以是复数与负数,但由此可能得到意想不到的结果。 % 若z = x + i*y,则log对复数的计算如下: % log (z) = log (abs (z) + i*atan2(y,x)例: x= 20.0855 z1 = log(x) f= 2+ 4i; z3 = log(f)下面的语句可以得到无理数的近似值:pai = abs(log(-1)第二章第二章 M
17、ATLAB程序设计基础程序设计基础实战5:函数 log10功能 常用对数,即以10为底数的对数。格式 Y = log10(X) %计算X中的每一个元素的常用对数, % 若X中出现复数,则可能得到意想不到的结果。例 x= 10; z1 = log10(x) y= -10; z1 = log10(y) f= 2+ 4i; z3 = log10(f)第二章第二章 MATLAB程序设计基础程序设计基础实战6:函数 lcm功能 整数x和y的最小公倍数格式 z = lcm(x,y) %计算整数x和y的最小公倍数 例 x= 10; y=23; z1 = lcm(x,y) x= 10; y=2; z2 = l
18、cm(x,y) x= 10; y=-2; /? z3 = lcm(x,y)第二章第二章 MATLAB程序设计基础程序设计基础实战7:函数 gcd功能 整数x和y的最大公约数格式 z = gcd(x,y) %计算整数x和y的最大公约数 例 x= 10; y=23; z1 = gcd(x,y) x= 10; y=2; z2 = gcd(x,y) x= 10; y=-2; z3 = gcd(x,y)第二章第二章 MATLAB程序设计基础程序设计基础实战8:函数 real功能 复数的实数部分。格式 Y = real(Z) %返回输入参量Z的每一个分量的实数部分。例 f = 3+8i; z=real(f
19、)第二章第二章 MATLAB程序设计基础程序设计基础实战9:函数 imag功能 复数的虚数部分格式 Y = imag(Z) %返回输入参量Z的每一个分量的虚数部分。例f=9+7i;z= imag(f)第二章第二章 MATLAB程序设计基础程序设计基础实战10:函数 conj功能 复数的共轭值格式 ZC = conj(Z) %返回参量Z的每一个分量的共轭复数: %conj(Z) = real(Z) - i*imag(Z) 例f=9+7i;z= conj(f)如果两复数的实部相等, 虚部系数互为相反数, 那么, 这两个复数叫做共轭复数.共轭复数的乘积是一个实数. 提问:什么是复数的共轭值?第二章第
20、二章 MATLAB程序设计基础程序设计基础实战11:函数 sin功能 正弦函数格式 Y = sin(X) % 计算参量X(可以是向量、矩阵,元素可以是复数) % 中每一个角度分量的正弦值Y *所有分量的角度单位为弧度值 第二章第二章 MATLAB程序设计基程序设计基础础sin(|x|+|y|)cos(|x+y|)书例1-3 计算下式的结果,其中x=-3.5度,Y=6.7度. x=pi/180*(-3.5);y=pi/180*6.7; z=sin(abs(x)+abs(y)/sqrt(cos(abs(x+y) sin(|x|+|y|)cos(|x+y|)第二章第二章 MATLAB程序设计基础程序
21、设计基础实战12:函数 cos功能 余弦函数格式 Y = cos(X) % 计算参量X(可以是向量、矩阵,元素可以是复数) % 中每一个角度分量的余弦值Y *所有分量的角度单位为弧度值第二章第二章 MATLAB程序设计基程序设计基础础sin(|x|+|y|)cos(|x+y|)书例1-3 计算下式的结果,其中x=-3.5度,Y=6.7度. x=pi/180*(-3.5);y=pi/180*6.7; z=sin(abs(x)+abs(y)/sqrt(cos(abs(x+y) sin(|x|+|y|)cos(|x+y|)第二章第二章 MATLAB程序设计基础程序设计基础实战13:函数 asin功能
22、 反正弦函数格式 Y = asin(X) % 返回参量X(可以是向量、矩阵)中每一个 % 元素的反正弦函数值Y。 % 若X中有的分量处于-1,1之间, % 则Y = asin(X)对应的分量处于-/2,/2, % 若X中有分量在区间-1,1之外, % 则Y= asin(X)对应的分量为复数。第二章第二章 MATLAB程序设计基础程序设计基础实战13:函数 asin例题: x=-1; z1=asin(x) x=-2; /? z2=asin(x)第二章第二章 MATLAB程序设计基础程序设计基础实战14:函数 acos功能 反余弦函数格式 Y = acos(X) %返回参量X(可以是向量、矩阵)中
23、每一个 %元素的反余弦函数值Y。 %若X中有的分量处于-1,1之间, %则Y = acos(X)对应的分量处于0,之间, %若X中有分量在区间-1,1之外, %则Y = acos(X)对应的分量为复数。第二章第二章 MATLAB程序设计基础程序设计基础实战14:函数 acos例题: x=-1; z1=acos(x) x=-2; /? z2=acos(x)第二章第二章 MATLAB程序设计基础程序设计基础实战15:函数 tan功能 正切函数格式 Y = tan(X) %计算参量X %(可以是向量、矩阵,元素可以是复数) %中每一个角度分量的正切值Y, %所有角度分量的单位为弧度值。 第二章第二章
24、 MATLAB程序设计基础程序设计基础实战15:函数 tan特别地,我们要指出的是,tan(pi/2)和tan(-pi/2)并不是精确的值, 因为matlab中的pi仅仅是精确值近似的表示值而已。例题: tan(pi/2) x=-pi/2+0.01: 0.01:pi/2-0.01; plot(x,tan(x);grid on;第二章第二章 MATLAB程序设计基础程序设计基础实战16:函数 atan功能 反正切函数格式 Y = atan(X) %返回参量X(可以是向量、矩阵)中每一个 %元素的反正切函数值Y。 %若X中有的分量为实数,则Y = atan(X)对应 %的分量处于-/2,/2之间。
25、例: atan(0)第二章第二章 MATLAB程序设计基础程序设计基础课后任务课后任务一、一、熟练熟练使用常用函数使用常用函数(初等)(初等)。二、二、理解理解应用题并转化为数学模型。应用题并转化为数学模型。疑问疑问精度问题精度问题有时候函数结果返回0而不是0.0000。按理,0!=0.0000.类似的问题还有:在matlab中为什么sin(pi) != 0?而cos(pi)却等于-1,而不是-1.0000?而format bank Sin(0)=0.00, cos(pi) 等于-1.00?疑问疑问解释一:MATLAB中的数字是默认按照双精度型浮点数存储的,他们的区别可能有两种情况:一、0代表
26、符号值的0,是没有经过舍入的精确值,而0.0000是浮点数,有舍入。由于MATLAB中默认数据类型是浮点型,所以在输入计算时两者是没有差别的。二、在MATLAB的输出结果中同样是浮点数,如果一个矩阵中各元素的数量级相差较大,同时显示出来时有的元素会显示为0.0000,如果你只单独显示这一个数,发现它只是很小,并不是0。疑问疑问解释二:Sin是是build-in函数,看不到源代码。函数,看不到源代码。让让sin(0)=0而让而让sin(pi)!=0,cos(pi)=-1等等完全由完全由mathworks公司函数内部定义。公司函数内部定义。疑问疑问看如下的代码,分析:看如下的代码,分析: x=0;
27、 for n=1:82 x=x+0.01 end x=0.82 x=0; for n=1:82 x=x+1 end x=82第二章第二章 MATLAB程序设计基础程序设计基础第三节教学目标 1 一维数组创建和引用 2 二维数组创建和引用 3 特殊数组 第二章第二章 MATLAB程序设计基础程序设计基础一、一维数组的创建 建立方法一: 直接输入法 建立方法二: 冒号法 建立方法三: 特殊方法 第二章第二章 MATLAB程序设计基础程序设计基础一、一维数组的创建 建立方法一:直接输入法 A=1 2 3 4 A=1,2,3,4 第二章第二章 MATLAB程序设计基础程序设计基础一、一维数组的创建 建
28、立方法二:冒号法 调用格式:A=初始量:步长:终止量 第二章第二章 MATLAB程序设计基础程序设计基础一、一维数组的创建 建立方法二:冒号法 例题:建立数组A,其中A=1,2,3,4,5 A=1:1:5 A=1:5 第二章第二章 MATLAB程序设计基础程序设计基础一、一维数组的创建 建立方法三: 特殊方法 调用格式: A=linspace(初始量,终止量,数组元素个数) B=logspace(初始量,终止量,数组元素个数) 第二章第二章 MATLAB程序设计基础程序设计基础例题:生成数组A,其中A=1,2,3,4,5 A=linspace(1,5,5) A=linspace(1,5.5,5
29、) A=linspace(1,5,5.5)第二章第二章 MATLAB程序设计基础程序设计基础 例题:生成数组B=logspace(0,2,5) B=logspace(0,2,5) 第二章第二章 MATLAB程序设计基础程序设计基础例题:生成数组B=logspace(1,pi,5) B=logspace(1,pi,5) 例题:生成数组B=logspace(1,3,1) B=logspace(1,3,1) 第二章第二章 MATLAB程序设计基础程序设计基础一、一维数组的创建 注意事项: logspace(y1,y2,N)表示在10y1和10y2之间插入N-2个元素,组成一个含有N个元素的数组; 如
30、果y2=pi,则表示在10y1和pi之间插入N-2个元素; 如果NA=1,2,3,4,5 A(3) A(1:3)第二章第二章 MATLAB程序设计基础程序设计基础三 二维数组的创建直接输入法文件生成法(M文件、txt文件、excel文件、dat文件等)第二章第二章 MATLAB程序设计基础程序设计基础三 二维数组的创建例题 myArray=1 2 3 4 5 6 ; 6 5 4 3 2 1 5,sqrt(25),10-5,0+5,abs(-5),5 第二章第二章 MATLAB程序设计基础程序设计基础四 二维数组的引用:引用格式: arrayName(m,n);引用二维数组的第m行n列的元素ar
31、rayName(m,:);引用二维数组的第m行的所有列元素arrayName(:,n);引用二维数组的第n列的所有行元素arrayName(m1:m2,n);引用二维数组的第n列中m1至m2行的元素arrayName(m,n1:n2);引用二维数组的第m行中n1至n2列的元素arrayName(m1 m2,n);引用二维数组的第n列中m1行和m2行的元素arrayName(m,n1 n2);引用二维数组的第m行中n1列和n2列的元第二章第二章 MATLAB程序设计基础程序设计基础四 二维数组的引用:例题: A=1,2,3,4,5;6,7,8,9,10 A(1,:) A(:,3) A(2, 1:
32、2) A(1:2,2)第二章第二章 MATLAB程序设计基础程序设计基础第二章第二章 MATLAB程序设计基础程序设计基础第二章第二章 MATLAB程序设计基础程序设计基础第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 调用格式: s=string name=str1 str2 str3第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 s1=who are you; s2=Im Tin Tin; s3=s1 s2; m=size(s1); n=size(s2); k=size(s3);第二章第二章 MATLAB程序设计基础程序设计基
33、础五 特殊数组 (1)字符数组 * 字符串转换方式一 函数命令:char 调用格式:S=char(T) 表示将正整数矩阵转换成字符串矩阵S。第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 * 字符串转换方式一 T=102 67 132 ; 50 95 78 S=char(T)第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 * 字符串转换方式二 函数命令:int2str, num2str 调用格式: int2str(A) num2str(A,k) num2str(A,format) 表示将数或矩阵转换成字符串或字符串矩阵。第二章第二
34、章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 * 字符串转换方式二 A=1.2 6.7 3.2 ; 5.5 9.5 7.8; B1=int2str(A); B2=num2str(A,0); (?0) B3=num2str(A,%10.3f); B1+B2; B2+B3; B1+B3;第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 * 字符串转换方式三 函数命令:eval,str2num 调用格式: eval(S) str2num(S) 表示将字符串S转化为数值。第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组
35、 * 字符串转换方式三 a=1 2; w=1 3; x=1 2; S= a.*sin(w.*x) val=eval(S); v2=subs(S);(?)第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 * 字符串转换方式三 v1=str2num(S); (?) str2num(3.14159e0) str2num(1 2;3 4) ans.*3第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 *字符串比较 函数命令:strcmp 调用格式:strcmp(str1,str2) 表示将两个字符串进行比较,相等时返回逻辑值为真。第二章第二章
36、 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 *字符串比较 str1=bad; str2=bad; str3=dab; strcmp(str1,str2); strcmp(str1,str3);第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (1)字符数组 *字符串转内嵌函数 函数命令:inline 调用格式:inline(exr) inline(expr,arg1,arg2,) 表示将字符串表达式转化为函数表达式。第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(1)字符数组 *字符串转内嵌函数 f=inline(5*sin(x)+3*co
37、s(y),x,y)第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (2)结构数组 提问:结构体的概念?如果让你统计全班同学基本信息,你的数据怎么组织?第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (2)结构数组* 结构数组: 是根据属性名组织起来的不同类型数据的集合。* 结构数组通过属性名来引用。第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (2)结构数组函数命令:struct 调用格式:sn=struct(filed1,filed2,)第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(2)结构数组例题:结构数组student有
38、name和age两个属性。两组数据: (liu,20);(Wang,21)。并求student(1),student(2),student(2).name。第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(2)结构数组 student=struct(name,Liu,Wang,Age,20,21); student(1) student(2) student(2).name第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(2)结构数组 如果想新增加域field怎么办? 如果想给已有的域filed设置新的值怎么办? 第二章第二章 MATLAB程序设计基础程序设计基础五
39、 特殊数组 (2)结构数组例:建立学生档案结构体,并计算每个学生的总成绩。(page96) 学号(number):数值型 姓名(name):字符型 身高(height):数值型 英语考试成绩(English):数值型 数学考试成绩(Math):数值型 物理考试成绩(Physics):数值型第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(2)结构数组 stud(1).number=input(please input number:); stud(1).math=input(please input math:); stud(1).physics=input(please inp
40、ut physics:); stud(1).english=input(please input english:); stud(1).total=stud(1).math+stud(1).physics+stud(1).english;第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (2)结构数组 n=input(please input n:); for i=1:n stud(i).number=input(please input number:); stud(i).math=input(please input math:); stud(i).physics=input
41、(please input physics:); stud(i).english=input(please input english:); stud(i).total=stud(i).math+stud(i).physics+stud(i).english;end第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(2)结构数组* 三个相关的函数命令: fieldnames,size,rmfield, getfiled, setfield第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (2)结构数组 fieldnames(stud) size(stud) rmfie
42、ld(stud,number) stud=setfield(stud,1,1,math,100) str1=getfield(stud,1,1,math)第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (2)结构数组 结构数组的嵌套例题(page98):建立嵌套的结构数组。a=struct(name,Mike,number,1000,score,struct(math,90,english,89,physics,97); a a(1).number a(1).score第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (3)细胞数组 提问:普通数组元素之间有什么关
43、联?结构数组元素之间有什么关联?其特殊性在哪里?还有没有更特殊的可能性?第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (3)细胞数组函数命令:cell 细胞数组通常用创建,数据通过数组下标引用。第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (3)细胞数组 B=cell(5,3); B(1,1)=1 4 3; 0 5 8; 7 2 9; B(1,2)=Anne cat; B(2,1)=3+7i; B(2,2)=0:pi/10:pi; B3,1=3 4 2;9 7 6;8 5 1; B3,2=Anne Smith; B4,1=3+7i; B4,2=-pi:pi/
44、10:pi;第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (3)细胞数组 * celldisp和cellplot方法 B(1,1)=1 4 3; 0 5 8; 7 2 9; B(1,2)=Anne cat; B(2,1)=3+7i; B(2,2)=0:pi/10:pi; B celldisp(B) cellplot(B) 第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(3)细胞数组 *引用细胞数组元素: C=B1,1 C=B(1,1) D=B1,1(2,2)第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(3)细胞数组 *细胞数组的更新: B(3
45、,1)=No.1; (?) B3,2=No.2; B3,3=No.3; B M=B(1:3,1:2)第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(3)细胞数组 *细胞数组的删除: B(:,3)= (?) B2,3= (?) 两次操作的区别? B2,2(3)=0第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组(3)细胞数组 *细胞数组中reshape的使用: A=cell(3,4) size(A) B=reshape(A,6,2) size(B)第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (3)细胞数组细胞数组和数值数组的转换 例题:将二维细胞
46、数组F转换为三维数值数据。第二章第二章 MATLAB程序设计基础程序设计基础一、矩阵 8 特殊数组 (2)细胞数组 F1,1=1 2;3 4; F1,2=-1 0; 0 1; F2,1=7 8;4 1; F2,2=4i 3+2i;1-8i 5; for k=1:4 for i=1:2 for j=1:2 NUM(i,j,k)=Fk(i,j); end end end F NUM第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (4)结构细胞数组将结构数组放入细胞数组中,可组成结构细胞数组。第二章第二章 MATLAB程序设计基础程序设计基础五 特殊数组 (4)结构细胞数组 c_st
47、r=cell(1,2); c_str1.label=12/2/94; 12/5/94; c_str1.test=47 52 55 48; 17 22 35 11; c_str2.xdata=-0.003 0.41 1.98 2.12 17.11; c_str2.ydata=-3 5 18 0 9; c_str2.zdata=0.6 0.8 1 2.2 3.4; c_str1(1).test(2,2)第二章第二章 MATLAB程序设计基础程序设计基础第四节教学目标 MATLAB的运算符(算术、关系、逻辑) 第二章第二章 MATLAB程序设计基础程序设计基础一、算术运算符算术运算符+、- 表示算术
48、加法和减法*、/ 表示算术乘法和除法 表示左除 表示乘方.* 表示点乘. 表示点左除./ 表示点右除. 表示点乘方第二章第二章 MATLAB程序设计基础程序设计基础一、算术运算符优先级 算术运算符优先级最高, 关系运算符次之, 而逻辑运算符的优先级最低。 实际应用中,可以通过括号来调整运算过程。第二章第二章 MATLAB程序设计基础程序设计基础一、算术运算符 例题:a=5,b=6 ,求解以下运算结果。a+b;a-b;a*b;a/b;ab;ab第二章第二章 MATLAB程序设计基础程序设计基础一、算术运算符 例题:a=1 3 5,b=2 4 6 ,求解以下运算结果。a+b;a-b;a*b; ab
49、?a/b;ab; ?a.*b;a./b; a.b;a.b第二章第二章 MATLAB程序设计基础程序设计基础二、关系运算符 表示小于 表示大于= 表示大于或等于= 表示等于= 表示不等于第二章第二章 MATLAB程序设计基础程序设计基础 例题:已知二维数组A=1 2;2 3,求A中等于2的元素个数n。 A=1 2;2 3; B=A=2; n=sum(sum(B);第二章第二章 MATLAB程序设计基础程序设计基础 例题总结:单个数比较,一维数组比较,二维数组比较。各种关系运算符比较。第二章第二章 MATLAB程序设计基础程序设计基础三、逻辑运算符& 逻辑与(and),表示两个数组的对应元素都是1
50、,结果为1,否则为0| 逻辑或(or),表示对应元素只要有一个是1,结果为1,否则为0 非(not),表示与元素相反xor 异或,表示对应元素不同,结果为1,否则为0第二章第二章 MATLAB程序设计基础程序设计基础 例题:已知数组A=0 1 0; 1 0 1和B=1 1 1;0 0 0, 求A&B,A|B,A和xor(A,B)。 A=0 1 0; 1 0 1;B=1 1 1;0 0 0; A&B; A|B; A; xor(A,B);第二章第二章 MATLAB程序设计基础程序设计基础四、逻辑函数all 查看数组的行或者列,每行或列的所有元素为1,结果为1any 查看数组的行或者列,每行或列只要
51、有一个元素为1,结果为1exist 查看变量或者函数是否存在find 找出非零元素的位置标识isempty 判断矩阵是否为空矩阵isequal 判断对象是否相等isnumeric 判断对象是否为数值型bitand 按位与bitor 按位或bitcmp 按位反码,共n位,n必须小于操作数的二进制位数bitxor 按位异或& 捷径与| 捷径或第二章第二章 MATLAB程序设计基础程序设计基础例题:A=1 3 5,B=1 3 5 ; 2 4 6,求all(A),all(B),all(B2),any(A),any(B),any(B,2)。 A=1 3 5;B=1 3 5 ; 2 4 6; all(A)
52、 all(B) all(B,2) any(A) any(B) any(B,2)第二章第二章 MATLAB程序设计基础程序设计基础例题:观察以下函数的返回值: exist(work),exist(myfile),exist(C:windows)。 exist(work) exist(exam2_33) exist(C:windows)【说明】exist函数非常有用,其返回值为数字07, 分别表示不同的含义。第二章第二章 MATLAB程序设计基础程序设计基础例题:数组数组A=1 0 3;3 0 1, 求求find(A),m,n=find(A),m,n,v=find(A)。 A=1 0 3;3 0
53、1; find(A) m,n=find(A) m,n,v=find(A)第二章第二章 MATLAB程序设计基础程序设计基础例题:已知二维数组已知二维数组A=0.1 0.6; B=0.1 0.6; C=TinTin;求求isequal(A, B),isequal(A, C),isnumeric(A),isnumeric(B), isnumeric(C)。 A=0.1 0.6; B=0.1 0.6; C=TinTin; isequal(A, B) isequal(A, C) isnumeric(A) isnumeric(B) isnumeric(C)第二章第二章 MATLAB程序设计基础程序设计基
54、础例题:例题:已知已知A=7,B=3,求求bitand(A,B),bitor(A,B),bitxor(A,B)。 A=7;B=3; bitand(A,B) bitor(A,B) bitxor(A,B)第二章第二章 MATLAB程序设计基础程序设计基础例题:执行下面的命令,观察运行结果。体会捷径与和捷径或。执行下面的命令,观察运行结果。体会捷径与和捷径或。%可以在可以在m文件中设置断点以更好观察文件中设置断点以更好观察 mycmp=(exist(circle.m)=2 ) & (circle(5) a=2;b=3;mycmp=(b=0) | (a/b10)第二章第二章 MATLAB程序设计基础程
55、序设计基础第五节教学目标 MATLAB的三种控制结构 MATLAB的M文件(命令文件和函数文件) MATLAB函数 MATLAB函数调用和参数传递 MATLAB的调试 第二章第二章 MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构 按照程序设计的观点, 任何算法功能都可以通过程序模块组成的三种基本程序结构的组合来实现:*顺序结构:程序按程序语句或模块在执行流中的 顺序逐个执行。 *选择结构:程序按设定的条件实现程序执行流的 多路分支。 *循环结构:程序按给定的条件重复地执行指定的 程序段或模块。第二章第二章 MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构1
56、 顺序结构程序程序模块模块1 1程序模块程序模块2 2只需将程序语句顺序排列即可只需将程序语句顺序排列即可第二章第二章 MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构2 选择结构选择结构由两种语句结构实现:选择结构由两种语句结构实现:if语句switch语句条件条件程序模块程序模块1成立成立不成立不成立程序模块程序模块2第二章第二章 MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构2 选择结构 if语句 if 表达式表达式 程序模块程序模块1 else 程序模块程序模块2 end第二章第二章 MATLAB程序设计基础程序设计基础 if 表达式 程序模块 e
57、nd一、MATLAB的三种控制结构2 选择结构 if语句 第二章第二章 MATLAB程序设计基础程序设计基础 if表达式1 程序模块1 elseif 表达式2 程序模块2 elseif 表达式n 程序模块n else 程序模块n+1 end一、MATLAB的三种控制结构2 选择结构 if语句 第二章第二章 MATLAB程序设计基础程序设计基础例题:将百分制的学生成绩转换为五级制的成绩输出。例题:将百分制的学生成绩转换为五级制的成绩输出。clearn=input(输入n= ); if n=90 r=Aelseif n=80 r=Belseif n=70 r=Celseif n=60 r=Dels
58、e r=Eend第二章第二章 MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构2 选择结构 switch语句 第二章第二章 MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构2 选择结构 switch语句 switch 表达式 case 数值1 程序模块1; case 数值2 程序模块2; case 数值n 程序模块n; otherwise 程序模块n+1end第二章第二章 MATLAB程序设计基础程序设计基础例题:例题: 将百分制的学生成绩转换为五级制的成绩输出。将百分制的学生成绩转换为五级制的成绩输出。clearn=input(输入输入n= ); pand
59、uan= fix(n/10) switch panduan case 10,9 r=A case 8 r=B case 7 r=C case 6 r=D otherwise r=Eend clearn=input(输入输入n= ); switch fix(n/10) case 10,9 r=A case 8 r=B case 7 r=C case 6 r=D otherwise r=Eend第二章第二章 MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构3 循环结构循环结构可以由两种语句结构实现:for语句while语句程序模块程序模块不成立不成立成立成立条件条件第二章第二章
60、MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构3 循环结构 for语句 for 循环变量起始值:步长:终止值循环变量起始值:步长:终止值 循环体循环体end第二章第二章 MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构 例:使用例:使用forfor结构计算结构计算1+2+3+1001+2+3+100clearclearsum=0;sum=0;for i=1:1:100for i=1:1:100 sum=sum+i;sum=sum+i;endendsumsum第二章第二章 MATLAB程序设计基础程序设计基础一、MATLAB的三种控制结构3 循环结构 whi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急诊工作的方式计划
- 缔造良好工作氛围的策略计划
- 高中历史 第5课 美国独立战争教学实录2 岳麓版选修2
- 统编版小学语文二年级下册第15课《古诗二首》精美课件
- 爱卫知识培训课件社区
- 2025年濮阳货运从业资格证考试内容
- 2025年白山货运从业资格证模拟考试题库
- 2025年临汾道路货物运输从业资格证模拟考试
- 八年级政治下册 第五单元 我是中国公民 5.2《公民的权利和义务》情境探究型教学实录 粤教版
- 2025年天津货运从业资格证模拟考试下载
- 企业管理评审报告范本
- 湘教(湖南美术)版小学美术四年级下册全册PPT课件(精心整理汇编)
- 《XX医院安宁疗护建设实施方案》
- 市政工程监理规划范本(完整版)
- (完整版)考研英美文学名词解释
- 第3章MAC协议
- 中小学基本办学条件标准(建设用地校舍建设标准)
- 《医院感染法律法规》最新PPT课件
- word公章模板
- 中西医结合肿瘤学试卷(含答案)
- 制衣常识中英对照精讲
评论
0/150
提交评论