matlab基本语句.docx

上传人:b****5 文档编号:3413934 上传时间:2022-11-22 格式:DOCX 页数:18 大小:54.80KB
下载 相关 举报
matlab基本语句.docx_第1页
第1页 / 共18页
matlab基本语句.docx_第2页
第2页 / 共18页
matlab基本语句.docx_第3页
第3页 / 共18页
matlab基本语句.docx_第4页
第4页 / 共18页
matlab基本语句.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

matlab基本语句.docx

《matlab基本语句.docx》由会员分享,可在线阅读,更多相关《matlab基本语句.docx(18页珍藏版)》请在冰豆网上搜索。

matlab基本语句.docx

matlab基本语句

第2章MATLAB程序设计

MATLAB语言为解释型程序设计语言。

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

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

2.1顺序结构语句

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

2.1.1表达式语句

格式:

表达式,%显示表达式值

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

表达式%显示表达式值

如:

x+y,

sin(x);

–5

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

2.1.2赋值语句

格式:

v=表达式,%结果送v并显示v

v=表达式;%结果送v不显示v

v=表达式%结果送v并显示v

2.1.3空语句

格式:

2.1.4输入语句

1、input语句(实际上是函数)

格式1:

input(提示字符串)

功能:

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

格式2:

input(提示字符串,'s')

功能:

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

2、yesinput语句

格式:

yesinput(提示字符串,缺省值,值范围)

功能:

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

如:

t=yesinput('指定线的颜色',…

'red','red|blue|green')

运行结果如下:

指定线的颜色(red):

yellow%不在值内

指定线的颜色(red):

blue%重输

t=

blue

x=yesinput('输入元素个数',10,[1,20])

运行结果如下:

输入元素个数(10):

x=

10

3、Keyboard语句

格式:

Keyboard

功能:

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

本语句用于调试M-文件。

4、pause语句

格式1:

pause

功能:

暂停,敲下任一键继续

格式2:

pause(n)

功能:

暂停n秒

格式3:

puaseon

功能:

本命令后的pause语句有效

格式4:

pauseoff

功能:

本命令后的pause语句无效

5、menu语句

格式:

menu('菜单名',S1,S2,…,Sk)

功能:

生成一个按钮式菜单系统

其中:

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

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

如M-文件,menu_d.m如下:

%选择一种颜色

while1

