MATLAB程序设计.docx

上传人:b****1 文档编号:1269490 上传时间:2022-10-19 格式:DOCX 页数:16 大小:34.58KB
下载 相关 举报
MATLAB程序设计.docx_第1页
第1页 / 共16页
MATLAB程序设计.docx_第2页
第2页 / 共16页
MATLAB程序设计.docx_第3页
第3页 / 共16页
MATLAB程序设计.docx_第4页
第4页 / 共16页
MATLAB程序设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

MATLAB程序设计.docx

《MATLAB程序设计.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计.docx(16页珍藏版)》请在冰豆网上搜索。

MATLAB程序设计.docx

MATLAB程序设计

封面

作者:

PanHongliang

仅供个人学习

MATLAB程序设计

MATLAB提供了一个完善的程序设计语言环境,使用户能够方便地编制复杂的程序,完成各种计算.本节先介绍关系运算、逻辑运算,再介绍M-文件(即程序文件)的结构及MATLAB的程序控制流语句.

一、关系运算和逻辑运算

1.关系运算

(1)关系运算符:

<;<=;>;>=;==;~=

(2)关系表达式:

用关系运算符将两个同类型的量(表达式)连接起来的式子.

【注】①关系运算本质上是标量运算,关系表达式的值是逻辑值(0-假1-真);

②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵.

例1.对向量进行关系运算.

>>A=1:

5,B=5:

-1:

1%输入向量

A=12345B=54321

>>C=(A>=4)%对向量进行关系运算

C=00011

>>D=(A==B)%对向量进行关系运算

D=00100

2.逻辑运算

(1)逻辑运算符:

&(and,与)、|(or,或)、~(not,非)

(2)逻辑表达式:

用逻辑将两个逻辑量连接起来的式子.

【注】①逻辑运算本质上是标量运算,它将任何非零元素视为1(真);

②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵.(真值表见P27)

例2.对向量进行逻辑运算.

>>a=1:

9,b=9-a

a=123456789b=876543210

>>c=~(a>4)%非运算

c=111100000

>>d=(a>=3)&(b<6)%与运算

d=000111111

3.逻辑函数

any(x)向量x中有非零元返回1,否则返回0.(向量函数)

all(x)向量x中所有元素非零返回1,否则返回0.(向量函数)

isempty(x)矩阵x为空矩阵返回1,否则返回0.

find(x)返回向量x中非零元下标,若x是矩阵,则视其为一长列向量.

例3.对向量或矩阵进行逻辑运算,或调用逻辑函数.

>>a=[10-50;-3082]

a=10-50

-3082

>>b=all(a),c=any(a)

b=1010

c=1011

>>x=isempty(a)%判定矩阵a是否为空,不能用关系式”a==[]”!

x=0

>>y=find(c)%返回向量c中非零元下标

y=134

>>z=find(a)%1个输出参数

z=[12568]’

>>[m,n]=find(a)%2个输出参数

二、M-文件的结构

M-文件就是MATLAB程序文件,它是一个包含MATLAB语句组(命令序列)的普通ASCII文本文件,其扩展名为“.m”.M-文件有两类:

脚本文件和函数文件.

1.脚本文件(亦称命令M-文件)

脚本文件的结构比较简单,它没有输入参数和输出参数,只是一些MATLAB命令行的组合.脚本文件中定义的变量都是全局变量.

例4.给定矩阵,,编写命令文件,输入矩阵A、B,并计算输出它们的和与差.

解:

建立如下M-文件SY00504.m

A=[123;456];%输入矩阵A

B=[401;012];%输入矩阵B

C=A+B%计算输出A与B的和

D=A-B%计算输出A与B的差

将上述文件以SY00504.m为名存盘,然后在命令窗口调用此M-文件,则有

>>SY00504

C=524D=-322

468444

2.函数文件(亦称函数M-文件)

和命令文件相比,函数文件稍微复杂一些.通常函数文件包含以下几个部分:

(1)函数定义行位于文件首行,以function开头,说明函数名、输入/输出参数.

(2)帮助信息紧跟函数定义行后面,以%开头的注释行,给出该函数的在线帮助.

(3)函数体函数的执行语句部分,是函数文件的核心部分.

(4)注释部分命令行中以符号“%”开始直到该行结束部分的注释语句.

例5.编写函数文件,计算任意两个同维数矩阵的和与差.(L000402.m)

解:

建立如下函数文件SY00505.m

function[C,D]=SY00405(A,B)

%给定矩阵A和B,计算输出其矩阵和C和矩阵差D

C=A+B;%计算矩阵和

D=A-B;%计算矩阵差

将上述文件以SY00405.m为名存盘,然后在命令窗口调用函数文件,则有

>>A=[123;456];B=[401;012];

>>[C,D]=SY00505(A,B)

C=524D=-322

468444

【注】

函数文件的第一行必须是函数说明语句;输入参量用圆括号括起,输出参量多于1个时用方括号括起;多个输入/输出参量时,参量之间用逗号隔开.

函数文件的变量一般是局部变量,可以用global命令将某些变量说明为全局变量.

函数文件的文件名一般应与函数说明语句中定义的函数名相一致.

函数文件可以递归调用.

三、M-文件的建立、编辑与调用

1.M-文件的建立与编辑

方法1:

