目录
[4.1 向量](#4.1 向量)
[4.1.1 向量的生成](#4.1.1 向量的生成)
[4.1.2 向量元素的引用](#4.1.2 向量元素的引用)
[4.1.3 向量运算](#4.1.3 向量运算)
[1. 四则运算](#1. 四则运算)
[2. 点积运算](#2. 点积运算)
[3. 叉积运算](#3. 叉积运算)
[4. 混合积运算](#4. 混合积运算)
[4.2 多项式](#4.2 多项式)
[4.2.1 多项式的创建](#4.2.1 多项式的创建)
[1. 基本格式:poly2sym(p)](#1. 基本格式:poly2sym(p))
[2. 用多项式的根构造多项式](#2. 用多项式的根构造多项式)
[4.2.2 数值多项式·四则运算](#4.2.2 数值多项式·四则运算)
[1. 加减法:相加减的向量阶次必须相同(低阶次多项式必须用0补齐)](#1. 加减法:相加减的向量阶次必须相同(低阶次多项式必须用0补齐))
[2. 乘法:用conv(p1,p2)实现,相当于执行两个数组的卷积](#2. 乘法:用conv(p1,p2)实现,相当于执行两个数组的卷积)
[3. 除法:用deconv(p1,p2)实现,相当于执行两个数组的解卷](#3. 除法:用deconv(p1,p2)实现,相当于执行两个数组的解卷)
补充:多项式乘法问题(多项式卷积,convolution)------
[4.2.3 多项式导数运算 polyder(p)](#4.2.3 多项式导数运算 polyder(p))
[4.3 特殊变量](#4.3 特殊变量)
[4.3.1 单元型变量](#4.3.1 单元型变量)
[1. 单元型变量的创建](#1. 单元型变量的创建)
[(1)赋值语句直接定义 定义需要大括号,元素之间用","或";"隔开](#(1)赋值语句直接定义 定义需要大括号,元素之间用“,”或“;”隔开)
[(2) 对单元的元素逐个赋值](#(2) 对单元的元素逐个赋值)
[2. 单元型变量的引用](#2. 单元型变量的引用)
[3. MATLAB语言中关于单元型变量的函数](#3. MATLAB语言中关于单元型变量的函数)
[4.3.2 结构型变量(⭐)](#4.3.2 结构型变量(⭐))
[1. 结构体变量的创建和引用](#1. 结构体变量的创建和引用)
[2. 结构体变量的相关函数](#2. 结构体变量的相关函数)
4.1 向量
4.1.1 向量的生成
(1)直接输入法
[向量元素,逗号/空格间隔行向量;分号分隔生成列向量]
(2)冒号法(冒号生成间隔相等的数组)
基本格式:x=first:increment (数据元素增量) :last
若增量为1简写为x=first:last
(3)利用函数linspace()创建向量
基本格式:linspace(first_value,last_value,number)
表示:创建一个从first_value开始到last_value结束一共包括number个元素的向量
(4)利用logspace()创建一个对数分割的向量
基本格式:logspace(first_value,last_value,number)
表示:创建一个从10first_value开始到10last_value结束一共包括number个元素的向量
4.1.2 向量元素的引用
|--------------|----------------------------------------------------|
| 格式 | 说明 |
| x(n) | 表示向量 x 中第 n 个元素 |
| x(n1:n2) | 表示向量 x 中的第 n1 到 n2 个元素 |
4.1.3 向量运算
1. 四则运算
2. 点积运算
a'*b 或dot(a,b) (a、b必须同维);dot(a,b,dim)(表示a、b在dim维的点积)
3. 叉积运算
叉积运算:
计算机中常用方法将叉乘改为点乘方法:
**cross(a,b)**注意a、b必须是3维向量
cross(a,b,dim) a、b在dim维的叉积且size(a,dim)、size(b,dim)必须为3
4. 混合积运算
混合积运算:
由dot 和cross 共同实现,如d=dot(a,cross(b,c))
4.2 多项式
n次多项式:
系数向量表示(零不可省略)(注意从高阶到低阶):
4.2.1 多项式的创建
1. 基本格式:poly2sym(p)
2. 用多项式的根构造多项式
输入n阶多项式的根(矩阵):root=[x1 x2 ... xn](可以有复数)
p=poly(root) ( poly - 具有指定根的多项式或特征多项式 ,此 MATLAB 函数(其中 root 是向量)返回多项式的系数,其中多项式的根是 root 的元素。)
poly2sym(p)
4.2.2 数值多项式·四则运算
1. 加减法:相加减的向量阶次必须相同**(低阶次多项式必须用0补齐)**
2. 乘法:用conv(p1,p2) 实现,相当于执行两个数组的卷积
3. 除法:用**deconv(p1,p2)**实现,相当于执行两个数组的解卷
格式:[k,r]=deconv(p,q) k为多项式p除以q的商,r是余式**(** p=conv(q,k)+r )
补充:多项式乘法问题(多项式卷积,convolution)------
已知两个多项式相乘,得到多项式:
多项式系数:
因此有:
注:如果把以上所有式子中的x化妆成为z,上述推导过程其实就是论证Z变换的性质之一"时域卷积对应于z域相乘"的过程
4.2.3 多项式导数运算 polyder(p)
示例:
Matlab
>> p=1:10
>> p1=poly2sym(p)
>> m1=polyder(p)
>> p2=poly2sym(m1)
p =
1 2 3 4 5 6 7 8 9 10
p1 =
x^9 + 2*x^8 + 3*x^7 + 4*x^6 + 5*x^5 + 6*x^4 + 7*x^3 + 8*x^2 + 9*x + 10
m1 =
9 16 21 24 25 24 21 16 9
p2 =
9*x^8 + 16*x^7 + 21*x^6 + 24*x^5 + 25*x^4 + 24*x^3 + 21*x^2 + 16*x + 9
4.3 特殊变量
4.3.1 单元型变量
单元型变量是以单元为元素的数组,每个元素称为单元,每个单元可以包括其他类型的数组如实数矩阵、字符串、复数向量。以"{}"创建,数据通过数组下表引用
1. 单元型变量的创建
(1)赋值语句直接定义 定义需要大括号,元素之间用","或";"隔开
示例:
Matlab
>> A=[1 2;3 4];
>> B=3+2*i;
>> C='efg';
>> D=2;
>> E={A,B;C,D}
E =
2×2 cell 数组
{2×2 double} {[3.000000000000000 + 2.000000000000000i]}
{'efg' } {[ 2]}
MATLAB语言会根据显示的需要决定是将单元元素完全显示,还是只显示存储量来代替。
(2) 对单元的元素逐个赋值
实现预分配存储空间的函数时cell() 。在MATLAB中可以用函数**cell()**生成单元数组:
1)**cell(N)**生成一个n*n阶的置空单元数组
2)**cell(M,N)**或者cell([M,N])生成一个m*n阶的置空单元数组
3)cell(M,N,P...) 或者**cell([M,N,P...])**生成一个m*n*p*...阶置空的单元数组
4)**cell(size(A))**生成与A形式相同的单元型置空矩阵
示例:
Matlab
>> E=cell(1,3);
>> E{1,1}=[1:4];
>> E{1,2}=3+2*i;
>> E{1,3}=2;
>> E
E =
1×3 cell 数组
{[1 2 3 4]} {[3.000000000000000 + 2.000000000000000i]} {[2]}
2. 单元型变量的引用
变量的引用应采用大括号如{i,j}(引用该元素内的具体内容),而通过小括号引用只显示该元素的压缩形式
接上例:
Matlab
>> E{1} %引用单元型变量的第一个单元,显示该单元的具体值
ans =
1 2 3 4
>> E(1) %引用单元型变量的第一个单元,显示该单元的压缩形式
ans =
1×1 cell 数组
{[1 2 3 4]}
3. MATLAB语言中关于单元型变量的函数
|-----------------|---------------------------|
| 函数名 | 说明 |
| cell | 生成单元形变量 |
| cellfun | 对单元型变量中的元素作用的 |
| celldisp(C) | 显示单元型变量 C 的内容 |
| cellplot | 用图形显示单元型变量的内容 |
| num2cell | 将数值转换成单元型变量 |
| deal | 输入输出处理 |
| cell2struct | 将单元型变量转换成结构型变量 |
| struct2cell | 将结构型变量转换成单元型变量 |
| iscell | 判断是否为单元型变量 |
| reshape | 改变单元数组的结构 |
注:
(1)**celldisp(C,'name')**在窗口中显示的单元型变量的内容为name(而不是ans)
(2)H=cellplot(C) 返回一个向量,这个向量综合体现了表面、线和句柄;
**H=cellplot(C,'lengend')**增加了图形注释legend
示例:
Matlab
>> E=cell(1,3);
>> E{1,1}=[1:4];
>> B=3+2*i;
>> E{1,2}=B;
>> E{1,3}=2;
>> cellfun('islogical',E) %判断单元型变量E中的元素是否为逻辑变量
>> cellplot(E) %使用图形化的方式显示单元变量
4.3.2 结构型变量(⭐)
1. 结构体变量的创建和引用
结构体变量是根据属性名(field)组织起来的不同数据类型的集合。结构的任何一个属性可以包括不同的数据类型,如字符串、矩阵等。采用**struct()**构建:
|-----------------------------------------------------|-------------------------|
| 调用格式 | 说明 |
| s=struct('field1',{},'field2',{},...) | 表示建立一个空的结构数组,不含数组 |
| s=struct('field1',values1,'field2',values2,...) | 表示建立一个具有属性名和数据的结构数组 |
示例:
Matlab
>> mn=struct('color',{'red', 'black'},'number',{1,2})
>> mn(1) % 结构型变量数据通过属性名来引用
>> mn(2)
>> mn(2).color
mn =
包含以下字段的 1×2 struct 数组:
color
number
ans =
包含以下字段的 struct:
color: 'red'
number: 1
ans =
包含以下字段的 struct:
color: 'black'
number: 2
ans =
'black'
2. 结构体变量的相关函数
|---------------|-------------------|
| 函数名 | 说明 |
| struct | 创建结构体变量 |
| fieldname | 得到结构体变量的属性名 |
| getfield | 得到结构体变量的属性值 |
| setfield | 设定结构体变量的属性值 |
| rmfield | 删除结构体变量的属性 |
| isfield | 判断是否为结构体变量的属性 |
| isstruct | 判断是否为结构体变量 |
参考资料:
[1] 天工在线. MATLAB2020从入门到精通·实战案例版[M]. 北京: 中国水利水电出版社, 2020.