当前位置:网站首页>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]
边栏推荐
- Typroa alternative tool marktext
- Typroa 替代工具marktext
- Introduction to IoT Technologies: Chapter 6
- Transfer Learning Technology Training
- Meituan internal push + school recruitment written test + summary of knowledge points
- 我又造了个轮子:GrpcGateway
- 备战金九银十!2022面试必刷大厂架构面试真题汇总+阿里七面面经+架构师简历模板分享
- Performance testing of API Gateway APISIX on Google Cloud T2A and T2D
- 【JZ64 求1+2+3+...+n】
- PanGu-Coder: Function-level code generation model
猜你喜欢

Microsoft SQL server hacked, bandwidth stolen

ansible学习笔记01

RY-D1/1 Voltage Relay

Redis 主从复制

High energy output!Tencent's internal MyCat middleware manual, both theoretical and practical

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

深入浅出零钱兑换问题——背包问题的套壳

Verilog grammar basics HDL Bits training 08

Verilog语法基础HDL Bits训练 07

真正懂经营管理的CIO具备哪些特质
随机推荐
External Force Estimation Based on Time Delay Estimation with Perturbed Kalman Filter
EA中的业务对象和业务实体你分得清吗?
三个点语法和DOM观察者
Microsoft SQL server hacked, bandwidth stolen
contentDocument contentWindow,canvas 、svg,iframe
ABP学习资源整理
LeetCode_236_Last Common Ancestor of a Binary Tree
基于MySQL数据库,Redis缓存,MQ消息中间件,ES搜索引擎的高可用方案解析
I built another wheel: GrpcGateway
Jingdong school recruited written test questions + summary of knowledge points
spin lock和mutex使用场景的差异
LeetCode_236_二叉树的最近公共祖先
Leetcode 125. 验证回文串
stm32 RTC闹钟唤醒低功耗模式
C language - bitwise operations
pg_rewind 修复主备环境的时间线
Transfer Learning Technology Training
美团内推+校招笔试题+知识点总结
干货|语义网、Web3.0、Web3、元宇宙这些概念还傻傻分不清楚?(中)
电压继电器SRMUVS-100VAC-2H2D