向量
向量的生成:
直接输入法、冒号法、利用matlab函数创建
-
直接输入法:
>> a=[1,2;3,4]
-
冒号法:
>> x=0:10 %默认步长为1 x = 0 1 2 3 4 5 6 7 8 9 10 >> y=0:2:10 %步长为两个冒号中间的数字,即2 y = 0 2 4 6 8 10
-
利用函数创建向量
-
利用函数linspace创建向量:
linspace 通过直接定义数据元素个数,而不是数据元素之间的增量来创建向量。
调用格式为linspace(first_value,last_value,number)
>> x=linspace(0,10,5) x = 0 2.5000 5.0000 7.5000 10.0000 >> y=linspace(100,10,5) y = 100.0000 77.5000 55.0000 32.5000 10.0000
-
利用函数logspace创建一个对数分隔的向量:
与linspace一样,直接定义数据元素个数。
调用格式为logspace(first_value,last_value,number)
表示创建一个从10first_value开始,到10last_value结束,包含number个数据元素的向量。
>> x=logspace(1,3,3) x= 10 100 1000
-
向量元素的引用
格式 | 说明 |
---|---|
x(n) | 表示向量中的第n个元素 |
x(n1:n2) | 表示向量中的第n1至n2个元素 |
>> x=0:10
x =
0 1 2 3 4 5 6 7 8 9 10
>> x(2)
ans =
1
>> x(2:5) %2:5实际是向量(2,3,4,5),x(2:5)表示x向量中第2到第5个数。
ans =
1 2 3 4
>> x(2:2:10) %x中第2、4、6、8、10个数
ans =
1 3 5 7 9
>> x([6 2 11]) %不按顺序拿取数字
ans =
5 1 10
>> x([2:5 [6 2 11]]) % 2:5 [6 2 11]=2 3 4 5 6 2 11
ans =
1 2 3 4 5 1 10
向量的运算
向量可看作一种特殊的矩阵,因此矩阵的运算对向量同样适用
四则运算
进行加减运算时,矩阵维度必须一致;进行乘除运算时,矩阵维度必须正确。
>> x=0:2:10
x =
0 2 4 6 8 10
>> y=x+1
y =
1 3 5 7 9 11
>> y-x
ans =
1 1 1 1 1 1
>> y+x
ans =
1 5 9 13 17 21
>> x.*y %相应位置上的元素相乘
ans =
0 6 20 42 72 110
>> x*y' % y'表示将y矩阵进行转置
ans =
250
点积运算
对于向量a、b,其点积可以利用a.*b得到, 也可以直接用命令dot算出
调用格式 | 说明 |
---|---|
dot(a,b) | 返回向量a和b的点积(a,b必须同维) |
dot(a,b,dim) | 返回向量a和b在dim维的点积 |
>> x=[1,2];
>> y=[3,4];
>> x.*y
ans =
3 8
>> dot(x,y) % 1×3+2×4
ans =
11
叉积运算
在空间解析几何中,两个向量叉乘的结果是一个过两箱交向量交点且垂直于向量所在平面的向量。
调用格式 | 说明 |
---|---|
cross(a,b) | 返回向量a和n的叉积。a,b必须是3维向量 |
cross(a,b,dim) | 返回向量a和n在dim维的叉积。a,b必须有相同维,size(a,dim)和size(b,dim)的结果必须为3 |
>> x=[1 2 3];
>> y=[4 5 6];
>> cross(x,y)
ans =
-3 6 -3
多项式
在高等代数中,多项式一般可表示为:a0xn+a1xn-1+···+an-1x+anxn
在matlab中,多项式的系数组成的向量表示为:p=[a0,a1,···an-1,an]
多项式的创建
-
直接输入
>> 'a*x.^n+b*x.^(n-1)' ans = 'a*x.^n+b*x.^(n-1)'
-
通过函数poly2sym来实现
调用格式:poly2sym§
>> p=[1 2 1]; >> poly2sym(p) ans = x^2 + 2*x + 1
多项式的运算
乘法运算
多项式的乘法用函数**conv(p1,p2)**来实现,相当于执行两个数组的卷积。
>> p1=1:5
p1 =
1 2 3 4 5
>> p2=2:6
p2 =
2 3 4 5 6
>> conv(p1,p2)
ans =
2 7 16 30 50 58 58 49 30
除法运算
多项式的除法用函数deconv(p1,p2)**来实现,相当于执行两个数组的解卷。
调用格式:[k,r] = deconv(p,q)
其中k返回多项式p除以q的商,r是余式。[k,r] = deconv(p,q) ⇔ p = conv(q,k) + r
求导
多项式的导数运算用polyder来实现。
调用格式: polyder§ p为多项式系数向量
>> p=[2 3 8 -5 6];
>> a=poly2sym(p)
a =
2*x^4 + 3*x^3 + 8*x^2 - 5*x + 6
>> q=polyder(p)
q =
8 9 16 -5
特殊变量
特殊变量包含单元型变量和结构型变量
单元型变量
单元型变量是以单元为元素的数组,每个元素称为单元,每个单元可包含其他类型的数组,通常由“{ }”来创建,其数据通过数组下标来引用。
单元型变量的创建
-
赋值语句直接定义
>> A=[1 2;3 4]; >> B=3+2i; >> C='asd'; >> D=2; >> E={A,B,C,D} E = 1×4 cell 数组 {2×2 double} {[3.0000 + 2.0000i]} {'efg'} {[2]}
拿取元素:(接上)
>> E{1} ans = 1 2 3 4
-
对单元的元素逐个赋值
先预分配单元型变量的存储空间,然后对变量中的元素逐个进行赋值。
实现预分配存储空间的函数是cell
- cell(N) 生成n×n阶置空的单元数组
- cell(M,N)或cell([M,N]) 生成m×n阶置空的单元数组
- cell(M,N,P,···)或者cell([M,N,P,···]) 生成m×n×p···阶置空的单元数组
- cell(size(A)) 生成与A同形的单元型的置空矩阵
>> E=cell(1,3) E = 1×3 cell 数组 {0×0 double} {0×0 double} {0×0 double} >> E{1,1} %1行1列 ans = [] >> E{1,1}=1:4 %赋值 E = 1×3 cell 数组 {1×4 double} {0×0 double} {0×0 double} >> E{1,2}='asd' E = 1×3 cell 数组 {1×4 double} {'asd'} {0×0 double}
有关单元型变量的函数表
结构型变量
结构型变量是根据属性名(field)组织起来的不同数据类型的集合。
结构型变量的创建和引用
>> m=struct('color',{'red','black'},'number',{1,2})
m =
包含以下字段的 1×2 struct 数组:
color
number
>> m(1)
ans =
包含以下字段的 1×2 struct 数组:
color:'red'
number:1
>> m(1).color
ans =
'red'