在命令窗口输入命令:

edit[M-文件名],即可打开相应M-文件编辑器.

方法2:

单击菜单“File”->“New”->“M-file”,打开空白M-文件编辑器;

方法3:

单击菜单“File”->“Open”->输入文件名,打开相应M-文件编辑器;

方法4:

在当前目录窗口中选择某M-文件,双击则可打开该M-文件编辑器;

2.M-文件的调用

方法1:

在MATLAB命令窗口中直接键入M-文件名,然后回车;

方法2:

在当前目录窗口选择某M-文件,击右键选择命令RUN,即可运行该M-文件;

方法3:

在M-文件编辑窗口中,单击工具钮RUN或菜单Debug/RUN,即可运行该M-文件.

【注】M被调用的M-文件必须位于当前目录或文件搜索路径范围内.

调用函数文件时,须事先对输入参量赋值,然后按照以下格式调用

输出参量=函数名(输入参量)(回车)

其中,实际参数和形式参数可以不同;输入参数要用小括号将其括起,输出参数多于一个时,要用中括号“[]”将其括起;参数间用逗号隔开.

四、MATLAB的控制流语句

MATLAB与其它计算机高级语言一样,有它自己的控制流语句,用户使用它们可以方便地编写出各种M-文件(应用程序).

1.选择结构

(1)if语句 

一般格式:

if<关系表达式1>

<语句体1>

elseif<关系表达式2>

<语句体2>

elseif<关系表达式n>

<语句体n>

else

<语句体n+1>

end

基本功能:

若表达式j(j=1,2,…,n)的值为真,则执行语句体j,然后执行end的后续命令;否则,则执行语句体n+1,然后执行end的后续命令.

【注】if语句结构中,关键字“else”和“elseif”所在语句行以及其后的语句体都不是必需的,但是关键字“end”不能省略.

例6.编写函数文件,计算分段函数

解:

编写函数文件(fenduan.m)如下:

functiony=fenduan(x)%计算分段函数

ifx<=0

>>x=-5:

0.1:

10;

>>n=length(x);

>>fork=1:

ny(k)=fenduan(x(k));end

>>plot(x,y)

y=0;

elseifx<=2*pi

y=sin(x);

else

y=x-2*pi;

end

(2)switch语句

一般格式:

 switch<表达式>

    case值1

     <语句体1>

    …

         case值n

     <语句体n>

    otherwise

     <语句体n+1>

    end

基本功能:

首先计算表达式的值,若该值与值j(j=1,2,…,n)相等,则执行语句体j,然后执行end的后续命令;否则,则执行语句体n+1,然后执行end的后续命令.

例7.编写命令文件,从键盘输入某学生成绩(5分制),计算机判断并输出该生成绩的优良等级.

解:

编写命令文件(SY00507.m)如下:

x=input('请输入您的分数:

x=');

switchx

case5

disp('优秀!

');

case4

disp('良好!

');

case3>>SY00507%运行程序

disp('及格!

');请输入您的分数:

x=4

otherwise良好!

disp('不及格!

')

end

2.循环结构

(1)for语句

一般格式:

for循环变量=矩阵

{语句体}

end

基本功能:

循环循环变量依次取矩阵的每一列,然后执行一次语句体;遍历矩阵的各列后,然后执行end的后续命令.

【注】for语句有简化格式:

for<循环参数>=<初值>:

<步长>:

<终值>

<语句体>

end

其中步长省略时,则默认步长为1.

for循环不能由循环体内给循环变量重新赋值来终止;

for循环可以按需要进行嵌套;

例8.编写函数文件,产生m×n阶Hilber矩阵.

解:

编写函数文件(hhilb.m)如下:

functionH=hhilb(m,n)%H的i,j处元素H(i,j)=1/(i+j-1)

>>h=hhilb(3,4)%调用函数

h=11/21/31/4

1/21/31/41/5

1/31/41/51/6

H=zeros(m,n);%预先分配数组

fori=1:

m

forj=1:

n

H(i,j)=1/(i+j-1);

end

end

formatrat,H=H;%取有理数表示.

例_8.编写函数令文件,计算并输出A的各行向量的元素和(hanghe.m).

>>A=[1234;5678]

A=1234

5678

>>X=hanghe(A)

X=10

26

解:

functionX=hanghe(A)

[m,n]=size(A);%计算A维数

X=zeros(m,1);%零初始化

fory=A

X=X+y;

end

(2)while语句

一般格式:

while<关系表达式>

<语句体>

end

基本功能:

若关系表达式值为真

(1),则反复执行语句体,直至关系表达式值为假(0),则终止循环,转而执行end的后续命令.

【注】若关系表达式计算对象为矩阵时,则只有当结果矩阵的所有元素均为真时,才执行循环体;否则(或结果矩阵为空矩阵时),不执行循环体.

用break命令可强行中止循环,转而执行该循环end的后续命令;用continue命令可中止循环中的当前迭代,转而执行该循环的下一次迭代.

for循环用于循环次数确定,而while循环用于循环次数事先不能确定.

例9.编写M-文件,计算eps的值.

解:

编写命令文件(eeps.m)如下:

(使用大写变量EPS,以便与常量eps相区别)

EPS=1;n=0;%赋初值,n用以累计循环次数

>>eeps%运行程序

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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