Presentation is loading. Please wait.

Presentation is loading. Please wait.

第三章 M文件设计  命令文件(脚本式) 变量、表达式、运算符 程序设计中的流程控制 函数文件的编写.

Similar presentations


Presentation on theme: "第三章 M文件设计  命令文件(脚本式) 变量、表达式、运算符 程序设计中的流程控制 函数文件的编写."— Presentation transcript:

1 第三章 M文件设计 命令文件(脚本式) 变量、表达式、运算符 程序设计中的流程控制 函数文件的编写

2 M文件分为命令文件和函数文件两种 命令文件(脚本式M文件) 无输入参数,不返回参数 操作工作空间中的数据 对于需要多次执行的一系列命令特别有用 函数文件(函数式M文件) 可输入参数,也可返回参数 函数的变量为局部变量,也可设外部变量。 扩充MATLAB的函数库

3 最好用程序编辑器编写命令文件。对文件命名, 保存在当前工作目录中.
命令文件——MATLAB的命令序列 需要几行(或几十行)命令才能完成的作业, 最好用程序编辑器编写命令文件。对文件命名, 保存在当前工作目录中. k=0;n=1;f=1;an=1;s=1; while an> f= - f; n=n+2; an=1/n; s=s+f*an; k=k+1; end P=4*s

4 MATLAB的变量和表达式 theta=pi/4 x=sin(theta); P=1+2*x+3*x^2+4*x^3
变量创建常用赋值语句实现 变量名=数据 theta=3.14/ %将数据赋值给变量名 注意:变量名必须是英文字母打头; 表达式——由变量、运算符、函数、数字组成 表达式创建常用赋值方法实现 变量名=表达式 theta=pi/4 x=sin(theta); P=1+2*x+3*x^2+4*x^3

5 局部变量和全局变量 局部变量:具有函数内部作用范围 全局变量:可在几个函数和基本工作空间 之间共享,具有全局作用范围 全局变量的声明: global 变量名1 变量名2 … 永久变量 ans; eps; pi; i; j; inf; NaN;

6 2.关系运算符 1 .算术运算符 < 小于 <= 小于等于 > 大于 >= 大于等于 == 等于 ~= 不等于
  < 小于   <= 小于等于   > 大于   >= 大于等于   == 等于   ~= 不等于 1 .算术运算符 + 加 点加 - 减 点减 ^ 矩阵幂 .^ 点幂 * 乘 * 点乘 / 右除 ./ 点右除 \ 左除 .\ 点左除 3.逻辑运算符 & 与 (and) | 或 (or) ~ 非 (not)

7 条件控制; 循环控制; 错误控制;终止运行控制 条件控制——有选择地运行程序块 1. if / elseif 语句
MATLAB 程序中的流程控制 条件控制; 循环控制; 错误控制;终止运行控制 条件控制——有选择地运行程序块 1. if / elseif 语句 分析下列程序,说明运行结果及原因 clear a=100;b=10; if a<b disp('a<b') %显示字符串a<b else disp('a>b') %显示字符串a>b end

8 2. Switch / case 语句 clear n=input('input n='); switch mod(n,5) case 0 fprintf('%d 是5的倍数',n) otherwise fprintf('%d 不是5的倍数',n) end 程序运行: input n=44 44 不是5的倍数

9 1. for循环 语法: for 变量 =初值:步长:终值 n:=10, f(10)=55 n:=44, f(44)=701408733
可执行语句 end 求裴波拉奇数列的第 n 项( n > 2) n=input('input n:='); f(1)=1;f(2)=1; for k=3:n f(k)=f(k-1)+f(k-2); end f(n) n:=10, f(10)=55 n:=44, f(44)=

10 while循环将循环体中的语句循环执行不定次数。
循环体语句 end 条件表达式一般由变量、数字、逻辑运算、关系运算符和一般运算符组成,以判断循环的进行和停止; 只要表达式的值(逻辑值)结果为正确(非0),循环继续;直到表达式值为0,循环停止。

11 n=input(‘input n=’); %输入数据 while n~=1 r=rem(n,2); %求n/2的余数 if r = =0
角谷猜想. 对任一自然数n,按如下法则进行运算:若n为偶数, 则将n除2;若n为奇数,则将n乘3加1。将运算结果按 上面法则继续运算, 重复若干次后计算结果最终是1. n=input(‘input n=’); %输入数据 while n~=1 r=rem(n,2); %求n/2的余数 if r = =0 n=n/ %第一种操作 else n=3*n %第二种操作 end n=5 16, 8, 4, 2, 1

