讲义
MATLAB不需要对实数作类型说明,所有的数都按双精度浮点方式保存。对很大及很小的数可采用科学记数法:例如1.3e-18表示
。 字符串
MATLAB也支持字符串变量。字符串由一对单引号界定。字符串在MATLAB中被看作是一个矢量,每个字符构成矢量的元素。例如str='hello'等价于str=['h','e','l','l','o']。 复数
在MATLAB中如果标识符i或j没有被定义过,那么一个复数可以简单地用两个实数a, b组成:d=a+j*b或d=a+i*b表示复数。许多人编程时习惯用i、j作循环变量,如果你的程序涉及复数运算的话,最好避免使用它们。 2.2.5 冒号“:”
设a1, a2, step是三个实数标量。则a1:step:a2表示一组实数,其中第一个是a1,
16 讲义
第二个是a1+step,依此类推,最后一个数小于等于a2。step=1时可省略成a1:a2。例如矢量[1:3]就是矢量[1,2,3],而矢量[3.3:-1.25:0]等于矢量[3.3,2.05,0.8]。 2.2.6 空矢量
没有元素的矢量称空矢量。用[]来表示。例如
>>a=[3:-2:5] a = []
的结果是一个空矢量。 2.2.7 矢量的引用
若A是一个矢量,A(k)是A的第k个元素,其中k的最小值为1,最大值为length(A)。函数length(X)的返回值是矢量X的长度。 若A是一个行矢量,B=A(2:7)是由A的第2至第7个元素组成的行矢量。C=[A,B]也是一个矢量,C的前length(A)元素正好是矢量A,后length(B)个元素正好是矢量B。
17 讲义
若A是一个矢量,B=A(1:2:length(A))是所有A的奇序数元素。例如,A=[1:100],则矢量A(1:2:100)的元素是1到100之间的所有奇数。矢量A(30:30:100)等价于[30,60,90]。矢量A([1,9,67])等价于[A(1),A(9),A(67)]。 2.3 基本运算
2.3.1 矢量与标量的加减乘除
矢量加以(+)、减以(-)、乘以(*)或除以(/)一个标量时,其结果是该矢量的每一个元素加、减、乘、除以同一标量。例如A=[1:5]+1的结果是[2,3,4,5,6],c=[3,1,1)]*3+j的结果是复数矢量[9+j,3+j,3+j,3+j]。 标量加以(+)、减以(-)或乘以(*)矢量的结果与矢量加以(+)、减以(-)或乘以(*)标量的结果相同,即矢量与标量的加、减、乘(+、-、*)运算满足交换律。但请注意:标量除以(/)矢量(a/A)是非法的。
18 讲义
2.3.2 矢量与矢量之间的加减
两个相同长度的矢量相加或相减是其对应的元素相加或相减。例如: >>a=[1:3]*5-[6:6:20]/3 a = 3 6 9
2.3.3 矢量与矢量之间的点乘“.*”与点除“./” 若A与B是两个长度相同的矢量,则A.*B是A与B的对应元素相乘,A./B是A与B的对应元素相除。例如C=[1:3].*[2,5,5]的结果是[2,10,15]。D=[4,10,2]./[2,2,1]的结果是[2,5,2]。
2.3.4 幂“^”与点幂“.^”
对于标量a、b,a^b是以a为底,b为指数的幂运算。例如2^3=8;
对于标量x及矢量A,A.^x是对矢量A的每一个元素求以x为指数的幂运算。例如: [-1,4,9].^0.5的结果是[j,2,3];
对于标量x及矢量A,x.^A是一个矢量,它的每一个元素是以x为底,以A的对应元
19 讲义
素为指数的幂。例如10.^[-2:2]的结果是[0.01,0.1,1,10,100]。
对于两个相同长度的矢量A、B,A.^B的结果是一个与A同长度的矢量。其元素是以A的对应元素为底,以B的对应元素为指数的幂。
2.3.5 inf与eps
一个标量除以零得inf。inf自身是一个标量,它加减乘除以任何实标量仍为inf。但inf/inf, inf-inf及inf*0的结果是NaN(Not a Number),它表示结果不确定。
标量eps相当于无穷小,它反映了运算的精度。对于MATLAB for Windows,eps的初始值为2.2204e-16。eps的值可任意设置,例如可设eps=1e-20或其它值。有时为了避免程序运行中除以零引起麻烦,我们可给除数加上eps,例如
20