Matlab系列基础教程2-向量与多项式,包括向量的生成与运算、多项式的生成与运算。
向量是由个数组成的有序数组,记成或,叫做维向量,向量的第个分量称为。
向量生成与引用
向量生成
-
直接输入
向量用
[]
扩起来,元素之间用,
或空格隔开,;
则相当于换行 -
冒号法
t = 区间左端点 : 增量 : 区间右端点;
1
2
3
4
5
6
7t = first:increment:last;
% first - 从first开始(闭区间)
% last - 到last为止(闭区间)
% increment - 增量,默认为1
t = 0:2:10; % [0 2 4 6 8 10]
t = 0:5; % [0 1 2 3 4 5]
t = 10:-2:0; % [10 8 6 4 2 0] -
利用函数
linspace(区间左端点, 区间右端点, 个数)
1
2
3
4
5
6linspace(first_value, last_value, number);
% 在指定范围内等间隔采样
% first_value - 从first_value开始(闭区间)
% last_value - 到last_value结束(闭区间)
% number - 包含number个元素
x = linspace(0,10,5); % [0 2.5 5 7.5 10] -
利用函数
logspace(区间左端点, 区间右端点, 个数)
1
2
3
4
5
6logspace(first_value, last_value, number);
% 在指定范围内等间隔采样,但区间取10的幂
% first_value - 从10^first_value开始(闭区间)
% last_value - 到10^last_value结束(闭区间)
% number - 包含number个元素
x = logspace(1,3,3); % [10 100 1000]
可以同时采用多种方法创建向量,并使用[]
将它们合并
1 | x = [2:4 4,5,6 linspace(10,20,2)]; |
向量引用
格式 | 说明 |
---|---|
x(index) |
表示向量中的第个元素 |
x(i:j) |
表示向量中的第到第个元素 |
x(i:delta:j) |
表示向量中的第到第个元素,每个取一个值 |
-
向量的索引从1开始
-
可以用另一个向量作为索引,去访问向量,向量只能包含正整数,且不能超过的索引范围
1
2
3
4
5x = 1:2:20;
n1 = [1,4,9,7];
n2 = 2:3:10; % [2,5,8]
x(n1) % [1 7 17 13]
x(n2) % [3 9 15]
向量运算
四则运算
相当于对向量中的元素分别进行四则运算
1 | x = 2:2:10; % [2 4 6 8 10] |
矩阵运算
向量可以看做特殊的矩阵,可以用矩阵运算的规则进行向量运算
1 | x = 2:2:10; % [2 4 6 8 10] |
点积(数量积、内积)
向量和的点积定义为
其中,向量和向量必须长度相同。
1 | dot(a,b); |
向量积(外积、叉积、叉乘)
向量和的向量积模长为
其方向与向量和所在平面垂直,且遵循右手定则。
1 | cross(a,b); % 返回a和b的叉积,此时a和b必须是3维的向量 |
ps. 点积的结果是一个数,向量积的结果是一个同维向量
多项式
在Matlab中,用系数向量表示相应的多项式,以便进行多项式计算:
系数中的0不能省略,如
多项式的创建
使用系数向量p
,通过函数poly2sym(p)
创建多项式,返回sym
类型多项式
1 | s = poly2sym([1,2,1]); % x^2 + 2*x + 1 |
使用根向量root
,通过函数poly(root)
创建多项式,返回系数向量
1 | root = [1 2]; |
也可以编写字符串str
,再通过eval(str)
函数将其转换为sym
类型。
sym
类型表示“符号表达式”,也可以直接用于计算,后续的章节中包含相关内容。
多项式运算
多项式运算通过系数向量进行。
加减运算直接用+-
实现,相加、相减的两个向量必须大小相等。
多项式乘法
相当于执行两个数组的卷积,用函数conv(p1,p2)
实现,返回结果多项式的系数向量
1 | p1 = [1 2 1]; |
多项式除法
相当于执行两个数组的解卷,用函数deconv(p,q)
实现,返回结果多项式的系数向量
1 | [k, r] = deconv(p, q); |
多项式求导
通过函数polyder(p)
实现,返回结果多项式的系数向量
1 | p = [1 1 1 1 1]; |