第4章 matlab在编程方面的应用.docx

上传人:b****1 文档编号:3125330 上传时间:2023-05-05 格式:DOCX 页数:15 大小:20.30KB
下载 相关 举报
第4章 matlab在编程方面的应用.docx_第1页
第1页 / 共15页
第4章 matlab在编程方面的应用.docx_第2页
第2页 / 共15页
第4章 matlab在编程方面的应用.docx_第3页
第3页 / 共15页
第4章 matlab在编程方面的应用.docx_第4页
第4页 / 共15页
第4章 matlab在编程方面的应用.docx_第5页
第5页 / 共15页
第4章 matlab在编程方面的应用.docx_第6页
第6页 / 共15页
第4章 matlab在编程方面的应用.docx_第7页
第7页 / 共15页
第4章 matlab在编程方面的应用.docx_第8页
第8页 / 共15页
第4章 matlab在编程方面的应用.docx_第9页
第9页 / 共15页
第4章 matlab在编程方面的应用.docx_第10页
第10页 / 共15页
第4章 matlab在编程方面的应用.docx_第11页
第11页 / 共15页
第4章 matlab在编程方面的应用.docx_第12页
第12页 / 共15页
第4章 matlab在编程方面的应用.docx_第13页
第13页 / 共15页
第4章 matlab在编程方面的应用.docx_第14页
第14页 / 共15页
第4章 matlab在编程方面的应用.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第4章 matlab在编程方面的应用.docx

《第4章 matlab在编程方面的应用.docx》由会员分享,可在线阅读,更多相关《第4章 matlab在编程方面的应用.docx(15页珍藏版)》请在冰点文库上搜索。

第4章 matlab在编程方面的应用.docx

第4章matlab在编程方面的应用

.matlab在编程方面的应用

本章主要对matlab在编程方面的应用作一个较详细的介绍,其中涉及了编程必然须注意的变量类型、数据类型、程序控制语句及matlab函数等相关内容。

一、变量、语句

1变量命名规则

Ø必须以字母开头;

Ø可以由字母、数字和下划线混合组成;

Ø字符长度应不大于31个。

注意:

matlab区分大小写。

2局部变量和全局变量

通常,每个函数体内都有自己定义的变量,不能从其他函数和MATLAB工作空间访问这些变量,这些变量即是局部变量。

如果要使某个变量在几个函数中和MATLAB函数空间都能使用,可以把它定义为全局变量。

全局变量就是用关键字“global”声明的变量。

全局变量名尽量大写,并能够反映它本身的含义。

如果需要在几个函数中和MATLAB工作空间都能访问一个全局变量,那么必须在每个函数中和MATLAB工作空间内都声明该变量为全局变量为全局的。

全局变量需要在函数体的变量赋值语句之前说明,整个函数以及所有对函数的递归调用都可以利用全局变量。

注意:

实际编程中,应尽量避免使用全局变量,因为全局变量的值一旦在一个地方被改变,那么在其他包括该变量的函数中都将改变,这样由可能会出现不可遇见的情况。

如果需要用全局变量,建议全局变量名要长,能反映它本身的含义,并且最好所有字母都大写,并由选择地以首次出现的M文件的名字开头。

3基本语句

MATLAB可以认为是一种解释性语言,用户可以在MATLAB命令窗口键入命令,也可以在编辑器内编写应用程序,这样MATLAB软件对此命令或程序中各条语句进行翻译,然后在MATLAB环境下对它进行处理,最后返回运算结果。

MATLAB语言的基本语句结构为:

变量名列表=表达式

其中等号左边的变量名列表为MATLAB语句的返回值,等号右边的是表达式的定义,它可以是MATLAB允许的矩阵运算,也可以是函数调用。

等号右边的表达式可以由分号结束,也可以由逗号或回车结束,但它们的含义是不同的,如果用分号结束,则左边的变量的结果将不在屏幕上显示,否则将把结果全部显示出来。

MATLAB语言和C语言不同,在调用函数时MATLAB允许一次返回多个结果,这时等号左边是[]括起来的变量列表。

注意:

表达式中的运算符号两侧允许有空格,以增加可读性。

但在复数或符号表达式中要尽量避免,以防出错。

在MATLAB的基本语句结构中,等号左边的变量名列表和等号一起可以省略,这时将把表达式的执行结果自动赋给变量“ans”,并显示到命令窗口中。

4数据类型

MATLAB下的数据类型最大的特点就是每一种数据类型都是以数组为基础,都是从数组派生出来的,MATLAB事实上把每种类型的数据都作为数组处理。

