《LabVIEW工程实践自编讲义第六讲ppt课件》由会员分享,可在线阅读,更多相关《LabVIEW工程实践自编讲义第六讲ppt课件(60页珍藏版)》请在金锄头文库上搜索。
1、第六讲 数组与簇 6.1 6.1 数组数组 数组是数组是LabVIEWLabVIEW常用的数据类型之一。一个数组可以是一常用的数据类型之一。一个数组可以是一维或者多维,如果必要,每维最多可有维或者多维,如果必要,每维最多可有2 231311 1个元素。可以通个元素。可以通过数组索引访问其中的每个元素。索引的范围是过数组索引访问其中的每个元素。索引的范围是0 0到到n-1n-1。数组。数组的元素可以是数据、字符串等,但所有元素的数据类型必须一的元素可以是数据、字符串等,但所有元素的数据类型必须一致。致。 6.1.1 6.1.1 数组的组成与创建数组的组成与创建 1. 1.数组的组成数组的组成 由
2、索引、数据和数据由索引、数据和数据 类型构成。其中数据类型构成。其中数据 类型隐含在数据中。类型隐含在数据中。第六讲第六讲 数组、簇数组、簇 第六讲 数组与簇 2. 2. 数组的创建数组的创建从前面板上创建数组:从前面板上创建数组:打开前面板,在控件打开前面板,在控件新式新式数数组,矩阵与簇组,矩阵与簇数组,如图。数组,如图。 第六讲 数组与簇 再在里面放置一个数值输入控件即可,如图:第六讲 数组与簇 如果要显示更多的数组成员数组成员,在工具选项板上选择定位工具,在数组的边框停滞,当出现网状拐角后就可以拖动增加或减少显示区域。如图:如果要增加或减少数组的维维数数,可以在索引框的快捷菜单上执行,
3、如图:第六讲 数组与簇 增加后如图:对于二维数组来说,索引框中上一个为行索引,下一个为列索引。第六讲 数组与簇 2程序框图上创建数组:程序框图上创建数组:在程序框图上创建数组和在前面板上创建数组有点类似,也首先创建一个外壳,然后再放入数值型常量,枚举或环形常量,字符串型常量以及布尔型常量等。刚刚放入常量后,所有的数组成员显示为灰色,可以用操作工具依次给它们赋值,赋值范围以外的数组成员保持灰色不变。如果跳过一些数组成员给后面的成员赋值,则前面的成员自动赋一个系统默认的值。 先在程序框图上放置一个数组常量,位于函数编程数组数组常量,如图:第六讲 数组与簇 然后再往里放入一个数值常量,完成后如图:第
4、六讲 数组与簇 6.1.26.1.2数组函数数组函数 对一个数组进行操作,无非是求数组的长度、取出数组对一个数组进行操作,无非是求数组的长度、取出数组中的元素、替换数组中的元素或初始化数组等各种运算。中的元素、替换数组中的元素或初始化数组等各种运算。第六讲 数组与簇 1.1.数组大小数组大小Array SizeArray Size函数函数 返回输入数组中的元素个数。返回输入数组中的元素个数。第六讲 数组与簇 2.2.索引数组索引数组 Index Array Index Array函数函数 用于访问数组中的某个元素。用于访问数组中的某个元素。下图显示了一个索引函数的例子,它用于访问数下图显示了一
5、个索引函数的例子,它用于访问数组中的第三个元素。组中的第三个元素。第六讲 数组与簇 将一个二维数组与将一个二维数组与Index ArrayIndex Array函数相连,函数相连,Index Index ArrayArray就会含就会含2 2个索引端子。将一个三维数组与个索引端子。将一个三维数组与Index Index ArrayArray函数相连,函数相连,Index ArrayIndex Array就会含就会含3 3个索引端子。余类个索引端子。余类推。推。 可以使用的索引端的符号是一个黑方快,被禁止使可以使用的索引端的符号是一个黑方快,被禁止使用的索引端(用的索引端(Disable Ind
6、exingDisable Indexing)是一个空心的小方框。)是一个空心的小方框。 第六讲 数组与簇 可以从一个三维数组中提取一个二维数组,方法是禁可以从一个三维数组中提取一个二维数组,方法是禁止两个索引端子,或者通过禁止一个索引端子提取一个止两个索引端子,或者通过禁止一个索引端子提取一个一维数组。下图显示了从三维数组提取数组的各种方法。一维数组。下图显示了从三维数组提取数组的各种方法。第六讲 数组与簇 3.3.数组子集数组子集Array SubsetArray Subset函数函数 选取数组或者矩阵的某个部分。选取数组或者矩阵的某个部分。第六讲 数组与簇 该函数可以返回从某个指针开始的部
7、分数组,并包该函数可以返回从某个指针开始的部分数组,并包括了长度元素。下图显示了一些数组子集的例子,注意,括了长度元素。下图显示了一些数组子集的例子,注意,数组索引从数组索引从0 0开始。开始。第六讲 数组与簇 4.4.替换数组元素替换数组元素Replace Array ElementReplace Array Element函数函数 替换数组中的某个元素。替换数组中的某个元素。第六讲 数组与簇 5.5.改变数组维数改变数组维数Reshape ArrayReshape Array函数函数 改变输入数组的维数。改变输入数组的维数。第六讲 数组与簇 6.6.初始化数组初始化数组Initialize
8、 ArrayInitialize Array函数函数 对数组进行初始化,数组中所有的元素相同。对数组进行初始化,数组中所有的元素相同。第六讲 数组与簇 7.7.建立数组建立数组Build ArrayBuild Array函数函数 建立一个新数组的维数。建立一个新数组的维数。第六讲 数组与簇 8.8.移位一维数组移位一维数组Rotate 1D ArrayRotate 1D Array函数函数 将一维数组的最后将一维数组的最后n n各元素移至数组前面。各元素移至数组前面。第六讲 数组与簇 9.9.排序一维数组排序一维数组Sort 1D ArraySort 1D Array函数函数 将一维数组中的数
9、据按升序排列。将一维数组中的数据按升序排列。第六讲 数组与簇 10.10.颠倒一维数组颠倒一维数组Reverse 1D ArrayReverse 1D Array函数函数 将一维数组的元素前后颠倒。结合将一维数组的元素前后颠倒。结合Sort 1D ArraySort 1D Array函函数,可实现降序排列。数,可实现降序排列。第六讲 数组与簇 11.11.转置二维数组转置二维数组Transpose 2D ArrayTranspose 2D Array函数函数 将二维数组进行转置输出。将二维数组进行转置输出。第六讲 数组与簇 12.12.搜索一维数组搜索一维数组Search 1D ArraySe
10、arch 1D Array函数函数 搜索指定元素在一维数组中的位置。搜索指定元素在一维数组中的位置。第六讲 数组与簇 13.13.求数组的最大值和最小值求数组的最大值和最小值Array Max & MinArray Max & Min函数函数 返回数组中的最大值和最小值,以及它们在数组中的返回数组中的最大值和最小值,以及它们在数组中的位置。位置。第六讲 数组与簇 14.14.截断一维数组截断一维数组Split 1D ArraySplit 1D Array函数函数 将一维数组在指定位置截断,分成两个一维数组。当将一维数组在指定位置截断,分成两个一维数组。当索引位置小于索引位置小于0 0时,第一个
11、子数组为空;当索引位置大于时,第一个子数组为空;当索引位置大于数组长度时,第二个子数组为空;数组长度时,第二个子数组为空;第六讲 数组与簇 15.15.一维数组的插值一维数组的插值Interpolate 1D ArrayInterpolate 1D Array函数函数 根据给定的小数索引值,确定对应的数组元素值。根据给定的小数索引值,确定对应的数组元素值。第六讲 数组与簇 16.16.一维数组的阈值一维数组的阈值Threshold 1D ArrayThreshold 1D Array函数函数 是线性插值的逆过程,根据给定的数值,确定对应的是线性插值的逆过程,根据给定的数值,确定对应的索引值。索
12、引值。第六讲 数组与簇 17.17.插入一维数组插入一维数组Interleave 1D ArrayInterleave 1D Array函数函数 将输入端口的一维数组插入到输出的一维数组中。插将输入端口的一维数组插入到输出的一维数组中。插入的顺序为:按从上到下的原则,依次取出输入数组的入的顺序为:按从上到下的原则,依次取出输入数组的第第0 0各元素,放入输出数组中;然后是第各元素,放入输出数组中;然后是第1 1 各元素,依此各元素,依此类推。类推。第六讲 数组与簇 18.18.拆分一维数组拆分一维数组Decimate 1D ArrayDecimate 1D Array函数函数 是插入一维数组是
13、插入一维数组Interleave 1D ArrayInterleave 1D Array函数的反运算。函数的反运算。将输入的一维数组拆分为多个一维数组。拆分原则:第将输入的一维数组拆分为多个一维数组。拆分原则:第1 1个子数组:元素为输入数组的个子数组:元素为输入数组的0,n,2n,3n, 0,n,2n,3n, 第第2 2个子数组:元素为输入数组的个子数组:元素为输入数组的0,n+1,2n+1,3n+1, 0,n+1,2n+1,3n+1, 第第3 3个子数组:依此类推。个子数组:依此类推。第六讲 数组与簇 第六讲 数组与簇 例一:例一:设计步骤如下:创建一个For循环,循环次数定为100次在数
14、学函数中调用Sinc函数,重复端子作为输入,输出用一个波形图表和一个数组显示。如图:第六讲 数组与簇 例二:创建一个二维数组例二:创建一个二维数组第六讲 数组与簇 现在已经有两组一维数组了,可以使用创建数组函数就可以把他们创建为二维数组,在一个波形图中显示,如图:第六讲 数组与簇 可以用鼠标对该函数进行拉伸操作,即可有两个输入端子了。程序框图如图:第六讲 数组与簇 前面板运行结果如图:第六讲 数组与簇 例三:例三:初始化和分离数组:利用For循环的自动索引功能从一个输入数组中依次抽取各个元素,如果是大于0的数则添加到正数数组,如果是小于0的则添加到负数数组。并分别计算两个数组中各自有多少个元素
15、。如图所示便是程序框图第六讲 数组与簇 下图是在选择结构中为“假”时的情景第六讲 数组与簇 其中一共用到了三个数组函数,一个初始化函数,一个创建函数,一个数组大小函数,运行时前面板如图:第六讲 数组与簇 6.1.3 6.1.3 数组的特点数组的特点 1.LabVIEW 1.LabVIEW会自动确定会自动确定数组长度,最多可达(数组长度,最多可达(2 231311 1)个元素。)个元素。 。 2. 2.数组中元素的数据类型必须相同。数组中元素的数据类型必须相同。第六讲 数组与簇 6.2 6.2 簇簇 簇是簇是LabVIEWLabVIEW中一个比较特别的数据类型,它可以将几种不同中一个比较特别的数
16、据类型,它可以将几种不同的数据类型集中到一个单元中形成一个整体。的数据类型集中到一个单元中形成一个整体。 如有关一个学生的信息有:学号、姓名、性别、年龄、成绩和如有关一个学生的信息有:学号、姓名、性别、年龄、成绩和家庭地址等。如将这些项目分别定义为相互独立的简单变量,不家庭地址等。如将这些项目分别定义为相互独立的简单变量,不能反映它们之间的内在联系。而应当把它们组合成一个组合项,能反映它们之间的内在联系。而应当把它们组合成一个组合项,这种数据结构就是簇。这种数据结构就是簇。 上述数据的上述数据的C C语言结构描述:语言结构描述: 上述数据的上述数据的LabVIEWLabVIEW结构描述:结构描
17、述: struct student struct student int num; int num; char name20; char name20; char sex; char sex; int age; int age; float score; float score; char addr30; char addr30; 第六讲 数组与簇 簇是一种类似数组的数据结构,用于分组数据。簇和数组有着重要的差别,其中一个重要差别是,簇可以包含不同的数据类型,而数组仅可以包含相同的数据类型。例如,一个数组可以包含10个数字指示器,一个簇却可以包含一个数字控件,一个开关和一个字符串控件。 尽管簇
18、和数组的元素都是有序存放的,但访问簇的元素最好是通过释放的方法同时访问其中部分或全部元素,而不是通过索引一次访问一个元素。簇和数组的另一个差别是簇具有固定的大小。 簇通常用于将出现在框图上的有关数据元素分组管理。因为簇在框图中仅用唯一的连线表示,所以对于减少连线混乱和子VI需要的连接器端子个数,使用簇有着积极的效果。可以将簇看做是一捆连线,线缆中每一个连线表示簇的不同元素。在框图上,只有当簇具有相同类型,相同元素数量和相同元素顺序时,才可以将簇的子端连接。 第六讲 数组与簇 6.2.1 6.2.1 簇的簇的创建创建 簇的创建框位于前面板中的控件簇的创建框位于前面板中的控件新式新式数组数组, ,
19、矩阵和簇矩阵和簇簇。簇。第六讲 数组与簇 然后就可以往簇的框中添加各种类型的控件了,例如现在要建立一个学生的记录信息,包括学生的姓名,学号,性别和年龄.这就需要在簇外壳里依次放入两个字符串输入控件,一个数字控件和一个布尔控件.如图:第六讲 数组与簇 与数组的创建类似,簇也可以从程序框图中创建,先在程序框图上放置一个簇外壳,然后就可以在簇外壳里放置各种数据类型常数。如图:簇内对象的大小是可以调整的,右击簇边界,在弹出的快捷菜单中可以选择各种调节操作,如图: 第六讲 数组与簇 选择调整为匹配大小,即可缩小簇的边框,如图为调整后的结果: 簇结构中的元素排列是按照它们放置的先后来排序的,它与簇内元素的
20、位置无关。放入簇内的第一个元素序号为0,第二个元素序号是1,依次向下排列。如果删除了一个元素,序号将重新自动调整。簇的排序很重要,它直接影响着后面将要介绍的“捆绑”以及“接触捆绑”函数的端口顺序,如果要将一个簇与另一个簇连接,这两个簇的序和类型必须相同。 第六讲 数组与簇 如果想要改变簇内元素的排列顺序,可以右击簇结构的边框,在弹出的快捷菜单中执行“重新排序簇中控件”,如图:第六讲 数组与簇 这时鼠标会变成一个带“”号的手柄箭头,黑框指出新设置的排列序号,白框表示原先的排列序号,可以改变标题栏上的“单击设置”内容,然后单击簇元素即可设置新的序号。设置完毕后单击工具栏上的“ ”按钮确定更改,如果
21、想恢复原先设定值,单击“ ”取消设置。 6.2.2 簇函数簇函数 簇函数,主要是访问簇中的各个元素,或由不同类型簇函数,主要是访问簇中的各个元素,或由不同类型但相互关联的数据组成簇。但相互关联的数据组成簇。簇函数的模版如图:第六讲 数组与簇 簇函数中最主要的就是构造打包生成簇的“捆绑”函数,还有从簇中解包提取簇中元素的“解除捆绑”函数。它们是根据簇成员的顺序来进行操作的,这也说明了簇内成员顺序排列的重要性。例1. 创建簇,解包簇,再打包簇该例的目的是学习使用簇的两个基本函数,如图:首先放置一个簇外壳到前面板上,将标签内容改为“输入簇”簇函数举例:簇函数举例:第六讲 数组与簇 在簇外壳中依次放入
22、字符串控件“Name”,布尔控件“Sex”,数字输入控件“Pay”以及字符串控件“Address”,通过这些簇元素来组成某一公司内一名员工的工资记录。如图:切换到程序框图,放置一个“解除捆绑”解包簇函数,函数刚放入时,它的右侧只有2个输出端口,当输入端口与“输入簇”端子相连后,右侧端口会自动增加为簇元素的数目,端口从上向下排列的顺序与簇内元素的放置顺序相对应,并且数据类型也是与簇元素数据类型相对应。如图:第六讲 数组与簇 同样放置一个“捆绑”打包簇函数,用定位工具将输入端口的数目增加到4个,依次将它们与解包出来的4个簇元素相连,表示又把它们进行打包生成一个新的簇。在输出端口创建一个簇显示器,把
23、标签改为“输出簇”,如图: 第六讲 数组与簇 例例2. 替换簇成员替换簇成员该例的目的是学习使用“按名称捆绑” 函数来替换簇内的某些元素。 1新建一个VI,在前面板上创建一个簇外壳,依次向簇内添加一个数字输入控件,一个布尔控件,一个字符串输入控件,如图: 第六讲 数组与簇 2打开程序框图,选择“按名称捆绑”函数,它的功能是按照名称来替换簇成员的值。在函数刚放入时,它的左侧只有一个输入端口,将函数的“输入簇”端口与创建的簇端子相连之后,左侧端口会显示簇内第一个元素的名称数值,用操作工具单击它可以选择其他的簇成员。如图:第六讲 数组与簇 3在前面板上创建一个输入控件,将标签改为“输入数字”,在程序
24、框图将它与“数值”端口相连,表示将用它来替换簇元素。如图:第六讲 数组与簇 4在“按名称捆绑”函数后面创建输出簇,完成后即可运行程序,如图: 第六讲 数组与簇 例例3. 插接生成簇数组插接生成簇数组该例的目的是学习使用“索引与捆绑簇数组” 函数插接簇数组函数来生成一个簇数组。 1新建一个VI,打开程序框图,放置一个该函数,刚放入时它只有一个输入的端口,用定位工具拖拉它为3个输入端口。2在程序框图上放置三个数组外壳,然后分别添加字符串常量,数值常量和布尔常量,建立三个数组,如图:然后给他们赋如图所示的值,如图:第六讲 数组与簇 然后连线,并创建显示控件,如图:运行,结果如图:说明:该函数从输入的
25、3个数组中依次取值,相同索引值的数据被攒成一个簇,所有的簇构成一个一维数组。插接成的数组的长度与所有输入数组中长度最短的一个相等,多余的数据被丢弃。第六讲 数组与簇 4. 建立建立“数组的数组数组的数组”学习把一维数组当成一个簇,然后通过建立簇的数组,因为簇数组的每一个成员都是一个簇(即一维数组),从而实现建立“数组的数组”的目的。1先新建一个VI,打开程序框图,放置一个“创建簇数组” 函数,该函数的功能是建立簇的数组,簇数组的每个成员都是一个簇。刚放入程序框图时,函数只有一个输入端口,用定位工具拖动它的边框,使它具有3个输入端口。 2在程序框图上创建3个数值型数组,分别对它们进行赋值,第一个
26、和第三个数组长度设定为5,第二个数组的长度设定为4。在“创建簇数组”函数的输出端口创建一个簇显示器,将簇显示器的标签内容改为“数组的数组”,如图:第六讲 数组与簇 3运行程序,即可在前面板上看到结果,如图:第六讲 数组与簇 4.4.3 4.4.3 簇的特点簇的特点 1. 1.簇操作通常按元素编号顺序进行簇操作通常按元素编号顺序进行, ,给元素编号给元素编号是簇的一大特点是簇的一大特点, ,编号可调整。编号可调整。 2. 2.簇的框架具有自动缩放功能簇的框架具有自动缩放功能, ,能根据簇中元素能根据簇中元素自动确定框架大小自动确定框架大小. .第六讲 数组与簇 练习题练习题 1.1.在程序的前面
27、板上创建一个数值型控件,为在程序的前面板上创建一个数值型控件,为它输入一个数值;把这个数值乘以一个比例系数,它输入一个数值;把这个数值乘以一个比例系数,再由该控件显示出来。再由该控件显示出来。 2. 2.生产一个正弦波,并显示在生产一个正弦波,并显示在ChartChart波形控件上,波形控件上,由另外一个程序把该波形显示出来。调节两个程由另外一个程序把该波形显示出来。调节两个程序运行的速度,观察对比两个波形的差异。序运行的速度,观察对比两个波形的差异。 3. 3.创建一个创建一个3 3行行4 4列的数组,列的数组,(1)(1)求数组的最大与求数组的最大与最小值;最小值;(2)(2)求出创建数组的大小;求出创建数组的大小;(3)(3)将该数组将该数组转置;转置;(4)(4)将该二维数组改为一个一维数组。将该二维数组改为一个一维数组。 4. 4.创建一个簇控件,成员为字符型姓名,数值创建一个簇控件,成员为字符型姓名,数值型学号,布尔型注册。从该控件中提取簇成员注型学号,布尔型注册。从该控件中提取簇成员注册,并显示在前面板上。册,并显示在前面板上。