当前位置:文档之家› matlab基本语句(可编辑修改word版)

matlab基本语句(可编辑修改word版)

matlab基本语句(可编辑修改word版)
matlab基本语句(可编辑修改word版)

第2章MATLAB 程序设计

MATLAB 语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。

由于 MATLAB 开始是用 FORTRAN 语言编写、后来用C 语言重写的,故其既有 FORTRAN 的特征,又在许多语言规则方面与 C 语言相同。

2.1顺序结构语句

在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。

2.1.1表达式语句

格式:

表达式,%显示表达式值

表达式;%不显示表达式值

表达式%显示表达式值

如:

x+y,

s i n(x);

–5

最后的表达式值暂保存在变量 ans 中。

2.1.2赋值语句

格式:

v=表达式,%结果送 v 并显示 v v=表达式;%结果送 v 不显示 v v=表达式%结果送 v 并显示 v 2.1.3空语句

格式:

2.1.4输入语句

1、i n p u t语句(实际上是函数)

格式 1:

i n p u t(提示字符串)

功能:

显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式

格式 2:i n p u t(提示字

符串,'s')功能:

显示提示字符串,并把输入视为字符串

2、y e s i n p u t语句

格式:

y e s i n p u t(提示字符串,缺省值,值范围)

功能:

显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B 并等待用户重新输入。

如:

t=y e s i n p u t('指定线的颜色',…

'r e d','r e d|b l u e|g r ee n')

运行结果如下:

指定线的颜色(red):yellow %不在值内

指定线的颜色(red):blue %重输

t =

b l u e

x=y e s i n p u t('输入元素个数',10,[1,20])

运行结果如下:

输入元素个数(10):

x =

10

3、Keyboard 语句

格式:

Keyboard

功能:

暂停M-文件的执行,并等待用户从键盘输入命令以查看或改变变量的值,直到输入return 命令而返回相应的 M-文件继续执行。本语句用于调试 M-文件。

4、pause 语句

格式 1:

pause

功能:暂停,敲下任一键继续

格式 2:

pause(n)

功能:暂停 n 秒

格式 3:

puase on

功能:本命令后的 pause 语句有效

格式 4:

pause off

功能:本命令后的 pause 语句无效

5、menu 语句

格式:

m e nu('菜单名',S1,S2,…,S k)

功能:生成一个按钮式菜单系统

其中:

字符串S1,S2,…,S k为菜单项(K≤32)。

函数返回值为用户选中的菜单项号。

如M-文件,m e nu_d.m如下:

%选择一种颜色

w h il e1

k=m e nu('选择一种颜色','红色',…

'黄色','兰色','绿色','白色','关闭');

i f k==1c o l o r='R e d'

elseif k==2c o l o r='Y e ll o w'

elseif k==3c o l o r='B l u e'

elseif k==4c o l o r='G r ee n'

elseif k==5c o l o r='W h i t e'

elseif k==6break

end

end

2.1.5输出语句

1、直接终端显示

当一个表达式、赋值语句等语句用逗号或者回车作为结尾符,而不是分号作为结尾符时,该表达式或赋值语句的运行结果均在终端上显示出来。

2、d i a r y语句(日记)

格式 1:

d i a r y文件名

功能:

打开指定的文件并将该语句之后终端显

示的内容(包括键入的命令和输出结果)记入该文件。

格式 2:

d i a r y o ff

功能:

暂停记入显示内容到指定的文件

格式 3:

d i a r y o n

功能:

继续记入显示内容到指定的文件

d i a r y语句可产生一个日志文本文件,为以后书写报告或编辑 M-文件提供素材。

3.d i s p语句

格式:

d i s p(x)

功能:显示 x 的值,但不显示 x 的名

4.s printf 语句

格式:

[Str,ErrMsg] = SPRINTF(格式串,表达式1,...)

其中:格式串与C 语言的规定一致

Str 存放结果的

功能:

按照格式串的规定把各表达式的实部分别转换为字符串并存入Str,若有错误,则把错误信息存入ErrMsg

如:

sprintf('%0.5g',(1+sqrt(5))/2) 1.618

sprintf('%0.5g',1/eps) 4.5036e+15

sprintf('%15.5f',1/eps) 4503599627370496.00000 sprintf('%d',round(pi)) 3

sprintf('%s','hello') hello

sprintf('The array is %dx%d.',2,3) The array is 2x3.

sprintf('\n') 换行

2.1.6变量值的保存与恢复

1、保存工作空间中的变量到文件中

格式 1:

save 文件名

功能:

保存工作空间中的全体变量到指定文件(扩展名设定为.m a t)中。若省略文件名,则文件名缺省为"M A T L A B.m a t"。该文件为二进制格式,称为MAT文件。