12 3. continue 命令 通常用于for或while循环语句中,与if语句一起使用,达到跳过本次循环,去执行下一轮循环的目的
分析下列程序,说明运行结果及原因 a=3;b=6; for i=1:3 b=b+1; if i<2 continue %当if条件满足时不再执行后面语句 end a=a %当i<2时不执行该语句 运行结果: a=5 a=7

13 4. break命令 通常用于for或while循环语句中,与if语句一起使用,中止本次循环,跳出最内层循环
分析下列程序,说明运行结果及原因 a=3;b=6; for i=1:3 b=b+1; if i>2 break %当if条件满足时不再执行循环 end a=a+2 运行结果: a=5 a=7

14 程序流控制语句 return指令 终止当前的命令序列,把控制返回到调用函数或键盘。 pause 使程序运行停止,等待用户按任意键继续。 break 用于中断for或while循环的执行。当中断后,程序退到本级循环以外的下一条语句执行。 input 提示用户从键盘输入数值、字符串或表达式,并接受输入。

15 函数文件编写 函数文件名必须以英文字母开头,并以 .m 为后缀,如f1.m、f2.m、g1.m、g2.m、…… 函数文件格式
function 返回变量列表=函数名(输入变量列表) %注解说明 输入变量nargin格式检测,输出变量 nargout检测 函数体 注意:函数名应该和文件名相同

16 创建希尔伯特矩阵 H=(hij)m×n , hij = 1/(i+j-1). 文件包括帮助信息,基本功能,调用方式说明;
例 编写函数文件myhilb.m,功能如下: 创建希尔伯特矩阵 H=(hij)m×n , hij = 1/(i+j-1). 文件包括帮助信息,基本功能,调用方式说明; 调用只有一个输入参数,则自动生成方阵; 检测输入变量个数,有错误则给出错误信息 调用时没用返回变量,则仅显示矩阵 myhilb(3) 1/ / /5 1/ / /6 1/ / /7

17 function A=myhilb(n,m)
%A=myhilb(n,m)生成一个n*m阶希尔伯特矩阵 %A=myhilb(n)生成一个n*n阶希尔伯特矩阵 %myhilb(n,m)显示一个n*m阶希尔伯特矩阵 if nargin = =1,m=n; elseif nargin = =0 | nargin>2, error('wrong number of input argments'); end for i=1:n for j=1:m A1(i,j)=1/(i+j-1); %计算矩阵元素 if nargout = =1 A=A1; %将数据传递给输出变量 elseif nargout = =0 format rat,disp(A1); %以分数形式显示矩阵

18 在自变量 t 分别取值为1,2,3,4,5时数值积分。
例5.6.1 计算积分上限函数 在自变量 t 分别取值为1,2,3,4,5时数值积分。 f=inline('x.^3./(exp(x)-1)'); q(1)=quad(f,eps,1); for k=1:4 q(k+1)=q(k)+quad(f,k,k+1); end q q =

19 MatLab在执行程序有错时会自动终止运行,并在其命令窗口(Matlab Command Windows)中给出相应错误的提示信息
同时MATLAB的编辑器(Editor)具有程序调试功能,可用调试命令用来检查程序的正确性 单步执行 断点间执行 终止调试

20 调试程序步骤: (1)在程序可疑处设置断点; (2)执行程序; (3)检查程序运行至断点处变量当前值 (4)在程序中一步步执行 (5)结束调试状态。 (6)取消断点。 执行程序之后,程序会停在断点处。并出现箭头.同时调试工具栏由灰色变为深色

21 MATLAB编程技巧 1.矢量化——尽可能使用向量和矩阵操作 例 求 向量运算 t=cputime;s=0; t=cputime;
n=1:100000; s=sum(1./2.^n+1./3.^n); cputime-t ans = 0.2970 t=cputime;s=0; for i=1:100000 s=s+(1/2^i+1/3^i); end cputime-t ans = 0.8750

22 2.预分配内存空间 例 生成一个 5×10000 的 Hilbert 矩阵,该矩阵的定义是其第 i 行第 j 列元素为 hi,j=1/(i+j-1)。 >> tic H=zeros(5,10000); for i=1:5 for j=1: H(i,j)=1/(i+j-1); end end toc elapsed_time = >> tic for i=1:5 for j=1: H(i,j)=1/(i+j-1); end end toc elapsed_time =


Download ppt "第三章 M文件设计  命令文件(脚本式) 变量、表达式、运算符 程序设计中的流程控制 函数文件的编写."

Similar presentations


Ads by Google