Matlab教程(一)

来源:互联网 发布:知乎 四个意识 编辑:程序博客网 时间:2024/05/19 23:57

第二章  MATLAB程序设计基础

2.1常量与变量

2.1.1 特殊常量

变量名

功 能 说 明

ANS(ans)

缺省变量名,以应答最近一次操作运算结果

i或j

虚数单位

Pi

圆周率

NaN

Not-a-number,表示不定值

tic

秒表开始执行

INF(inf)

代表无穷大

toc

秒表停止

Date

日历

Clock

时钟

 

2.1.2一般变量

变量命名遵守的原则:

1、          变量名区分大小写

2、          变量名长度不超过31位,超过的将被忽略

3、          变量名以字母开头,可以由字母、数字、下划线组成,但不能使用标点

2.2           数组

2.2.1      建立数组

方法:1、逐个元素输入法   x=[1 2 ; 2 3;4 5]

      2、冒号法         x=初始值:步长:终止值

      3、特殊方法     x=linspace(初始量,终止量,数组元素个数)

                      y=logspace(初始量,终止量,数组元素个数)

2.2.2      引用数组

1、          一维数组

调用格式  x(n)   x(n1:n2)

2、          二维数组

调用格式  x(m,:)  x(:,n)   x(m,n)  x(m,n1:n2)

2.3           运算符

2.3.1      算术运算符

操作符

功能说明

操作符

功能说明

+

\

算术左除

.\

点左除

算术乘

/

算术右除(传统)

.*

点乘

./

点右除

^

算术乘方

´

算术转置

.^

点乘方

点转置

2.3.2      关系运算符

操作符

功能说明

==

等于

~=

不等于

大于

小于

>=

大于等于

<=

小于等于

2.3.3  MATLAB逻辑关系运算符

逻辑运算符

逻辑运算

说明

&

And

逻辑与

or

~

Not

 

 

Xor

Xor

异或

逻辑运算规则

输入

异或

a

b

a&b

a|b

xor(a,b)

~a

0

0

0

0

0

1

0

1

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

0

 

例1:逻辑矩阵A=[1 1 ;0 1]、B=[0 1; 0 0],逻辑标量b=0,求c1=A&b ,c2=A|b, c3=xor(A,B)

 

2.3.4 逻辑函数

逻辑函数

函数意义

all

判断是否所有元素为非零值

any

判断是否存在一个元素为非零值

exist

查看变量或函数是否存在

find

找出向量或矩阵中非零元素的位置标识

isempty

判断矩阵是否为空矩阵

isequal

判断几个对象是否相等

isnumeric

判断对象是否为数值型

 

例2:向量a=[1 3 5] ,矩阵A=[1 2 3 ;0 4 5] ,求B1=all(a)  B2=all(A)

B3=all(A,2)

例3:向量a=[0 3 0] ,矩阵A=[1 0 3;0 0 5] ,求B1=any(a)  B2=any(A)

B3=any(A,2)

例 4:矩阵A=[1 0 3;0 0 5] ,求k=find(A)  [I,j]=find(A)   [I,j,v]=find(A)

例5:矩阵A=[0.34  0.6] ,B=[0.34;0.6]  ,C=[‘who’],判断A与B、A与C是否相等

例6:矩阵A=[0.34  0.6] , B=[1+2*i  0.6+3*i] ,C=[‘who’],判断A、B、C是否为数据矩阵。

2.3.5 MATLAB特殊运算符

   需要特别指出,下表中的特殊运算符是指在英语输入状态下输入的字符,若在汉字输入状态下输入则无效

MATLAB特殊运算

符号

功能说明

冒号,在MATLAB中非常重要

分号,用于分隔行

逗号,用于分隔列

( )

圆括号,指出在算术表达式中先后次序

[ ]

方括号,用于构成向量和矩阵

{ }

大括号,用于构成单元数组

.

小数点或域访问符

..

父目录

用于语句行尾端表示该行未完

%

用于注释

!

用于调用操作系统命令

=

用于赋值

经常使用的MATLAB特殊运算符,功能说明如下:

(1)冒号(:)

使用冒号可以输入行向量,其格式为:x = a : inc : b 。

a 是数组的第一个元素,inc是步长(两个元素的间隔),步长可正可负; a、inc、b三者之间用冒号分隔;当inc=1时可以省略。

例2-1】在MATLAB命令窗口输入指令并回车(以下举例同此)。

(1)a= 10:5:30(2)a= 10:-1:0(3)a= 10:15

 

使用冒号能够从向量、矩阵和数组中选出指定元素、行和列。

例2-2】使用冒号选出指定元素。

              1   2   3

A =     4   5   6

        7   8   9

A= [1 2 3;4 5 6;7 8 9 ];

A(1:2,3)

