当前位置:网站首页>Matlab基础(2)——向量与多项式
Matlab基础(2)——向量与多项式
2022-07-30 11:28:00 【Myster_KID】
Matlab基础(2)——向量与多项式
向量是由 n n n个数 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,⋯,an组成的有序数组,记成 a = ( a 1 a 2 ⋮ a n ) a=\begin{pmatrix}a_1\\a_2\\\vdots\\a_n\end{pmatrix} a=⎝⎛a1a2⋮an⎠⎞或 a T = ( a 1 , a 2 , ⋯ , a n ) a^T=(a_1,a_2,\cdots,a_n) aT=(a1,a2,⋯,an),叫做 n n n维向量,向量 a a a的第 i i i个分量称为 a i a_i ai。
向量生成与引用
向量生成
直接输入
向量用
[]扩起来,元素之间用,或空格隔开,;则相当于换行冒号法
t = 区间左端点 : 增量 : 区间右端点;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]利用函数
linspace(区间左端点, 区间右端点, 个数)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]利用函数
logspace(区间左端点, 区间右端点, 个数)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]
可以同时采用多种方法创建向量,并使用[]将它们合并
x = [2:4 4,5,6 linspace(10,20,2)];
% (2 3 4) (4 5 6) (10 20)
向量引用
| 格式 | 说明 |
|---|---|
x(index) | 表示向量中的第 i n d e x index index个元素 |
x(i:j) | 表示向量中的第 i i i到第 j j j个元素 |
x(i:delta:j) | 表示向量中的第 i i i到第 j j j个元素,每 d e l t a delta delta个取一个值 |
向量的索引从1开始
可以用另一个向量 n n n作为索引,去访问向量 x x x,向量 n n n只能包含正整数,且不能超过 x x x的索引范围
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]
向量运算
四则运算
相当于对向量中的元素分别进行四则运算
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]
矩阵运算
向量可以看做特殊的矩阵,可以用矩阵运算的规则进行向量运算
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 矩阵乘法
点积(数量积、内积)
向量 a = ( a 1 , a 2 , ⋯ , a n ) a=(a_1,a_2,\cdots,a_n) a=(a1,a2,⋯,an)和 b = ( b 1 , b 2 , ⋯ , b n ) b=(b_1,b_2,\cdots,b_n) b=(b1,b2,⋯,bn)的点积定义为
a ⋅ b = a 1 b 1 + a 2 b 2 + ⋯ + a n b n a\cdot b=a_1b_1+a_2b_2+\cdots+a_nb_n a⋅b=a1b1+a2b2+⋯+anbn
其中,向量 a a a和向量 b b b必须长度相同。
dot(a,b);
sum(a.*b);
sum(a*b');
向量积(外积、叉积、叉乘)
向量 a = ( a 1 , a 2 , ⋯ , a n ) a=(a_1,a_2,\cdots,a_n) a=(a1,a2,⋯,an)和 b = ( b 1 , b 2 , ⋯ , b n ) b=(b_1,b_2,\cdots,b_n) b=(b1,b2,⋯,bn)的向量积模长为
∣ a × b ∣ = ∣ a ∣ ⋅ ∣ b ∣ ⋅ s i n < a , b > |a\times b|=|a|\cdot|b|\cdot sin<a,b> ∣a×b∣=∣a∣⋅∣b∣⋅sin<a,b>
其方向与向量 a a a和 b b b所在平面垂直,且遵循右手定则。
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中,用系数向量表示相应的多项式,以便进行多项式计算:
a 0 x n + a 1 x n − 1 + ⋯ + a n − 1 x + a n p = [ a 0 , a 1 , ⋯ , a n ] a_0x^n+a_1x^{n-1}+\cdots+a_{n-1}x+a_n \leftrightarrow p=[a_0,a_1,\cdots,a_n] a0xn+a1xn−1+⋯+an−1x+anp=[a0,a1,⋯,an]
系数中的0不能省略,如 2 x 3 − x 2 + 3 [ 2 , − 1 , 0 , 3 ] 2x^3-x^2+3\leftrightarrow[2,-1,0,3] 2x3−x2+3[2,−1,0,3]
多项式的创建
使用系数向量p,通过函数poly2sym(p)创建多项式,返回sym类型多项式
s = poly2sym([1,2,1]); % x^2 + 2*x + 1
使用根向量root,通过函数poly(root)创建多项式,返回系数向量
root = [1 2];
p = poly(root); % [1 -3 2]
poly2sym(p) % x^2 - 3*x + 2
也可以编写字符串str,再通过eval(str)函数将其转换为sym类型。
sym类型表示“符号表达式”,也可以直接用于计算,后续的章节中包含相关内容。
多项式运算
多项式运算通过系数向量进行。
加减运算直接用+-实现,相加、相减的两个向量必须大小相等。
多项式乘法
相当于执行两个数组的卷积,用函数conv(p1,p2)实现,返回结果多项式的系数向量
p1 = [1 2 1];
p2 = [1 2 1];
conv(p1,p2) % [1 4 6 4 1]
多项式除法
相当于执行两个数组的解卷,用函数deconv(p,q)实现,返回结果多项式的系数向量
[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)实现,返回结果多项式的系数向量
p = [1 1 1 1 1];
polyder(p) % [4 3 2 1]
边栏推荐
猜你喜欢

向上管理读书笔记

C# 枚举类型 于xaml 中区别

C语言 — 位运算操作

Verilog语法基础HDL Bits训练 07

The battle-hardened programmer was also deceived by a fake programmer from a certain fish. The trust between programmers should be the highest, and he alone destroyed this sense of trust
![[ASP.NET Core] Dependency Injection for Option Classes](/img/3f/820b6e33897cf385c3206c02d741f8.png)
[ASP.NET Core] Dependency Injection for Option Classes

单片机工程师笔试题目归纳汇总

Voltage relay HDY - vac - 1 A / 1-220

域名怎么注册备案解析?

Reverse linked list - iterative inversion method
随机推荐
横向对比5种常用的注册中心,无论是用于面试还是技术选型,都非常有帮助
Difference between C# enumeration type and xaml
我又造了个轮子:GrpcGateway
2022-07-29 Gu Yujia Study Notes Exception Handling
Scheduling of combined electric-heating system based on multi-objective two-stage stochastic programming method
2022-07-29 顾宇佳 学习笔记 异常处理
The battle-hardened programmer was also deceived by a fake programmer from a certain fish. The trust between programmers should be the highest, and he alone destroyed this sense of trust
"Learning Cloud Networking with Teacher Tang" - Problem Location - The host is working but the container is not working
LeetCode_235_二叉搜索树的最近公共祖先
文本的对齐方式、行高、空间 等总结
ORA-00600 [13013], [5001], [268] 问题分析及恢复
contentDocument contentWindow,canvas 、svg,iframe
【云筑共创】华为云携手鸿蒙,端云协同,培养创新型开发者
stm32 RTC闹钟唤醒低功耗模式
Farmers on the assembly line: I grow vegetables in a factory
LCD1602 display experiment developed by single chip microcomputer
TensorFlow自定义训练函数
单片机开发之ADC0808/9信号采集
Kubernetes 入门实战03 中级篇
API 网关 APISIX 在Google Cloud T2A 和 T2D 的性能测试