参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili
一、数学运算库中的模块概览
二、与加减相关的模块
1、Add加法模块与Subtract减法模块
(1)Add模块与Subtract模块的功能基本完全相同,不同的是它们的默认配置不一样,Add模块默认有两个加数输入端口,而Subtract默认有一个减数和一个被减数输入端口。
(2)以Add模块为例,双击Add模块,可以通过修改“Icon shape”属性设置模块的形状为圆形(round)或者方形(rectangular)。
(3)以Subtract模块为例,双击Subtract模块,属性“List of signs”表示输入端口的符号排列,比如下图的Subtract模块有两个输入端口,那么就有两个符号,其中每个符号各自代表其对应输入端口的量是作为加数还是减数,“+”对应加法,“-”对应减法,至于“|”符号,它起到一个占位的作用(可认为把它也当成一个输入端口,不过这个输入端口是被堵死的)。
(4)如果将模块的“List of signs”配置成一个加号或者一个减号,那么模块将会实现求和功能或者求和的相反数功能,这时模块的输入虽然只有一个端口,但往往不止一个操作数,这个输入端口可能连接一个矩阵输入,亦或者是一根有多个信号传输的信号线。
2、Sum of Elements累加模块
(1)该模块只有一个输入端口,其作用是将输入的所有信号量全部累加,然后将结果输出。
(2)该模块实际上和Add模块、Subtract模块是差不多的,只是初始的默认配置不同,累加模块的属性“List of signs”默认配置为“+”。
(3)相比于加法模块和减法模块,累加模块可以设置运算的维度,默认情况下“Sum over”为All dimensions,即所有维度进行求和,简单说就是所有元素全部求和,如果将其更改为Specified dimension,那么可以指定元素在某个维度分别进行相加(对二维输入而言,可以按列求和或者按行求和,维度分别为1和2)。
3、Sum求和模块
Sum模块实现的功能和Add模块完全相同,甚至基本配置也是一模一样,除了默认形状为圆形、输入端口排列为“三缺一”以外,这里不再赘述。
4、Bias偏移模块
该模块的作用是对输入信号u追加一个偏移量Bias(可正可负),然后将结果输出。
三、与乘除相关的模块
1、Gain增益模块
(1)增益模块将输入u乘以一个常量K(增益),然后将结果输出,输入和增益都可以是标量、矢量或矩阵。
(2)通过配置乘法参数,可以指定增益模块的乘法规则(主要针对乘法运算中有操作数为向量或矩阵时,可以选择点乘、增益左乘输入、增益右乘输入等)。
2、Slider Gain滑动增益模块
相比于普通的增益模块,滑动增益模块可通过拖动滑块修改增益系数,为此需要设置滑动增益模块增益系数的上限(High)和下限(Low)。
3、Product乘法模块和Divide除法模块
(1)两个模块均可实现标量、向量和矩阵的乘除运算,它们可实现的功能可以说完全一样,只是默认配置略有差别,下面以Product模块为例进行介绍,并将其称为乘除法模块。
(2)该模块的输入端有乘除运算之分,默认当前“运算结果”为1,“×”输入表示该端口的量作为乘数,“÷”输入表示该端口的量作为除数,当输入量全为乘数时,模块仅显示一个“×”;运算结果从输出端中输出。
(3)将乘除法模块添加到模型文件中,双击它,可以打开其属性配置框,属性“Number of inputs”表示输入端口的数量,当该属性值为数字时默认所有端口的输入量作为乘数,如果希望一些输入量作为除数,属性“Number of inputs”的设置可以仿照加减法模块,比如该乘除法模块有两个输入端口,那么就有两个符号,其中每个符号各自代表其对应输入端口的量是作为乘数还是除数,“*”对应乘法,“/”对应除法。
(4)当输入量中有矩阵/向量时,需要考虑按元素进行矩阵点乘运算(Element-wise),还是按线性代数运算规则进行矩阵乘法运算(Matrix),不管采用哪种运算,都需要注意矩阵/向量维数的匹配。
①如果所有输入都是非标量,那么它们需要有相同的维度。
②如果其中有部分输入是标量,其它输入是向量或者矩阵(需要有相同的维度),那么这个标量将会自动进行拓展,与其它输入的向量或者矩阵进行匹配。
4、Product of Elements连乘模块
(1)当Product模块或者Divide模块的输入只有一个乘数端口时,它们都会转变为连乘模块;当Product模块或者Divide模块的输入只有一个除数端口时,它们都会转变为连除模块(不过模块库中并没有连除模块,为了方便称呼,这里把它也算作连乘模块)。
(2)连乘模块和累加模块类似,不同的是连乘模块是对所有输入信号按顺序做乘法或除法。
(3)相比于乘法模块和除法模块,连模块可以设置运算的维度,默认情况下“Multiply over”为All dimensions,即所有维度进行连乘/连除,简单说就是所有元素全部连乘/连除,如果将其更改为Specified dimension,那么可以指定元素在某个维度分别进行连乘/连除(对二维输入而言,可以按列连乘/连除或者按行连乘/连除,维度分别为1和2)。
5、Dot Product点乘模块
该模块可求出两个输入向量的数量积(两个向量的模相乘,再乘以它们夹角的余弦值),并输出之。
四、几种单目运算模块
1、Unary Minus单目减运算模块
该模块的作用是将输入信号值取相反数,然后输出之。(尽量避免溢出的情况,比如16位有符号整型数据-32768,取反后是不能表示出+32768的)
2、Abs绝对值/求模模块
该模块的作用是将输入信号取绝对值/取模,然后输出之。(尽量避免溢出的情况,比如int16类型的数据-32768,取绝对值后是不能表示出+32768的)
3、Sign符号模块
该模块只有一个输入端口,当输入信号大于0时Sign输出1,当输入信号等于0时Sign输出0,当输入信号小于0时Sign输出-1。
4、Weighted Sample Time Math加权采样时间运算模块
(1)该模块可以将输入信号u加、减、乘或除以加权采样时间,然后将结果输出,或仅输出加权采样的时间或加权采取率(加权采样的时间的倒数)。
(2)所谓加权采样时间,就是采样时间Ts乘以权值w,采样时间在仿真配置中设置。
五、数学函数和多项式模块
1、Math Function数学函数模块
(1)数学函数模块的功能是将输入作为函数参数,通过运算后将结果输出。
(2)数学函数模块提供若干种函数选择,有exp(以e为底的指数函数)、log(以e为底的对数函数)、10^u(以10为底的指数函数)、log10(以10为底的对数函数)、magnitude^2(求输入的模平方)、square(求输入的平方)、pow(输入u为底数,输入v为指数)、conj(求共轭)、reciprocal(求输入的倒数)、hypot(求两个输入的平方之和的平方根)、rem(求两个输入做除法的余数,余数的符号与被除数相同)、mod(求两个输入做除法的余数,余数的符号与除数相同)、transpose(对输入的矩阵做转置)、hermitian(求输入矩阵的埃尔米特矩阵)。
(3)模块输出信号的数据类型可选择自动(auto)、实数(real)和复数(complex)。
2、Polynomial多项式模块
(1)使用多项式模块时需要为其配置多项式系数,多项式系数按照降幂排列(即次数较高项的系数在前),组成一个矩阵。
(2)多项式模块仅有一个输入,模块根据多项式系数矩阵进行相应的计算,然后将结果输出。