MATLAB下有六种基本数据类型,分别是:

double(双精度数值),char(字符),sparse(稀疏数据),storage(存储型),cell(单元数组),struct(结构)。

其中存储类型是一个虚拟数据类型,这是MATLAB后来几个版本新增的定义,它包括:

int8(8位整型),uint8(无符号8位整型),int16(16位整型),uint16(无符号16位整型),int32(32位整型),uint32(无符号32位整型)。

MATLAB有两种工作方式:

交互式的命令行工作方式

M文件的程序工作方式

一.M文件

用MATLAB语言编写的程序,称为M文件。

M文件有两类:

命令文件和函数文件。

命令文件:

没有输入参数,也不返回输出参数。

函数文件:

可以输入参数,也可返回输出参数。

1.M文件的建立与编辑

建立新的M文件:

从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。

2.命令文件

将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。

【例1】建立一个命令文件将变量a,b的值互换。

e31.m文件:

a=1:

9;

b=[11,12,13;14,15,16;17,18,19];

c=a;a=b;b=c;

a

b

在MATLAB的命令窗口中输入e31,将会执行该命令文件

 

1.input函数:

用于向计算机输入一个参数。

调用格式:

A=input(提示信息,选项);

注:

‘s’选项,则允许用户输入一个字符串。

例如想输入一个人的姓名,可采用命令

xm=input('What''syourname:

','s')

【例2】求一元二次方程a2+bx+c=0的根。

a=input('a=?

');

b=input('b=?

');

c=input('c=?

');

d=b*b-4*a*c;

x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]

将该程序以aa.m文件存盘,然后运行aa.m文件。

2.pause函数:

暂停程序的执行。

调用格式:

pause(延迟秒数)

注:

如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。

3.disp函数:

命令窗口输出函数。

调用格式:

disp(输出项)

注:

输出项为字符串或矩阵。

例如

A='Hello,MATLAB';

disp(A)

输出为:

Hello,MATLAB

(一)选择结构

选择结构的语句有if语句和switch语句。

1.if语句

格式一:

if条件

语句组

End

ifrand

(1)>0.5

disp('iloveyou')

end

格式二:

if条件

语句组1

else

语句组2

end

?

ifrand

(1)>0.5

disp('iloveyou')

else

disp('idonotloveyou')

end

(一)选择结构

格式三:

if条件1

语句组1

elseif条件2

语句组2

……

elseif条件m

语句组m

else

语句组m+1

end

【例4】输入三角形的三条边,求面积。

A=input('请输入三角形的三条边:

');

ifA

(1)+A

(2)>A(3)&A

(1)+A(3)>A

(2)&A

(2)+A(3)>A

(1)

p=(A

(1)+A

(2)+A(3))/2;

s=sqrt(p*(p-A

(1))*(p-A

(2))*(p-A(3)));

disp(s);

else

disp('不能构成一个三角形。

')

end

运行:

请输入三角形的三条边:

[456]

9.9216

【例5】输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。

c=input('','s');

ifc>='A'&c<='Z'

disp(setstr(abs(c)+1));

elseifc>='a'&c<='z'

disp(setstr(abs(c)-1));

else

disp(c);

end

2switch语句

switch语句根据变量或表达式的取值不同,分别执行不同的语句。

其格式为:

switch表达式

case值1

语句组1

case值2

语句组2

……

case值m

语句组m

otherwise

语句组m+1

end

【例6】根据变量num的值来决定显示的内容。

num=input('请输入一个数');

switchnum

case-1

disp('Iamateacher.');

case0

disp('Iamastudent.');

case1

disp('Youareateacher.');

otherwise

disp('Youareastudent.');

end

(二)循环结构

实现循环结构的语句:

for语句和while语句。

1.for语句:

格式:

for循环变量=表达式1:

表达式2:

表达式3

循环体语句

end

注:

其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。

步长为1时,表达式2可以省略。

例:

n=0:

1:

10;

y=n;

fori=1:

11

y(i)=sin(n(i));

end

y

●        为了得到最大的速度,在For循环(While循环)被执行之前,应预先分配数组。

建议最好先使用zeros或ones等命令来预先配置所需的内存(即矩阵)大小

●        可以利用break命令跳出for循环

2.while语句

格式为:

while(条件)

循环体语句

end

>>x=zeros(1,6);%x是一个的零矩阵

i=1;

whilei<=6,

x(i)=1/i;

i=i+1;

end

>>x

【例7】根据例3.6中求y的表达式,求:

(1)y<3时的最大n值。

(2)与

(1)的n值对应的y值。

求y的表达式

y=0;i=1;

while1%循环的条件为1,即循环条件总是满足的,这是一个永真循环

f=1/(2*i-1);

y=y+f;

ify>3

break;

end

i=i+1;

end

n=i-1

y=y-f

3.循环的嵌套

如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。

多重循环的嵌套层数可以是任意的。

可以按照嵌套层数,分别叫做二重循环、三重循环等。

处于内部的循环叫作内循环,处于外部的循环叫作外循环。

【例8】求[100,1000]以内的全部素数。

n=0;

form=100:

1000

flag=1;j=m-1;

i=2;

whilei<=j&flag

ifrem(m,i)==0

flag=0;

end

i=i+1;

end

ifflag

n=n+1;

prime(n)=m;

end

end

prime%变量prime存放素数

四.函数文件

1.函数文件格式

函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。

事实上,MATLAB提供的标准函数大部分都是由函数文件定义的。

【例9】编写函数文件求小于任意自然数n的Fibonacci数列各项。

functionf=ffib(n)

%用于求Fibonacci数列的函数文件

%f=ffib(n)

%1999年9月30日编

f=[1,1];

i=1;

whilef(i)+f(i+1)

f(i+2)=f(i)+f(i+1);

i=i+1;

end

将以上函数文件以文件名ffib.m存盘,然后在MATLAB命令窗口输入以下命令,可求小于2000的Fibonacci数。

ffib(2000)

2.函数调用

函数文件编制好后,就可调用函数进行计算了。

如上面定义ffib函数后,调用它求小于2000的Fibonacci数。

函数调用的一般格式是:

[输出实参表]=函数名(输入实参表)

【例10】利用函数文件,实现直角坐标(x,y)与极坐标(γ,θ)之间的转换。

函数文件tran.m:

function[gama,theta]=tran(x,y)

gama=sqrt(x*x+y*y);

theta=atan(y/x);

调用tran.m的命令文件main1.m:

x=input('Pleaseinputx=:

');

y=input('Pleaseinputy=:

');

[gam,the]=tran(x,y);

gam

the

【例11】利用函数的递归调用,求n!

functionf=factor(n)

ifn<=1

f=1;

else

f=factor(n-1)*n;

end

return;%返回

在命令文件main2.m中调用函数文件factor.m:

fori=1:

10

fac(i)=factor(i);

end

fac

程序运行结果是:

fac=

Columns1through612624120720Columns7through10

504403203628803628800

3.函数所传递参数的可调性

MATLAB在函数调用上有一个与众不同之处:

函数所传递参数数目的可调性。

凭借这一点,一个函数可完成多种功能。

在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。

只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。

【例12】nargin用法示例

函数文件examp.m:

functionfout=charray(a,b,c)

ifnargin==1

fout=a;

elseifnargin==2

fout=a+b;

elseifnargin==3

fout=(a*b*c)/2;

end

命令文件mydemo.m:

x=[1:

3];y=[1;2;3];

examp(x)

examp(x,y')

examp(x,y,3)

执行mydemo.m后的输出是:

ans=

123

ans=

246

ans=

21

【例13】全局变量应用示例

在MATLAB中,全局变量用命令global定义。

函数文件的内部变量是局部的,与其他函数文件及MATLAB工作空间相互隔离。

但是,如果在若干函数中,都把某一变量定义为全局变量,那么这些函数将公用这一个变量。

全局变量的作用域是整个MATLAB工作空间,即全程有效。

所有的函数都可以对它进行存取和修改。

因此,定义全局变量是函数间传递信息的一种手段。

【例13】全局变量应用示例

先建立函数文件wadd.m,该函数将输入的参数加权相加。

functionf=wadd(x,y)

%addtwovariable

globalALPHABETA

f=ALPHA*x+BETA*y;

在命令窗口中输入:

globalALPHABETA

ALPHA=1;

BETA=2;

s=wadd(1,2)

输出为:

s=

5

习题

1.输入20个数,求其中最大数和最小数。

要求分别用循环结构和调用MATLAB的max函数、min函数来实现。

2.求Fibonacci数列

(1)大于4000的最小项。

(2)5000之内的项数。

 

3.写出下列程序的输出结果:

s=0;

a=[12,13,14;15,16,17;18,19,20;21,22,23];

fork=a

forj=1:

4

ifrem(k(j),2)~=0

s=s+k(j);

end

end

end

s

 

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2