MATLAB程序设计Word文档格式.docx
《MATLAB程序设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
=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;
B=[401;
[C,D]=SY00505(A,B)
【注】
函数文件的第一行必须是函数说明语句;
输入参量用圆括号括起,输出参量多于1个时用方括号括起;
多个输入/输出参量时,参量之间用逗号隔开.
函数文件的变量一般是局部变量,可以用global命令将某些变量说明为全局变量.
函数文件的文件名一般应与函数说明语句中定义的函数名相一致.
函数文件可以递归调用.
三、M-文件的建立、编辑与调用
1.M-文件的建立与编辑
方法1:
在命令窗口输入命令:
edit[M-文件名],即可打开相应M-文件编辑器.
方法2:
单击菜单“File”->
“New”->
“M-file”,打开空白M-文件编辑器;
方法3:
“Open”->
输入文件名,打开相应M-文件编辑器;
方法4:
在当前目录窗口中选择某M-文件,双击则可打开该M-文件编辑器;
2.M-文件的调用
在MATLAB命令窗口中直接键入M-文件名,然后回车;
在当前目录窗口选择某M-文件,击右键选择命令RUN,即可运行该M-文件;
在M-文件编辑窗口中,单击工具钮RUN或菜单Debug/RUN,即可运行该M-文件.
【注】M被调用的M-文件必须位于当前目录或文件搜索路径范围内.
调用函数文件时,须事先对输入参量赋值,然后按照以下格式调用
输出参量=函数名(输入参量)(回车)
其中,实际参数和形式参数可以不同;
输入参数要用小括号将其括起,输出参数多于一个时,要用中括号“[]”将其括起;
参数间用逗号隔开.
四、MATLAB的控制流语句
MATLAB与其它计算机高级语言一样,有它自己的控制流语句,用户使用它们可以方便地编写出各种M-文件(应用程序).
1.选择结构
(1)if语句
一般格式:
if<
关系表达式1>
语句体1>
elseif<
关系表达式2>
语句体2>
…
关系表达式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;
(2)switch语句
switch<
表达式>
case值1
<
…
case值n
<
语句体n>
otherwise
<
end
首先计算表达式的值,若该值与值j(j=1,2,…,n)相等,则执行语句体j,然后执行end的后续命令;
例7.编写命令文件,从键盘输入某学生成绩(5分制),计算机判断并输出该生成绩的优良等级.
编写命令文件(SY00507.m)如下:
x=input('
请输入您的分数:
x='
);
switchx
case5
disp('
优秀!
'
case4
良好!
case3>
SY00507%运行程序
及格!
请输入您的分数:
x=4
otherwise良好!
不及格!
)
2.循环结构
(1)for语句
for循环变量=矩阵
{语句体}
基本功能:
循环循环变量依次取矩阵的每一列,然后执行一次语句体;
遍历矩阵的各列后,然后执行end的后续命令.
【注】for语句有简化格式:
for<
循环参数>
=<
初值>
:
步长>
终值>
语句体>
其中步长省略时,则默认步长为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;
(2)while语句
while<
关系表达式>
若关系表达式值为真
(1),则反复执行语句体,直至关系表达式值为假(0),则终止循环,转而执行end的后续命令.
【注】若关系表达式计算对象为矩阵时,则只有当结果矩阵的所有元素均为真时,才执行循环体;
否则(或结果矩阵为空矩阵时),不执行循环体.
用break命令可强行中止循环,转而执行该循环end的后续命令;
用continue命令可中止循环中的当前迭代,转而执行该循环的下一次迭代.
for循环用于循环次数确定,而while循环用于循环次数事先不能确定.
例9.编写M-文件,计算eps的值.
编写命令文件(eeps.m)如下:
(使用大写变量EPS,以便与常量eps相区别)
EPS=1;
n=0;
%赋初值,n用以累计循环次数
eeps%运行程序