格式 2:

save 文件名变量名表[-append]

功能:

保存指定的变量到文件中。变量名表中两变量之间用逗号或空格分开。

格式 3:

save 文件名变量名表-ascii [-tabs]

功能:

用 8 位数、ASCII 码格式保存指定的变量到文件中。

格式 4:

s ave文件名变量名表-a s c ii–d o u b l e[-t a b s]功能:

用 16 位数、ASCII 码格式保存变量到指定文件中。

2、保存工作空间中的变量到 C 风格文件中

相关语句 ( 后面详介):fid=fopen

(文件名,权限串) fwrite(fid,

表达式,精度串)%二进制fprintf(fid,

格式串,表达式) fclose(fid)

3、恢复变量到工作空间

格式 1:

l o a d

功能:

从"M A T L A B.m a t"文件中恢复变量

格式 2:

l o a d文件名

功能:

从指定文件中恢复变量

格式 3:

l o a d文件名-a s c ii

功能:

从无扩展名的文本文件中生成一个以文件名为变量名的数组(文件中含有m 行、n 列数据)。

格式 4:

l o a d文件名.扩展名-m a t

功能:

从具有指定扩展名的MAT 文件中恢复变量。

格式5:

l o a d文件名.扩展名

功能:

从具有指定扩展名的文本文件生成与文件名同名的数组(文件中含有m 行、n 列数据)。

例如:

设文本文件c o ff.t x t中的数据为:

1,2,3,4,5

6,7,8,9,10

执行命令

l o a d c o ff.t x t

则命令

coff

将显示

coff=

12345

678910

格式 6:

[A,C o un t]=f r ea d(f i d,s i z e,p r e c i s i o n)

[A,Count] = fscanf(fid,format,size)

其中:

p r e c i s i o n可为:

M A T L A B C o r F o r t r a n D e s c r i p t i o n

'u c h a r''un s i g n e d c h a r'un s i g n e d c h a r a c t e r,

8b i t s.

's c h a r''s i g n e d c h a r's i g n e d c h a r a c t e r,

8b i t s.

'i n t8''i n t e g e r*1'i n t e g e r,8b i t s.

'i n t16''i n t e g e r*2'i n t e g e r,16b i t s. 'i n t32''i n t e g e r*4'i n t e g e r,32b i t s. 'i n t64''i n t e g e r*8'i n t e g e r,64b i t s.

'u i n t8''i n t e g e r*1'un s i g n e d i n t e g e r,

8b i t s.

'u i n t16''i n t e g e r*2'un s i g n e d i n t e g e r,

16b i t s.

'u i n t32''i n t e g e r*4'un s i g n e d i n t e g e r,

32b i t s.

'u i n t64''i n t e g e r*8'un s i g n e d i n t e g e r,

64b i t s.

's i n g l e''r ea l*4'f l o a t i n g p o i n t,

32b i t s.

'f l o a t32''r ea l*4'f l o a t i n g p o i n t,

32b i t s.

'd o u b l e''r ea l*8'f l o a t i n g p o i n t,

64b i t s.

'f l o a t64''r ea l*8'f l o a t i n g p o i n t,

64b i t s.

功能:

从 C 风格文件中读入size 个数据到A,Count 为实际读入数据个数

2.2选择结构

2.2.1if 语句

格式 1:

if 表达式

语句组

end

功能:

若表达式值的实部或值为真,则执行语句组

格式 2:

if 表达式

语句组 1

else

语句组 2

end

功能:

若表达式值实部非 0 或值为真,则执行语句组1,否则执行语句组 2。

格式 3:

if 表达式 1

语句组1

elseif 表达式 2

语句组 2

elseif 表达式n

语句组 n

else

语句组 n+1

end

功能:

若表达式 1 为真则执行语句组 1

否则,若表达式 2 为真则执行语句 2 ┆

否则若表达式 n 为真则执行语句组 n 否则执行语句组 n+1

2.2.2s w i t c h语句

格式:

s w i t c h表达式

case e1

语句组 1

c a s e{ex1,ex2,ex3,...}

语句组 2

...

c a s e{ex p1,ex p2,ex p3,...}

语句组 n

o t h e r w i s e,

语句组 n+1

end

功能:

若表达式的值为 e1 则执行语句组 1

否则,若表达式的值为ex1,ex2,ex3,…中的一个,则执行语句组 2

否则,表达式的值为ex p1,ex p2,ex p3,…中的一个,则执行语句组 n

否则,则执行语句组 n+1

例如:

s w i t c h l o w e r(M E T H O D)

c a s e{'li n ea r','b ili n ea r'}

