第2章MATLAB数据及运算
2.1 变量及其操作
一、变量命名规则
1.变量名、函数名对字母大小写是敏感的
myfile与MyFile表示不同的变量
sin是MA TLAB定义的正弦函数名,但SIN、Sin都不是
2.变量名的第一个字符必须是英文字母
3.变量名最多可包含63个字符(英文、数字和下划线)
4.变量名中不能包含空格、标点
my_exemple12是合法的变量名,12exemple、_exemple12、my exemple12、my.exemple12是非法变量名
二、MATLAB默认的预定义变量
每当MATLAB启动时,不经定义和赋值就会产生一些变量,称为MATLAB 默认的预定义变量
这些变量都可以重新赋值。但最好不要对这些变量名重新赋值
例1 用键盘在MATLAB指令窗中输入以下内容
eps
eps ——机器的浮点运算误差限。PC机上eps的默认值为2.2204×10-16,若某个量的绝对值小于eps,则可以认为这个量为0。
例2 用键盘在MATLAB指令窗中输入以下内容
1/0,1.e1000,log(0)
Inf ——无穷大量+ ∞的MATLAB表示,也可以写成inf 。同样地,- ∞可以表示为- Inf 。在MATLAB 程序执行时,即使遇到了以0 为除数的运算,也不会终止程序的运行,而只给出一个“除0”警告,并将结果赋成Inf ,这样的定义方式符合IEEE 的标准。从数值运算编程角度看,这样的实现形式明显优于C语言。
例3 用键盘在MATLAB指令窗中输入以下内容
0/0,inf/inf,inf*0
注意
在MATLAB 中,即使遇到以0为除数的运算,程序也不会终止运行。这时只给出一个警告,并将结果赋给inf 或NaN
NaN —— 不定式( not a number ) ,通常由 0 / 0 运算、Inf / Inf 及其他可能的运算得出。 NaN 是一个很奇特的量,如 NaN 与Inf 的乘积仍为 NaN 。
例4 用键盘在MATLAB 指令窗中输入以下内容
n= realmax ,n= 1.7977e+309
例5 用键盘在MATLAB 指令窗中输入以下内容
m= realmin ,m=2.2251e-309
i 和 j —— 若i 或j 量不被改写,则它们表示纯虚数量j 。但在 MATLAB 程序编写过程中经常事先改写这两个变量的值,比如在循环过程中常用这两个变量来表示循环变量。如果想恢复该变量,则可以用语句 i = sqrt(-1)设置,即对 -1 求平方根。 三、MATLAB 运算符和表达式 运算符
注意
所有运算都定义在复数域上
例1 用键盘在MATLAB 指令窗中输入以下内容
u=sqrt(-4) 注意
对于方根,运算只给出处于第1象限的解 例2 用左除(\)和右除(/)计算表达式
i
27147cos 5-+
?+的值
用键盘在MATLAB 指令窗中输入以下内容
(5+cos(47*pi/180))/(1+sqrt(7)-2*i)、(1+sqrt(7)-2*i) \(5+cos(180 \47*pi)) 注意
对于标量,左除(\)或右除(/)所得到的结果是一样的 对于矩阵,左除(\)和右除(/)所得到的结果是不一样的 AX=B → A -1AX= A -1B → X=A -1B=A\B ,
XA=B → XA A -1=B A -1 →X= BA -1= B/A 表达式
表达式由变量名、运算符、函数名组成 表达式按优先级和自左向右的顺序运算
优先级从高向低的排序是:指数运算、乘除运算、加减运算 括号可以改变运算的顺序
赋值符“=”和运算符的两侧允许有空格 复数和复数矩阵
MATLAB 把复数看成一个整体来处理(不像其它程序,把实部和虚部分开处理)
虚数单位用预定义变量i 或j 表示
复数z=a+bi=re i θ直角坐标表示与极坐标表示之间的转换 real(z):给出复数z 的实部a=rcos θ imag(z):给出复数z 的虚部b=rsin θ abs(z):给出复数z 的模r=sqrt(a 2+b 2)
angle(z):以弧度为单位给出复数z 的相角θ=arctg(b/a)
例1 写出复数i
e
z i z i z 6
3212,21,43π
=+=+=表达式,计算3
21z z z z =
用键盘在MATLAB 指令窗中输入以下内容 z1= 3 + 4i %书写格式1
z2 = 1 + 2 * i %书写格式2 z3=2*exp(i*pi/6) %书写格式2 z=z1*z2/z3 注意
%是注释号,在它后面及回车之前的输入部分是非执行的注释 在格式1中,4i 表示一个完整的虚数,4和i 之间不能有空格 在格式2中,i 被看作一个预定义变量参与运算
格式1的运算速度要比格式2快,宜于在循环中采用 例2 复数矩阵的生成及运算
用键盘在MATLAB 指令窗中输入以下内容
A=[1,3;2,4]-[5,8;6,9]i A=[1,3;2,4]-[5,8;6,9]*i
B=[1+5i,2+6i;3+8*i,4+9*i] C=A*B 注意
格式1仅用于复数标量的表达,不能表达复数矩阵 例3 求上例复数矩阵C 的实部、虚部、模和相角 用键盘在MATLAB 指令窗中输入以下内容 C_real=real(C) C_imag=imag(C) C_magnitude=abs(C)
C_phase=angle(C)*180/pi %以度为单位计算相角 四、MATLAB 的数据结构
数据型、符号型、字符串型、多维数组、单元数组、类 数据型:可以单独输入,也可以赋值给数值变量
符号型:可用于公式推导,得到数学问题解析解
字符串型:C语言中字符串是用双引号括起来的,而MA TLAB字符串是用单引号括起来的
1.数据型:
双精度浮点数,占8字节(64位),指数11位,尾数53位,符号1位。
在一般情况下,数据的存储和计算都是以双精度进行的。
但是,可以用format命令改变数据在屏幕上的显示格式
例1:用format和format short格式显示π的数值
输入:format(或format short)回车
输入:pi 回车
例2:用format和format short格式显示1000π的数值
输入:format(或format short)回车
输入:1000*pi 回车
例3:分别用format long、format short e、format long e、format short g、format long g、format rat和format bank格式显示π的数值
例4:用format +格式分别显示π、π-2π和π-π的数值
五、MATLAB常用函数
例:求- 的绝对值
输入:abs(-pi)