抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Matlab系列基础教程2-向量与多项式,包括向量的生成与运算、多项式的生成与运算。

向量是由个数组成的有序数组,记成,叫做维向量,向量的第个分量称为

向量生成与引用

向量生成

  1. 直接输入

    向量用[]扩起来,元素之间用,或空格隔开,;则相当于换行

  2. 冒号法 t = 区间左端点 : 增量 : 区间右端点;

    1
    2
    3
    4
    5
    6
    7
    t = 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]

  3. 利用函数linspace(区间左端点, 区间右端点, 个数)

    1
    2
    3
    4
    5
    6
    linspace(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]

  4. 利用函数logspace(区间左端点, 区间右端点, 个数)

    1
    2
    3
    4
    5
    6
    logspace(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
2
x = [2:4 4,5,6 linspace(10,20,2)]; 
% (2 3 4) (4 5 6) (10 20)

向量引用

格式 说明
x(index) 表示向量中的第个元素
x(i:j) 表示向量中的第到第个元素
x(i:delta:j) 表示向量中的第到第个元素,每个取一个值
  • 向量的索引从1开始

  • 可以用另一个向量作为索引,去访问向量,向量只能包含正整数,且不能超过的索引范围

    1
    2
    3
    4
    5
    x = 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
2
3
4
5
x = 2:2:10; % [2 4 6 8 10]
x+1 % [3 5 7 9 11]
x-1 % [1 3 5 7 9]
x*2 % [4 8 12 16 20]
x/2 % [1 2 3 4 5]

矩阵运算

向量可以看做特殊的矩阵,可以用矩阵运算的规则进行向量运算

1
2
3
4
5
6
7
x = 2:2:10; % [2 4 6 8 10]
y = 1:5; % [1 2 3 4 5]
x+y % [3 6 9 12 15]
x-y % [1 2 3 4 5]
x.*y % [2 8 18 32 50] 按位乘
x./y % [2 2 2 2 2] 按位除
x*y' % 110 矩阵乘法

点积(数量积、内积)

向量的点积定义为 其中,向量和向量必须长度相同。

1
2
3
dot(a,b);
sum(a.*b);
sum(a*b');

向量积(外积、叉积、叉乘)

向量的向量积模长为 其方向与向量所在平面垂直,且遵循右手定则。

1
2
3
4
5
cross(a,b);  % 返回a和b的叉积,此时a和b必须是3维的向量
% 计算其他维度叉积可以通过help cross查看对应方法
x = [1,0,0];
y = [0,1,0];
z = cross(x,y); % z = [0,0,1]

ps. 点积的结果是一个数,向量积的结果是一个同维向量


多项式

在Matlab中,用系数向量表示相应的多项式,以便进行多项式计算: 系数中的0不能省略,如

多项式的创建

使用系数向量p,通过函数poly2sym(p)创建多项式,返回sym类型多项式

1
s = poly2sym([1,2,1]);  % x^2 + 2*x + 1

使用根向量root,通过函数poly(root)创建多项式,返回系数向量

1
2
3
root = [1 2];
p = poly(root); % [1 -3 2]
poly2sym(p) % x^2 - 3*x + 2

也可以编写字符串str,再通过eval(str)函数将其转换为sym类型。

sym类型表示“符号表达式”,也可以直接用于计算,后续的章节中包含相关内容。

多项式运算

多项式运算通过系数向量进行。

加减运算直接用+-实现,相加、相减的两个向量必须大小相等。

多项式乘法

相当于执行两个数组的卷积,用函数conv(p1,p2)实现,返回结果多项式的系数向量

1
2
3
p1 = [1 2 1];
p2 = [1 2 1];
conv(p1,p2) % [1 4 6 4 1]

多项式除法

相当于执行两个数组的解卷,用函数deconv(p,q)实现,返回结果多项式的系数向量

1
2
3
4
5
6
7
8
9
[k, r] = deconv(p, q);
% k - p除以q的商
% r - p除以q的余式
% p = conv(q, k) + r;

p1 = [1 2 1];
p2 = [1 2 1];
p = conv(p1,p2); % [1 4 6 4 1]
deconv(p, p1) % [1 2 1]

多项式求导

通过函数polyder(p)实现,返回结果多项式的系数向量

1
2
p = [1 1 1 1 1];
polyder(p) % [4 3 2 1]

评论