d i s p('M

e t h o d i s li n ea r')

c a s e'c u b i c'

d i s p('M

e t h o d i s c u b i c')

c a s e'n ea r e s t'

d i s p('M

e t h o d i s n ea r e s t')

o t h e r w i s e

d i s p('U n k n o w n m

e t h o d.')

end

(switch 语句是 5.0 以上版本中增加的,可以用更加简洁的方式描述多向选择)

例如:

clear;

%创建元胞数组:a,b,c,d

for i=1:10;a{i}=89+i;b{i}=79+i;c{i}=69+i;d{i}=59+i;end;

c=[d,c];

Name={'李洪斌','赵向阳','龚力','王立伟','马玉书'};

Mark={72,83,56,94,100};Rank=cell(1,5);

%

S=struct('Name',Name,'Marks',Mark,'Rank',Rank);

%

for i=1:5

switch S(i).Marks

case 100

S(i).Rank='满分';

case a

S(i).Rank=' 优秀';

case b

S(i).Rank=' 良好';

case c

S(i).Rank=' 及格';

otherwise

S(i).Rank='不及格';

end

end

%

disp(['学生姓名',' 得分',' 等级']);

for i=1:5;

disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i). Rank]);

end;

学生姓名得分等级

李洪斌72及格

赵向阳83良好

龚力56不及格

王立伟94优秀

马玉书100满分

2.2.3try 语句

格式 2:

try

语句组 1

catch

语句组 2

end

功能:

执行语句组 1,若执行语句组 1 的过程中发生错误则执行语句组 2。可查看lasterr 中的内容,获取错误信息。(lasterr('')清除错误信息)

2.2.4选择语句的嵌套

当以上选择语句出现在另一个选择语句的语句组中时,即构成了选择语句的嵌套。

当选择语句嵌套时,应注意一个if 必须与一个距离最近的 end 匹配。

2.3循环结构语句

2.3.1for 语句

格式 1:

for 变量=初值[:增量]:终值

语句组%循环体

end

其中:

"增量"若省略时,增量值取为 1。

功能:

表示对于变量从初值直到终值,每次变化一个增量的每一个值都执行语句组一次。

如:

f o r n=1:100

x(n)= s i n(n*p i/100);

end

本格式的 for 语句用于执行一定次数的循环

格式 2:

for 变量=数组名

语句组%循环体

end

功能:

每次循环时取数组的下一列元素(第一

次循环时取第 1 列元素)赋给变量(故变量本身成为数组),然后执行语句组,直到数组的全体列都取完为止。

如:

a=[1,5,9;0,–1,1];

f o r n=a,n(1)–n(2),e n d

ans =

1

ans =

6

ans =

8

2.3.2w h il e语句

格式:

w h il e表达式

语句组

end

当表达式的值为真或其实部为非 0,重复执行语句组(循环体),直到表达式的值为 0 或其实部为0。

注意:表达式为数组时全部非 0 才为真。

如:

a=[1,3,5;–1,0,1];n=0;

w h il e a>0,n=n+1,e n d

由于 a 中含有一个 0,故一次循环也未执行。

2.3.3循环嵌套

在一个循环的循环体内又含有另一个循环结构,即构成循环的嵌套。

2.3.4break 语句

格式:

break

功能:

该语句将中止当前它所在的循环。

如:找出 m~n 之间的全体素数

f un c t i o n u=f q(m,n)

%找出 m 到 n 的全体素数 f q (m ,n )

%若仅有一个参数则 m= 2,给出参数作为 n %若没有参数则 m = 2,n = 100 %1999.3

i f n a r g i n == 0,

m = elseif 2; n = n a r g i n 100; == 1,

n = m ; m = 2; end i =1;

f o r t = m :n ,

i f t ~= 2;

f o r r = 2:t –1,

if fix(t/r)*r == t/r *r,

break end end

i f r ==t –1,u (i )=t ;i =i +1;e n d else

u (i )=t ;i =i +1; end end

执行 fq 的运行结果:

ans =

C o l u m n s 1t h r o u g h12

2 3 5 7 11 13 17

19 23 29 31 37

C o l u m n s 13t h r o u g h24

41 43 47 53 59 61 67

71 73 79 83 89

C o l u m n25

97

2.4文件读写函数

1、fopen 函数

f i d=f o p e n('文件名','权限')

其中:

权限—可为‘r’(只读)、‘w’(只写)、

‘a’(追加)、‘rb’(二进制文件

只读)、‘wb’(二进制文件只写)、

‘ab’(二进制文件追加)、‘rt’(文

本文件只读)、‘w t’(文本文件只

写)、‘at’(文本文件追加)。

功能:

函数执行成功,f i d中为一整数,表示文件代号;否则为–1。

相关主题
文本预览
相关文档 最新文档