基于labview的数组、簇和波形
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
22.数组到簇 Array To Cluster
数组函数子模板
数组函数举例
设计一个三基色的混色器
设计一个VI 产生8个随机数组成的数组, 设计一个VI,产生8个随机数组成的数组,先倒序排 VI, 按从小到大排列,并且求出最大值、最小值。 列,按从小到大排列,并且求出最大值、最小值。
使用 For 循环的自动索引功能创建数组,并 循环的自动索引功能创建数组, 用一个图形(Graph) 用一个图形(Graph)显示该数组
簇函数bundle 簇函数bundle和unbundle bundle和
应用举例
创建一个VI,检测输入簇中的Numeric1数 创建一个VI,检测输入簇中的Numeric1数 值控件值是否大于等于0,如果小于0 VI计 值控件值是否大于等于0,如果小于0,VI计 算所有控件的绝对值。如果大于等于0 算所有控件的绝对值。如果大于等于0,VI 不用计算任何控件的绝对值。无论Numeric1 不用计算任何控件的绝对值。无论Numeric1 的值是什么,VI都将所有的值乘以0.5并将结 的值是什么,VI都将所有的值乘以0.5并将结 果显示在Output Cluster上。 果显示在Output Cluster上。
Bundle函数(Cluster 子模板中)
创建簇
方法1 在框图程序中使用Bundle 方法1:在框图程序中使用Bundle 函数(Cluster子模板中) 函数(Cluster子模板中)
Bundle函数可以新建簇, Bundle函数可以新建簇, 还可在已有簇中添加元素
方法2 方法2:在前面板放置一个簇的空 框架(Control 模板的Cluster子模 框架(Control 模板的Cluster子模 板中的Cluster控件) 板中的Cluster控件) ,在框架中再 增加簇的元素 。
数组和簇的比较函数模式
在Comparison子模板中有一些比较函数在 Comparison子模板中有一些比较函数在 对数组或簇运算时有两种模式: Compare Aggregates(集合比较) Aggregates(集合比较)
更多例子请参考labview软 更多例子请参考labview软 安装路径下: ……\ LabVIEW8.6\ ……\\LabVIEW8.6\exmaples \general\Arrays.llb general\
课后练习: 课后练习:
练习1:产生一个数组,熟悉数组函数。设计一个VI用来 练习1:产生一个数组,熟悉数组函数。设计一个VI用来 连接两个数组。把一个初始化后的数组以指定的偏移量 添加到另一个数组中,并指出最后数组的中间元素。 练习2:设计一个VI,产生一个二维的随机数数组(3 练习2:设计一个VI,产生一个二维的随机数数组(3行 10列),数组产生后,对每一行进行索引并将每一行绘 10列),数组产生后,对每一行进行索引并将每一行绘 制在它自己的Graph上(前面板中应包括三个Graph指 制在它自己的Graph上(前面板中应包括三个Graph指 示器)。 练习3:设计一个VI,产生一维数组,然后将相邻的一对 练习3:设计一个VI,产生一维数组,然后将相邻的一对 元素相乘(从元素0和元素1 元素相乘(从元素0和元素1开始),最后输出结果数值。 例如,输入数组值为1 23, 10, 例如,输入数组值为1, 23, 10, 5, 7 , 11,输出 11,输出 数组为23, 数组为23, 50 ,35, 77。 35, 77。
第二步建立数据对象: 第二步建立数据对象:
把一个数据对象拖入数组壳,或者从控制模板中添加一个数据对象 到数组壳中,这样就可以创建一个数组
离索引显示最近的元素对应该 索引显示里索引值关联的元素
索引 显示
增加数组维数
在数组壳左边的指针标记上弹出菜单,选 择Add Dimension选项,增加数组的维数 Dimension选项,增加数组的维数
Βιβλιοθήκη Baidu
簇数据
定义:簇是一种可以把相同或不同类型的数据组合在一起 定义:簇是一种可以把相同或不同类型的数据组合在一起 的数据结构,类似于C语言中的结构体数据类型struct。 的数据结构,类似于C语言中的结构体数据类型struct。 我们可以把簇形象地理解为一根多芯电缆,不同的信号线 捆绑在一起进行传输,电缆中的每根线就相当于簇中的每 个元素。 例如,学生情况表中有这样一些数据:姓名(字符型)、 性别(字符型)、年龄(数字型)、党员否(布尔型)等, 形成一个簇 。
转换函数在函数面板数值运算Numeric中conversion子模板中 转换函数在函数面板数值运算Numeric中conversion子模板中
数
组
数组是同一类型数据的集合。 数组是同一类型数据的集合。 LabVIEW中的数组元素可以为任何数值类 LabVIEW中的数组元素可以为任何数值类 型、布尔型、字符串和簇。
行指针 当前指针指示的元素
列指针
4行2列元素
三维数组、n维数组 三维数组、
页指针 行指针
列指针
后面板创建数组
添加数组容器 添加数组元素
前面板创建的是数组变量(控制量或显示量) 后面板创建的是数组常量
利用循环创建数组
在For循环和While循环的边框上可以自动地累积数据,形 For循环和While循环的边框上可以自动地累积数据,形 成数组,这种特性被称为自动索引。 自动索引为打开状态时,每一次循环产生一个新的数组元 素,并存储在循环的边框上。循环结束以后,数组数据将 传送到循环外的数组指示器中。 若自动索引被设为无效,则只有最后一次循环产生的数传 到循环外 。 For循环数据出口的自动索引默认为有效。而While循环的 For循环数据出口的自动索引默认为有效。而While循环的 数据出口的自动索引默认为无效 在数据出口信道上右击,弹出菜单中可修改自动索引。
数据类型选择和转换: 数据类型选择和转换:
数值型控件对象的数据类型或格式和精度指定:右击对象, 在弹出菜单上选择“Represeutation”或”Format 在弹出菜单上选择“Represeutation”或”Format @ Precision” 不同数据类型连接时,有的可以自动转换,有的不行 可使用转换函数强制转换
数组、图表、 数组、图表、图形不能作为数组元素
数组
一个数组可以是一维的,在内存允许的情 况下,也可以是多维的,每维最多可以包 含231_1个元素。 可以通过数组指针(索引index)访问数组 可以通过数组指针(索引index)访问数组 元素,指针在0 元素,指针在0到N-1的范围内变化,而 N就是数组元素的个数。 例:10元素的一维数组 例:10元素的一维数组
关于簇的几点说明
簇有固定的大小,不像数组那样可以动态 改变 只有类型相同的簇之间可以连接
相同的顺序;相同顺序 上元素数据类型相同
簇中元素顺序是 ——N 簇中元素顺序是0——N-1
只与元素对象放入簇中的先后有关, 与前面板的显示风格无关
如何改变簇元素对象的顺序
当前的顺序 新的顺序
簇数据操作
1、Unbundle分解簇函数 Unbundle分解簇函数 2、 Bundle合成簇函数 Bundle合成簇 合成簇函数 3、 Unbundle By Name 按名称分解簇函数 4、 bundle By Name 按名称合成簇函数 5、Build Cluster Array 建立簇数组函数 6、Index & Bundle Cluster Array 按索引组合簇数组函数 7、簇和数组相互转换Cluster To Array和 Array To 簇和数组相互转换Cluster Array和 Cluster
1.用while循环创建数组时,要打开自动索引; 2.While循环是在运算之后检查条件端子; 3.要设置停止的条件。
1.数组大小 Array Size 1.数组大小 2.数组检索 Index Array 2.数组检索 3.替换数组元素Replace Array Subset 3.替换数组元素Replace 4.插入数组元素 Insert Into Array 4.插入数组元素 5.删除元素 Delete From Array 5.删除元素 6.初始化数组Initialize Array 6.初始化数组Initialize 7.创建数组 Build Array 7.创建数组 8.子数组 Array Subset 8.子数组 9.一维数组循环移位.Rotate 1D Array 9.一维数组循环移位.Rotate 10.一维数组倒置 10.一维数组倒置 Reverse 1D Array 11.一维数组搜索 11.一维数组搜索 Search 1D Array 12.一维数组分离 12.一维数组分离 Split 1D Array 13.一维数组排序 13.一维数组排序 Sort 1D Array 14.数组最大值和最小值 14.数组最大值和最小值 Array Max &Min 15.二维数组转置 15.二维数组转置 Transpose 2D Array 16.一维数组插值 16.一维数组插值 Interpolate 1D Array 17.一维数组阈值 17.一维数组阈值 Threshold 1D Array 18.一维数组接插 18.一维数组接插 Interleave 1D Array 19一维数组拆分 Decimate 1D Array 19一维数组拆分 21.簇到数组 Cluster To Array 20.改变数组维数 20.改变数组维数 Reshape Array
思考? 思考?
波形如何存储? 波形可以存储在数组中,波形上一点构成 数组中的一个元素。
数组的创建
在前面板创建 在后面板创建 通过函数或VIS动态生成 通过函数或VIS动态生成
在前面板创建数组: 在前面板创建数组:
第一步创建数组壳: 第一步创建数组壳:
从控制模板的Array&Cluster子模板中选择Array控制器,放在前面 从控制模板的Array&Cluster子模板中选择Array控制器,放在前面 板上,即建立了一个空的数组壳(Array Shell) 板上,即建立了一个空的数组壳(Array Shell)
数组、簇和波形 数组、
LabVIEW的数据类型 LabVIEW的数据类型
无符号整形: U8、U16、U32 整形 数值型 基本型 布尔型 数据类型 字符串 数组 复合型 枚举 簇数据 波形数据 有符号整形: I8、I16、I32 浮点数:单精度SGL、双精度DBL、扩展精度EXT 复数:单精度CSG、双精度CDB、扩展精度CEX
创建二维数组
使用两个For循环,把其中一个嵌套在另一个中可以生成 使用两个For循环,把其中一个嵌套在另一个中可以生成 一个二维数组。外层的For循环产生行,而内层的For循环 一个二维数组。外层的For循环产生行,而内层的For循环 产生列
生成数 组行
生成数 组列
课后思考并练习
如何用while循环创建一维或二维数组? 如何用while循环创建一维或二维数组?
数组和簇的转换
有时你会发现,将数组变为簇(或者相反)很 方便。尤其是因为LabVIEW包括的关于数组的 方便。尤其是因为LabVIEW包括的关于数组的 操作功能多于簇。例如,前面板上有一个多按钮 不能对包含以数组为 的簇,你希望颠倒这些按钮值的序。好了, 使用时要指定输出簇的大小,输 元素的簇应用此函数; Array功能正好可用,但是它仅可 Reverse 1D Array功能正好可用,但是它仅可 出簇大小必须与连接到它输入数 簇中的元素数据类型 用于数组。这没关系,你可以使用功能Cluster 用于数组。这没关系,你可以使用功能Cluster 据的元素数量匹配。否则不足或 必须一样;数组的索 to Array Array将簇转换为数组,使用Reverse 多出的簇元素会被以默认值填充 引对应簇顺序 将簇转换为数组,使用Reverse 1D 或被截断。(簇的大小默认为9) Array切换开关的值,最后再利用Array Array切换开关的值,最后再利用Array to Claster 变换回簇。
数组函数子模板
数组函数举例
设计一个三基色的混色器
设计一个VI 产生8个随机数组成的数组, 设计一个VI,产生8个随机数组成的数组,先倒序排 VI, 按从小到大排列,并且求出最大值、最小值。 列,按从小到大排列,并且求出最大值、最小值。
使用 For 循环的自动索引功能创建数组,并 循环的自动索引功能创建数组, 用一个图形(Graph) 用一个图形(Graph)显示该数组
簇函数bundle 簇函数bundle和unbundle bundle和
应用举例
创建一个VI,检测输入簇中的Numeric1数 创建一个VI,检测输入簇中的Numeric1数 值控件值是否大于等于0,如果小于0 VI计 值控件值是否大于等于0,如果小于0,VI计 算所有控件的绝对值。如果大于等于0 算所有控件的绝对值。如果大于等于0,VI 不用计算任何控件的绝对值。无论Numeric1 不用计算任何控件的绝对值。无论Numeric1 的值是什么,VI都将所有的值乘以0.5并将结 的值是什么,VI都将所有的值乘以0.5并将结 果显示在Output Cluster上。 果显示在Output Cluster上。
Bundle函数(Cluster 子模板中)
创建簇
方法1 在框图程序中使用Bundle 方法1:在框图程序中使用Bundle 函数(Cluster子模板中) 函数(Cluster子模板中)
Bundle函数可以新建簇, Bundle函数可以新建簇, 还可在已有簇中添加元素
方法2 方法2:在前面板放置一个簇的空 框架(Control 模板的Cluster子模 框架(Control 模板的Cluster子模 板中的Cluster控件) 板中的Cluster控件) ,在框架中再 增加簇的元素 。
数组和簇的比较函数模式
在Comparison子模板中有一些比较函数在 Comparison子模板中有一些比较函数在 对数组或簇运算时有两种模式: Compare Aggregates(集合比较) Aggregates(集合比较)
更多例子请参考labview软 更多例子请参考labview软 安装路径下: ……\ LabVIEW8.6\ ……\\LabVIEW8.6\exmaples \general\Arrays.llb general\
课后练习: 课后练习:
练习1:产生一个数组,熟悉数组函数。设计一个VI用来 练习1:产生一个数组,熟悉数组函数。设计一个VI用来 连接两个数组。把一个初始化后的数组以指定的偏移量 添加到另一个数组中,并指出最后数组的中间元素。 练习2:设计一个VI,产生一个二维的随机数数组(3 练习2:设计一个VI,产生一个二维的随机数数组(3行 10列),数组产生后,对每一行进行索引并将每一行绘 10列),数组产生后,对每一行进行索引并将每一行绘 制在它自己的Graph上(前面板中应包括三个Graph指 制在它自己的Graph上(前面板中应包括三个Graph指 示器)。 练习3:设计一个VI,产生一维数组,然后将相邻的一对 练习3:设计一个VI,产生一维数组,然后将相邻的一对 元素相乘(从元素0和元素1 元素相乘(从元素0和元素1开始),最后输出结果数值。 例如,输入数组值为1 23, 10, 例如,输入数组值为1, 23, 10, 5, 7 , 11,输出 11,输出 数组为23, 数组为23, 50 ,35, 77。 35, 77。
第二步建立数据对象: 第二步建立数据对象:
把一个数据对象拖入数组壳,或者从控制模板中添加一个数据对象 到数组壳中,这样就可以创建一个数组
离索引显示最近的元素对应该 索引显示里索引值关联的元素
索引 显示
增加数组维数
在数组壳左边的指针标记上弹出菜单,选 择Add Dimension选项,增加数组的维数 Dimension选项,增加数组的维数
Βιβλιοθήκη Baidu
簇数据
定义:簇是一种可以把相同或不同类型的数据组合在一起 定义:簇是一种可以把相同或不同类型的数据组合在一起 的数据结构,类似于C语言中的结构体数据类型struct。 的数据结构,类似于C语言中的结构体数据类型struct。 我们可以把簇形象地理解为一根多芯电缆,不同的信号线 捆绑在一起进行传输,电缆中的每根线就相当于簇中的每 个元素。 例如,学生情况表中有这样一些数据:姓名(字符型)、 性别(字符型)、年龄(数字型)、党员否(布尔型)等, 形成一个簇 。
转换函数在函数面板数值运算Numeric中conversion子模板中 转换函数在函数面板数值运算Numeric中conversion子模板中
数
组
数组是同一类型数据的集合。 数组是同一类型数据的集合。 LabVIEW中的数组元素可以为任何数值类 LabVIEW中的数组元素可以为任何数值类 型、布尔型、字符串和簇。
行指针 当前指针指示的元素
列指针
4行2列元素
三维数组、n维数组 三维数组、
页指针 行指针
列指针
后面板创建数组
添加数组容器 添加数组元素
前面板创建的是数组变量(控制量或显示量) 后面板创建的是数组常量
利用循环创建数组
在For循环和While循环的边框上可以自动地累积数据,形 For循环和While循环的边框上可以自动地累积数据,形 成数组,这种特性被称为自动索引。 自动索引为打开状态时,每一次循环产生一个新的数组元 素,并存储在循环的边框上。循环结束以后,数组数据将 传送到循环外的数组指示器中。 若自动索引被设为无效,则只有最后一次循环产生的数传 到循环外 。 For循环数据出口的自动索引默认为有效。而While循环的 For循环数据出口的自动索引默认为有效。而While循环的 数据出口的自动索引默认为无效 在数据出口信道上右击,弹出菜单中可修改自动索引。
数据类型选择和转换: 数据类型选择和转换:
数值型控件对象的数据类型或格式和精度指定:右击对象, 在弹出菜单上选择“Represeutation”或”Format 在弹出菜单上选择“Represeutation”或”Format @ Precision” 不同数据类型连接时,有的可以自动转换,有的不行 可使用转换函数强制转换
数组、图表、 数组、图表、图形不能作为数组元素
数组
一个数组可以是一维的,在内存允许的情 况下,也可以是多维的,每维最多可以包 含231_1个元素。 可以通过数组指针(索引index)访问数组 可以通过数组指针(索引index)访问数组 元素,指针在0 元素,指针在0到N-1的范围内变化,而 N就是数组元素的个数。 例:10元素的一维数组 例:10元素的一维数组
关于簇的几点说明
簇有固定的大小,不像数组那样可以动态 改变 只有类型相同的簇之间可以连接
相同的顺序;相同顺序 上元素数据类型相同
簇中元素顺序是 ——N 簇中元素顺序是0——N-1
只与元素对象放入簇中的先后有关, 与前面板的显示风格无关
如何改变簇元素对象的顺序
当前的顺序 新的顺序
簇数据操作
1、Unbundle分解簇函数 Unbundle分解簇函数 2、 Bundle合成簇函数 Bundle合成簇 合成簇函数 3、 Unbundle By Name 按名称分解簇函数 4、 bundle By Name 按名称合成簇函数 5、Build Cluster Array 建立簇数组函数 6、Index & Bundle Cluster Array 按索引组合簇数组函数 7、簇和数组相互转换Cluster To Array和 Array To 簇和数组相互转换Cluster Array和 Cluster
1.用while循环创建数组时,要打开自动索引; 2.While循环是在运算之后检查条件端子; 3.要设置停止的条件。
1.数组大小 Array Size 1.数组大小 2.数组检索 Index Array 2.数组检索 3.替换数组元素Replace Array Subset 3.替换数组元素Replace 4.插入数组元素 Insert Into Array 4.插入数组元素 5.删除元素 Delete From Array 5.删除元素 6.初始化数组Initialize Array 6.初始化数组Initialize 7.创建数组 Build Array 7.创建数组 8.子数组 Array Subset 8.子数组 9.一维数组循环移位.Rotate 1D Array 9.一维数组循环移位.Rotate 10.一维数组倒置 10.一维数组倒置 Reverse 1D Array 11.一维数组搜索 11.一维数组搜索 Search 1D Array 12.一维数组分离 12.一维数组分离 Split 1D Array 13.一维数组排序 13.一维数组排序 Sort 1D Array 14.数组最大值和最小值 14.数组最大值和最小值 Array Max &Min 15.二维数组转置 15.二维数组转置 Transpose 2D Array 16.一维数组插值 16.一维数组插值 Interpolate 1D Array 17.一维数组阈值 17.一维数组阈值 Threshold 1D Array 18.一维数组接插 18.一维数组接插 Interleave 1D Array 19一维数组拆分 Decimate 1D Array 19一维数组拆分 21.簇到数组 Cluster To Array 20.改变数组维数 20.改变数组维数 Reshape Array
思考? 思考?
波形如何存储? 波形可以存储在数组中,波形上一点构成 数组中的一个元素。
数组的创建
在前面板创建 在后面板创建 通过函数或VIS动态生成 通过函数或VIS动态生成
在前面板创建数组: 在前面板创建数组:
第一步创建数组壳: 第一步创建数组壳:
从控制模板的Array&Cluster子模板中选择Array控制器,放在前面 从控制模板的Array&Cluster子模板中选择Array控制器,放在前面 板上,即建立了一个空的数组壳(Array Shell) 板上,即建立了一个空的数组壳(Array Shell)
数组、簇和波形 数组、
LabVIEW的数据类型 LabVIEW的数据类型
无符号整形: U8、U16、U32 整形 数值型 基本型 布尔型 数据类型 字符串 数组 复合型 枚举 簇数据 波形数据 有符号整形: I8、I16、I32 浮点数:单精度SGL、双精度DBL、扩展精度EXT 复数:单精度CSG、双精度CDB、扩展精度CEX
创建二维数组
使用两个For循环,把其中一个嵌套在另一个中可以生成 使用两个For循环,把其中一个嵌套在另一个中可以生成 一个二维数组。外层的For循环产生行,而内层的For循环 一个二维数组。外层的For循环产生行,而内层的For循环 产生列
生成数 组行
生成数 组列
课后思考并练习
如何用while循环创建一维或二维数组? 如何用while循环创建一维或二维数组?
数组和簇的转换
有时你会发现,将数组变为簇(或者相反)很 方便。尤其是因为LabVIEW包括的关于数组的 方便。尤其是因为LabVIEW包括的关于数组的 操作功能多于簇。例如,前面板上有一个多按钮 不能对包含以数组为 的簇,你希望颠倒这些按钮值的序。好了, 使用时要指定输出簇的大小,输 元素的簇应用此函数; Array功能正好可用,但是它仅可 Reverse 1D Array功能正好可用,但是它仅可 出簇大小必须与连接到它输入数 簇中的元素数据类型 用于数组。这没关系,你可以使用功能Cluster 用于数组。这没关系,你可以使用功能Cluster 据的元素数量匹配。否则不足或 必须一样;数组的索 to Array Array将簇转换为数组,使用Reverse 多出的簇元素会被以默认值填充 引对应簇顺序 将簇转换为数组,使用Reverse 1D 或被截断。(簇的大小默认为9) Array切换开关的值,最后再利用Array Array切换开关的值,最后再利用Array to Claster 变换回簇。