使用冒号能够从一个大矩阵中选取小矩阵。

例2-3】使用冒号选取小矩阵示例。

              1   2   3

A =     4   5   6

        7   8   9

A= [ 1 2 3;4 5 6;7 8 9 ];

B= A(2:3,:)

 

(2)方括号([ ])

方括号可以输入矩阵,也可用方括号删除矩阵的行和列,此时方括号[ ]代表空阵。

例2-4】用方括号删除矩阵的行和列。

A= magic(4);A

A(:,3)=[ ];

A

2.3.6数组函数

             MATLAB 的基本数组函数

函数名

功能

函数名

功能

exp

指数

angle

复数的相角

log

自然指数

conj

复数的共轭

log10

常用对数

imag

复数的虚部

sqrt

平方根

real

复数的实部

abs

绝对值(复数的模)

sign

符号函数

2.3.7矩阵函数

1、矩阵生成函数

  (1)zeros (   )函数

       zeros (   )函数能够生成元素全为0的矩阵

   (2)ones (   )函数

        ones (   )函数能够生成元素全为1的矩阵

 (3) magic (   )函数

      在MATLAB中,magic (   )函数是一个特殊的函数,该函数能够自动生成一种特别的N 阶方阵(其中,N =1,3,4,5…)叫做魔方阵,这些N阶方阵具有一个共同的奇妙特性,即每一行,每一列或对角线上的元素之和都相等。

(4)diag (  ) 函数

   diag (  ) 函数可以生成对角矩阵

(5)triu (  ) 函数

   triu (  ) 函数可以生成上三角矩形

 

(6)tril (  )函数

 tril (  )函数可以生成下三角矩形

(7)size (  )函数

 size (  )函数用来返回指定矩阵的行数和列数

 (8) eye(  )函数

eye(  ) 函数可以生成指定行数和列数的单位矩阵。

eye(  )函数和size (  )函数常常一起使用,用以生成与指定矩阵同维的单位矩阵。

2.4   m文件

M文件可以在程序编译器、文本编译器中编写,都以‘.m’为扩展名存储。MTALAB语言中的m文件可以分为命令文件和函数文件两种。

2.4.1 命令文件

命令文件比函数文件简单,没有输入参数和输出参数,只是命令行的组合。

 

例 :分别绘制花瓣图案:                   (程序见’ 2.4.1.m’) 

 

2.4.2 函数文件

用来定义一个函数,必须指出函数名、输入输出参数,并有MTALAB语句序列的操作与处理,从而生成所需要的数据。

函数文件格式包括:

(1) 函数定义行:定义函数名、输入输出参数。

(2) 帮助信息第一行:反映该m文件概括性的信息

(3) 帮助正文:从第二行到非注释行之间的注释为帮助正文

(4) 函数体:所有计算过程和输入输出参数的MTALAB代码

(5) 注释:以%开头

 

例:定义一个名为f.m的函数文件,并调用该函数。(object1.m)

 

2.4.3         m文件的调试

1、          m文件错误的种类

2、          识别错误:

2.5              程序设计

2.5.1         顺序结构

依次执行程序各条语句。(2.5.1.m)

2.5.2         分支结构

1、          条件语句(if—else--end)

[一般形式]   if  <逻辑判断语句>

            ‘真’执行 

Else

‘假’  执行  

end

 [简化形式]  if  <逻辑判断语句>   

           ‘真’执行

              End

 [嵌套形式]    if  <逻辑判断语句1>

              ‘1真’执行 

elseif  <逻辑判断语句2>

‘2真’执行

elseif  <逻辑判断语句3>

‘3真’执行

    …..

Else

‘假’  执行  

end                                                                                                                                            

例 (2.5.2.1m,a1.m)

2、开关语句(为了解决多分支判断)switch—case—end   即使多条case语句为真,程序只执行遇到的第一条case语句。

[一般形式]  switch  <选择判断量>    x

           case 选择判断值1       {}

                 判断语句1

           case 选择判断值2

                 判断语句2

          ….

          otherwise

           判断执行语句

           end

例(f0233.m)

2.5.3         循环结构

1、          循环语句1(for--end)

适用于已知循环次数,不知道循环运算目标的问题

[调用形式]  for 循环变量=<循环次数的设定>

               循环体

              end

例(2.5.3.1.m)生成一个4行5列的矩阵

2、          循环语句2(while--end)

以条件满足与否来判断循环是否结束

适用于已知循环运算目标,不知道循环次数的问题

[一般形式]   while <循环判断语句>

               循环体

              end

例   while i==5

      A(i)=2;

      end

      A(i)

3、 循环语句的终止

在while 循环语句中,必须有修改循环控制变量的命令,否则该循环陷入死循环,除非循环语句中有退出循环控制命令(如break语句)。

0 0
原创粉丝点击