k=menu('选择一种颜色','红色',…

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

ifk==1color='Red'

elseifk==2color='Yellow'

elseifk==3color='Blue'

elseifk==4color='Green'

elseifk==5color='White'

elseifk==6break

end

end

2.1.5输出语句

1、直接终端显示

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

2、diary语句(日记)

格式1:

diary文件名

功能:

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

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

格式2:

diaryoff

功能:

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

格式3:

diaryon

功能:

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

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

3.disp语句

格式:

disp(x)

功能:

显示x的值,但不显示x的名

4.sprintf语句

格式:

[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('Thearrayis%dx%d.',2,3)Thearrayis2x3.

sprintf('\n')换行

2.1.6变量值的保存与恢复

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

格式1:

save文件名

功能:

保存工作空间中的全体变量到指定文件(扩展名设定为.mat)中。

若省略文件名,则文件名缺省为"MATLAB.mat"。

该文件为二进制格式,称为MAT文件。

格式2:

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

功能:

保存指定的变量到文件中。

变量名表中两变量之间用逗号或空格分开。

格式3:

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

功能:

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

格式4:

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

功能:

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

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

相关语句(后面详介):

fid=fopen(文件名,权限串)

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

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

fclose(fid)

3、恢复变量到工作空间

格式1:

load

功能:

从"MATLAB.mat"文件中恢复变量

格式2:

load文件名

功能:

从指定文件中恢复变量

格式3:

load文件名-ascii

功能:

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

格式4:

load文件名.扩展名-mat

功能:

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

格式5:

load文件名.扩展名

功能:

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

例如:

设文本文件coff.txt中的数据为:

1,2,3,4,5

6,7,8,9,10

执行命令

loadcoff.txt

则命令

coff

将显示

coff=

12345

678910

格式6:

[A,Count]=fread(fid,size,precision)

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

其中:

precision可为:

MATLABCorFortranDescription

'uchar''unsignedchar'unsignedcharacter,8bits.

'schar''signedchar'signedcharacter,8bits.

'int8''integer*1'integer,8bits.

'int16''integer*2'integer,16bits.

'int32''integer*4'integer,32bits.

'int64''integer*8'integer,64bits.

'uint8''integer*1'unsignedinteger,8bits.

'uint16''integer*2'unsignedinteger,16bits.

'uint32''integer*4'unsignedinteger,32bits.

'uint64''integer*8'unsignedinteger,64bits.

'single''real*4'floatingpoint,

32bits.

'float32''real*4'floatingpoint,

32bits.

'double''real*8'floatingpoint,

64bits.

'float64''real*8'floatingpoint,

64bits.

功能:

从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.2switch语句

格式:

switch表达式

casee1

语句组1

case{ex1,ex2,ex3,...}

语句组2

...

case{exp1,exp2,exp3,...}

语句组n

otherwise,

语句组n+1

end

功能:

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

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

否则,表达式的值为exp1,exp2,exp3,…中的一个,则执行语句组n

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

例如:

switchlower(METHOD)

case{'linear','bilinear'}

disp('Methodislinear')

case'cubic'

disp('Methodiscubic')

case'nearest'

disp('Methodisnearest')

otherwise

disp('Unknownmethod.')

end

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

例如:

clear;

%创建元胞数组:

a,b,c,d

fori=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);

%

fori=1:

5

switchS(i).Marks

case100

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

casea

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

caseb

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

casec

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

otherwise

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

end

end

%

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

fori=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。

功能:

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

如:

forn=1:

100

x(n)=sin(n*pi/100);

end

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

格式2:

for变量=数组名

语句组%循环体

end

功能:

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

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

如:

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

forn=a,n

(1)–n

(2),end

ans=

1

ans=

6

ans=

8

2.3.2while语句

格式:

while表达式

语句组

end

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

注意:

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

如:

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

whilea>0,n=n+1,end

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

2.3.3循环嵌套

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

2.3.4break语句

格式:

break

功能:

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

如:

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

functionu=fq(m,n)

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

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

%若没有参数则m=2,n=100

%1999.3

ifnargin==0,

m=2;n=100;

elseifnargin==1,

n=m;m=2;

end

i=1;

fort=m:

n,

ift~=2;

forr=2:

t–1,

iffix(t/r)*r==t/r*r,

break

end

end

ifr==t–1,u(i)=t;i=i+1;end

else

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

end

end

执行fq的运行结果:

ans=

Columns1through12

23571113171923293137

Columns13through24

414347535961677173798389

Column25

97

2.4文件读写函数

1、fopen函数

fid=fopen('文件名','权限')

其中:

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

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

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

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

本文件只读)、‘wt’(文本文件只

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

功能:

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

(fid:

规定标准输入为0,标准输出为1,错误信息文件为2)

2、fclose函数

fclose(fid)

或fclose('all')

3、fprintf函数

count=fprintf(fid,'格式串',输出名表)

功能:

将输出名表中的成员依次按格式串输出到fid文件中,返回输出的字节数。

关于格式串的规定与C相同。

如%s(字符串输出)、%d(整数输出)、%10.2f(实数输出,共10个字符宽,含两位小数)等。

4、fscanf函数

[变量,count]=fscanf(fid,'格式串',长度)

功能:

从文件fid中读取指定长度(按格式串控制)的数据到变量中,count为读入字节数,若长度省略,表示整个文件。

若为[m,n]表示读入一个m行n列的矩阵到变量中。

5、fread函数

[变量,count]=fread(fid,长度)

功能:

读fid文件中的二进制数据到变量中,长度含义同fscanf函数。

6、fwrite函数

count=fwrite(fid,变量)

功能:

将变量中的全体元素按二进制形式写入fid文件中。

count为成功写入的元素个数。

7、fgetl函数与fgets函数

变量=fgetl(fid)

变量=fgets(fid)

功能:

均为从fid中读入一行,但前者读入时不含回车换行,而后者包含回车换行。

还有其它一些函数,请参阅相关书籍。

2.5一个可运行MATLAB命令的函数

格式:

eval('字符串')

功能:

该函数将执行宏替换:

即把字符串看成一个命令(有点类似于C中的System函数)

如:

forn=1:

3

eval(['M',num2Str(n),'=magic(n)'])

end

执行后结果为:

M1=%1阶魔方阵

1

M2=%2阶魔方阵

13

42

M3=%3阶魔方阵

816

357

492

注意:

程序中方括号的使用,可把其中各字符子串拼接起来,也可写成:

f=['M',num2str(n),'magic(n)']);

eval(f)

又如:

m=5;t='1/(i-1+j)';

a=zeros(m);

fori=1:

m

forj=1:

m

a(i,j)=eval(t);

end

end

a

执行后结果为:

a=

1.00000.50000.33330.25000.2000

0.50000.33330.25000.20000.1667

0.33330.25000.20000.16670.1429

0.25000.20000.16670.14290.1250

0.20000.16670.14290.12500.1111

在MATLAB中还有其他类似的函数,如:

feval,evalin,assignin,evalc

2.6局部工作空间和基本工作空间

在MATLAB命令窗口中使用的工作空间为基本工作空间,在该窗口中定义的变量、非函数文件中定义的变量以及全局变量均存在于该工作空间中。

各函数文件中所定义的变量仅存在于相应的局部工作空间中,也就是说,一个函数文件执行结束后,其定义的变量也随之消失了。

函数文件之间可以通过输入、输出参数传递信息。

也可以通过使用全局变量传递信息。

global变量名表

该命令使相应变量名表中的变量成为全局变量,出现在各函数中global命令中的相同变量名将取得同一值(即全局变量是按共名原理设计的)。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1