(MATLAB)第四章-向量与多项式

目录

[4.1 向量](#4.1 向量)

[4.1.1 向量的生成](#4.1.1 向量的生成)

(1)直接输入法

(2)冒号法(冒号生成间隔相等的数组)

(3)利用函数linspace()创建向量

(4)利用logspace()创建一个对数分割的向量

[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'*bdot(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. 混合积运算

混合积运算:

dotcross 共同实现,如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.

相关推荐
blammmp24 分钟前
Java:数据结构-枚举
java·开发语言·数据结构
何曾参静谧36 分钟前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
暗黑起源喵42 分钟前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong1 小时前
Java反射
java·开发语言·反射
Troc_wangpeng1 小时前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的1 小时前
解析json导出csv或者直接入库
开发语言·python·json
Envyᥫᩣ1 小时前
C#语言:从入门到精通
开发语言·c#
童先生1 小时前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu1 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
Re.不晚2 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea