Matlab simulink建模与仿真 第八章(数学运算库)【下】

2024-09-07 14:28

本文主要是介绍Matlab simulink建模与仿真 第八章(数学运算库)【下】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili

六、圆整函数及最值函数模块

1、Rounding Function圆整函数模块

圆整函数模块的功能是将小数转换为整数,它提供了四种取整方式:

①floor:向下取整,输出距离输入小数在负无穷方向上最近的整数。

②ceil:向上取整,输出距离输入小数在正无穷方向上最近的整数。

③round:四舍五入,输出距离输入小数在无穷方向上最近的整数,输入为负数则选择负无穷方向,输入为正数则选择正无穷方向。

④fix:输出距离输入小数在朝零方向上最近的整数。

2、MinMax最值函数模块

(1)使用该模块前需要选择使用最大值函数还是最小值函数,其功能也显而易见,如果选择最大值函数,该模块会从若干输入值中选择最大的数值并将其输出,如果选择最小值函数,该模块会从若干输入值中选择最小的数值并将其输出。

(2)该模块可以配置输入端口数。

①只有一个输入端口时,该模块的输入一般是向量(最多是一维矩阵,否则会报错)或者是在同一根信号线上的若干个信号,模块会根据选择的函数从其中提取一个最值并输出之。

②当有多个输入端口时,各输入需要有相同的维度和尺寸,模块会根据选择的函数输出一个与输入有相同维度和长度的数据。

3、MinMax Running Resettable最值运行中复位模块

(1)使用该模块前需要选择使用最大值函数还是最小值函数。

(2)该模块有输入端口u和输入端口R,当R为逻辑真时,该模块的输出复位至初始条件Initial condition,否则输出为u从最后一次复位(启动仿真也算一次复位)到当前时刻为止的最大/小值。

七、三角函数及代数约束模块

1、Trigonometric Function三角函数模块

        同数学函数模块一样,三角函数模块也提供了若干种函数(其中atan2有两个参数,这里不对其进行详细介绍),该模块会根据输入参数和所选函数计算输出值。

2、Sine Wave Function正弦波函数模块

(1)正弦波可认为是一个输出随时间变化的函数图像,该模块有一个输入端口,这个端口用于输入时钟信号(这里的“时钟信号”并不是脉冲信号,在第十五章中将会进行介绍),这个时钟信号用来作为正弦波的“计时器”。

(2)正弦波的形式有两种:

①基于时间(Time based):正弦波根据随时间进行连续的变化,不过当发生数值运算导致运行时间较长的情况时,可能会有误差。

②基于采样(Sample based):每个采样时刻正弦波会进行一次离散的变化,可以设置正弦波在每个周期中的采样点个数(Samples per period),这是在间接设置正弦波的周期大小。

(3)可对正弦波的参数进行设置,如幅值(Amplitude)、偏移(Bias)等。

3、Algebraic Constraint代数约束模块

(1)代数约束模块的输入是一个包含z的多项式,该模块根据约束条件Constraint(f(z)=0或f(z)=z)会求解出未知数z并将其输出,这也意味着输入中会包含输出,所以该模块通常会处在一个闭环中。

(2)举例:求解方程

八、分配模块和变形模块

1、Assignment分配模块

(1)分配模块的功能是对输入矩阵中某些指定位置的元素进行替换,Y0端口输入的是原始矩阵,U端口输入的是替换元素。

(2)输出数据的维度需要手动配置。

(3)选择输出数据的维度以后,需要配置被替换元素在原始矩阵中的位置,其索引方式有基于0(Zero-based)和基于1(One-based)两种,也就是第一个元素的下标为0或1,如下图所示,下图的索引方式为基于1,被替换元素在矩阵中的位置为第一行第二列。

(4)分配模块不仅可以只替换原始矩阵的一个元素,还可以同时替换原始矩阵中的多个元素,具体有以下几种办法:

①默认的下标选项为下标向量(Index vector),在此选择方式下,可以用向量的方式选中多个位置,向量的元素为用于索引的下标。

②下标选项可以更改为“Assign all”,这样就可以直接选中整个维度上的元素。

③下标选项可以更改为“Starting index”,这样,同一个维度中从配置的下标开始往后的元素将全部被选中(这里被选中不代表一定会被替换),输入U需要是一个各维度上元素数均不大于被选中子矩阵的矩阵,分配模块会从被选中子矩阵的第一行第一列开始,将输入U的矩阵替换进原始矩阵中。

(5)用于索引元素的下标,不仅可以通过双击模块进行配置,还可以从外部输入,只要将下标选项更改为端口模式即可。

2、Reshape变形模块

(1)变形模块的作用是将输入的矩阵进行维度上的变换,可以认为是将其中的元素按列的顺序全部排成一维向量,然后根据配置的输出维度和输出尺寸进行重新排列,输出维度可选择自定义方式(Customize),此种方式包含前三种方式,在Output dimensions中写明输出尺寸即可。

(2)除了在模块中配置输出尺寸外,还可以让外部输入Ref决定输出尺寸,输出维度选择“Derive from reference input port”,变形模块会直接参照Ref的尺寸对输入U进行处理,至于Ref的内容,变形模块并不关心。

九、拼接模块

1、Matrix Concatenate矩阵拼接模块

(1)矩阵拼接模块的作用已在其名称中体现,该模块有向量模式(Vector)和多维数组模式(Multidimensional array)两种模式,在向量模式中,输入端口输入的数据只能是一维数据,输出的数据要么是单行要么是单列,而多维数组模式输出的数据不局限于单行/单列,而且可以指定输入矩阵的拼接方式,以二维矩阵为例,Concatenate dimension = 1时输入的矩阵在竖直方向上进行拼接,Concatenate dimension = 2时输入的矩阵在水平方向上进行拼接。

(2)多维数组模式下,两个矩阵能拼接的前提是尺寸匹配,比如一个两行三列和一个三行三列的矩阵,它们是不能在水平方向进行拼接的。

2、Vector Concatenate向量拼接模块

(1)向量拼接模块的作用已在其名称中体现,该模块有向量模式(Vector)和多维数组模式(Multidimensional array)两种模式,在向量模式中,输入端口输入的数据只能是一维数据,输出的数据要么是单行要么是单列,而多维数组模式输出的数据不局限于单行/单列,而且可以指定输入矩阵的拼接方式,以二维矩阵为例,Concatenate dimension = 1时输入的矩阵在竖直方向上进行拼接,Concatenate dimension = 2时输入的矩阵在水平方向上进行拼接。

(2)向量模式下,列向量只能与列向量合并,行向量只能与行向量合并,列向量与行向量在没有转置的前提下不能够相互合并。

十、复数相关模块

1、Complex to Magnitude-Angle标准复数转换幅值-相角模块

        该模块输入是一个复数,它会将该复数的幅值和相角(弧度制)分别进行输出。(可以选择仅输出幅值或者相角)

2、Magnitude-Angle to Complex幅值-相角转换标准复数模块

        该模块的作用与Complex to Magnitude-Angle模块正好相反,它会根据输入的幅值和相角(弧度制)得出标准形式的复数并输出之。(可以选择幅值从外部输入,相角在模块中配置,也可以选择相角从外部输入,幅值在模块中配置)

3、Complex to Real-Imag标准复数转换实部-虚部模块

        该模块输入是一个复数,它会将该复数的实部和虚部分别进行输出。(可以选择仅输实部或者虚部)

4、Real-Imag to Complex实部-虚部转换标准复数模块

        该模块的作用与Complex to Real-Imag模块正好相反,它会根据输入的实部和虚部得出标准形式的复数并输出之。(可以选择实部从外部输入,虚部在模块中配置,也可以选择虚部从外部输入,实部在模块中配置)

这篇关于Matlab simulink建模与仿真 第八章(数学运算库)【下】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145305

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

uva 575 Skew Binary(位运算)

求第一个以(2^(k+1)-1)为进制的数。 数据不大,可以直接搞。 代码: #include <stdio.h>#include <string.h>const int maxn = 100 + 5;int main(){char num[maxn];while (scanf("%s", num) == 1){if (num[0] == '0')break;int len =

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName