1、第四章 变量、数组与簇4.14.1本地变量本地变量4.2 4.2 全局变量全局变量4.3 4.3 数组数组4.4 4.4 簇簇第四章变量、数组和簇第四章变量、数组和簇第四章 变量、数组与簇4.1 4.1 本地变量本地变量 控制通过端口将数据传给其它节点;控制通过端口将数据传给其它节点;指示将其它节点传过来的数据显示。指示将其它节点传过来的数据显示。但端口是唯一的,一个控制或一个指示但端口是唯一的,一个控制或一个指示只有一个端口。只有一个端口。而用户要经常要多次为控制赋值或从指而用户要经常要多次为控制赋值或从指示中取数据,或从指示赋值或而从控制中取示中取数据,或从指示赋值或而从控制中取数据。数据
2、。显然,仅用一个端口是无法实现上述操显然,仅用一个端口是无法实现上述操作的,本地变量的引入,巧妙解决了该问题。作的,本地变量的引入,巧妙解决了该问题。第四章 变量、数组与簇4.1.1 4.1.1 本地变量的创建本地变量的创建 有两种方式:有两种方式:1.1.在在FunctionFunctionProgrammingProgrammingStructureStructureLocal Local Variable Variable 第四章 变量、数组与簇2.2.选定前面板对象按右键选定前面板对象按右键CreatLocal VariableCreatLocal Variable第四章 变量、数组与
3、簇4.1.2 4.1.2 本地变量的使用本地变量的使用 本地变量有本地变量有WriteWrite和和ReadRead两种属性。两种属性。当属性为当属性为ReadRead时,可从本地变量中读出数据时,可从本地变量中读出数据 当属性为当属性为WriteWrite时,可给本地变量赋值。时,可给本地变量赋值。具体使用方法通控制和指示对象。具体使用方法通控制和指示对象。第四章 变量、数组与簇例例4.1.1 4.1.1 用一个布尔开关同时控制两个用一个布尔开关同时控制两个WhileWhile循环。循环。第四章 变量、数组与簇例例4.1.2 4.1.2 利用本地变量给一个控制赋值,并从一利用本地变量给一个控
4、制赋值,并从一个指示中读取数据。个指示中读取数据。第四章 变量、数组与簇例例4.1.3 4.1.3 利用本地变量进行控制转换。利用本地变量进行控制转换。电机有手动自动控制两种方式,在手动方式,操作者可电机有手动自动控制两种方式,在手动方式,操作者可以任意调节滑块位置来设置电机速度;在自动方式下,转以任意调节滑块位置来设置电机速度;在自动方式下,转速在速在50050010001000间变化。间变化。第四章 变量、数组与簇4.1.3 4.1.3 本地变量的特点本地变量的特点 1.1.一个本地变量是其前面板对象的一个数据一个本地变量是其前面板对象的一个数据拷贝,要占用一定内存,应控制其数量。拷贝,要
5、占用一定内存,应控制其数量。2.LabVIEW2.LabVIEW是一种并行处理语言,只要节点是一种并行处理语言,只要节点输入有效,节点就会执行。当程序中有多个本输入有效,节点就会执行。当程序中有多个本地变量时,要特别注意。地变量时,要特别注意。3.3.本地变量只能在一个本地变量只能在一个VIVI中使用。中使用。第四章 变量、数组与簇4.2 4.2 全局变量全局变量 全局变量是全局变量是LabVIEWLabVIEW中的一个对象,通过全局变量,中的一个对象,通过全局变量,可以在不同可以在不同VIVI间传递数据。间传递数据。4.2.1 4.2.1 全局变量的创建全局变量的创建 全局变量创建的步骤:全
6、局变量创建的步骤:1.1.选中选中FunctionFunction ProgrammingProgramming StructureStructure Global VariableGlobal Variable,将图标放入程序框图中。,将图标放入程序框图中。第四章 变量、数组与簇第四章 变量、数组与簇2.2.双击全局变量图标,打开其前面板双击全局变量图标,打开其前面板3.3.在控制模板中选择需要的前面板对象,放入全在控制模板中选择需要的前面板对象,放入全局变量的前面板中局变量的前面板中第四章 变量、数组与簇4.4.保存这个全局变量,文件名后缀保存这个全局变量,文件名后缀.gbl.gbl。关闭
7、。关闭 全局变量前面板窗口。完成全局变量创建。全局变量前面板窗口。完成全局变量创建。5.5.将鼠标切换至操作工具状态,选中全局变量图将鼠标切换至操作工具状态,选中全局变量图 标,按右键选择标,按右键选择Select ItemSelect Item,菜单列出全局,菜单列出全局 变量所包含的所有对象,根据需进行选择。变量所包含的所有对象,根据需进行选择。第四章 变量、数组与簇4.2.2 4.2.2 全局变量的使用全局变量的使用 全局变量有全局变量有WriteWrite和和ReadRead两种属性。两种属性。具体使用和设置方法同本地变量。具体使用和设置方法同本地变量。例:利用全局变量传递波形数据。例
8、:利用全局变量传递波形数据。建立了两个全局变量:波形数据和停止按钮。建立了两个全局变量:波形数据和停止按钮。第四章 变量、数组与簇第四章 变量、数组与簇4.2.3 4.2.3 全局变量的特点全局变量的特点 1.1.全局变量以独立文件的形式存在,一个全全局变量以独立文件的形式存在,一个全局变量可以包含多个对象,拥有多种数据类型。局变量可以包含多个对象,拥有多种数据类型。2.2.全局变量与子全局变量与子VIVI不同,不能进行编程,只不同,不能进行编程,只能进行简单的数据存储。能进行简单的数据存储。3.3.全局变量速度快,是其它多数数据类型的全局变量速度快,是其它多数数据类型的1010倍。倍。4.4
9、.全局变量在不同全局变量在不同VIVI间进行数据交换。间进行数据交换。5.5.全局变量如果不注意,会多次读取一个值,全局变量如果不注意,会多次读取一个值,或总也读不到一个值。或总也读不到一个值。第四章 变量、数组与簇4.3 4.3 数组数组 数组是数组是LabVIEWLabVIEW常用的数据类型之一。一个数组可常用的数据类型之一。一个数组可以是一维或者多维,如果必要,每维最多可有以是一维或者多维,如果必要,每维最多可有2 231311 1个元素。可以通过数组索引访问其中的每个元素。索个元素。可以通过数组索引访问其中的每个元素。索引的范围是引的范围是0 0到到n-1n-1。数组的元素可以是数据、
10、字符串。数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。等,但所有元素的数据类型必须一致。4.3.1 4.3.1 数组的组成与创建数组的组成与创建 1.1.数组的组成数组的组成 由索引、数据和数据由索引、数据和数据 类型构成。其中数据类型构成。其中数据 类型隐含在数据中。类型隐含在数据中。第四章 变量、数组与簇2.2.数组的创建数组的创建 数组创建分两步进行:数组创建分两步进行:a.a.从从ControlsControls ModernModern Array&ClusterArray&Cluster中选择数组框架,放入前面板中。中选择数组框架,放入前面板中。第四章 变量、数组与
11、簇 b.b.选择相应的数据类型放入数组框架中。选择相应的数据类型放入数组框架中。另外,数组创建之初都是一维的,如要二维以上的数另外,数组创建之初都是一维的,如要二维以上的数组,用鼠标在数组索引左下角向下拖动,或在数组的右组,用鼠标在数组索引左下角向下拖动,或在数组的右键弹出菜单中用键弹出菜单中用Add DimensionAdd Dimension添加维数。添加维数。第四章 变量、数组与簇4.3.2 4.3.2 数组的使用数组的使用 对一个数组进行操作,无非是求数组的长度、取出数组中对一个数组进行操作,无非是求数组的长度、取出数组中的元素、替换数组中的元素或初始化数组等各种运算。的元素、替换数组
12、中的元素或初始化数组等各种运算。通过通过FunctionsFunctionsProgramming Programming Array Array子模板中各节点子模板中各节点完成。完成。第四章 变量、数组与簇1.1.数组大小数组大小Array SizeArray Size函数函数 返回输入数组中的元素个数。返回输入数组中的元素个数。第四章 变量、数组与簇2.2.索引数组索引数组 Index Array Index Array函数函数 用于访问数组中的某个元素。用于访问数组中的某个元素。下图显示了一个索引函数的例子,它用于访问下图显示了一个索引函数的例子,它用于访问数组中的第三个元素。数组中的第
13、三个元素。第四章 变量、数组与簇 将一个二维数组与将一个二维数组与Index ArrayIndex Array函数相连,函数相连,Index Index ArrayArray就会含就会含2 2个索引端子。将一个三维数组与个索引端子。将一个三维数组与Index Index ArrayArray函数相连,函数相连,Index ArrayIndex Array就会含就会含3 3个索引端子。余类个索引端子。余类推。推。可以使用的索引端的符号是一个黑方快,被禁止使可以使用的索引端的符号是一个黑方快,被禁止使用的索引端(用的索引端(Disable IndexingDisable Indexing)是一个空
14、心的小方框。)是一个空心的小方框。第四章 变量、数组与簇 可以从一个三维数组中提取一个二维数组,方法是可以从一个三维数组中提取一个二维数组,方法是禁止两个索引端子,或者通过禁止一个索引端子提取一禁止两个索引端子,或者通过禁止一个索引端子提取一个一维数组。下图显示了从三维数组提取数组的各种方个一维数组。下图显示了从三维数组提取数组的各种方法。法。第四章 变量、数组与簇3.3.数组子集数组子集Array SubsetArray Subset函数函数 选取数组或者矩阵的某个部分。选取数组或者矩阵的某个部分。第四章 变量、数组与簇 该函数可以返回从某个指针开始的部分数组,并包该函数可以返回从某个指针开
15、始的部分数组,并包括了长度元素。下图显示了一些数组子集的例子,注意,括了长度元素。下图显示了一些数组子集的例子,注意,数组索引从数组索引从0 0开始。开始。第四章 变量、数组与簇4.4.替换数组元素替换数组元素Replace Array ElementReplace Array Element函数函数 替换数组中的某个元素。替换数组中的某个元素。第四章 变量、数组与簇5.5.改变数组维数改变数组维数Reshape ArrayReshape Array函数函数 改变输入数组的维数。改变输入数组的维数。第四章 变量、数组与簇6.6.初始化数组初始化数组Initialize ArrayInitial
16、ize Array函数函数 对数组进行初始化,数组中所有的元素相同。对数组进行初始化,数组中所有的元素相同。第四章 变量、数组与簇7.7.建立数组建立数组Build ArrayBuild Array函数函数 建立一个新数组的维数。建立一个新数组的维数。第四章 变量、数组与簇8.8.移位一维数组移位一维数组Rotate 1D ArrayRotate 1D Array函数函数 将一维数组的最后将一维数组的最后n n各元素移至数组前面。各元素移至数组前面。第四章 变量、数组与簇9.9.排序一维数组排序一维数组Sort 1D ArraySort 1D Array函数函数 将一维数组中的数据按升序排列。
17、将一维数组中的数据按升序排列。第四章 变量、数组与簇10.10.颠倒一维数组颠倒一维数组Reverse 1D ArrayReverse 1D Array函数函数 将一维数组的元素前后颠倒。结合将一维数组的元素前后颠倒。结合Sort 1D ArraySort 1D Array函函数,可实现降序排列。数,可实现降序排列。第四章 变量、数组与簇11.11.转置二维数组转置二维数组Transpose 2D ArrayTranspose 2D Array函数函数 将二维数组进行转置输出。将二维数组进行转置输出。第四章 变量、数组与簇12.12.搜索一维数组搜索一维数组Search 1D ArraySea
18、rch 1D Array函数函数 搜索指定元素在一维数组中的位置。搜索指定元素在一维数组中的位置。第四章 变量、数组与簇13.13.求数组的最大值和最小值求数组的最大值和最小值Array Max&MinArray Max&Min函数函数 返回数组中的最大值和最小值,以及它们在数组中返回数组中的最大值和最小值,以及它们在数组中的位置。的位置。第四章 变量、数组与簇14.14.截断一维数组截断一维数组Split 1D ArraySplit 1D Array函数函数 将一维数组在指定位置截断,分成两个一维数组。将一维数组在指定位置截断,分成两个一维数组。当索引位置小于当索引位置小于0 0时,第一个子
19、数组为空;当索引位置时,第一个子数组为空;当索引位置大于数组长度时,第二个子数组为空;大于数组长度时,第二个子数组为空;第四章 变量、数组与簇15.15.一维数组的插值一维数组的插值Interpolate 1D ArrayInterpolate 1D Array函数函数 根据给定的小数索引值,确定对应的数组元素值。根据给定的小数索引值,确定对应的数组元素值。第四章 变量、数组与簇16.16.一维数组的阈值一维数组的阈值Threshold 1D ArrayThreshold 1D Array函数函数 是线性插值的逆过程,根据给定的数值,确定对应是线性插值的逆过程,根据给定的数值,确定对应的索引值
20、。的索引值。第四章 变量、数组与簇17.17.插入一维数组插入一维数组Interleave 1D ArrayInterleave 1D Array函数函数 将输入端口的一维数组插入到输出的一维数组中。将输入端口的一维数组插入到输出的一维数组中。插入的顺序为:按从上到下的原则,依次取出输入数组插入的顺序为:按从上到下的原则,依次取出输入数组的第的第0 0各元素,放入输出数组中;然后是第各元素,放入输出数组中;然后是第1 1 各元素,各元素,依此类推。依此类推。第四章 变量、数组与簇18.18.拆分一维数组拆分一维数组Decimate 1D ArrayDecimate 1D Array函数函数 是
21、插入一维数组是插入一维数组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个子数组:依此类推。个子数组:依此类推。第四章 变量、数组与簇第四章 变量、数组与簇4.3.3 4.3.3 数组的特点数组的特点 1.Lab
22、VIEW1.LabVIEW会自动确定会自动确定数组长度,最多可达数组长度,最多可达(2 231311 1)个元素。)个元素。2.2.数组中元素的数据类型必须相同。数组中元素的数据类型必须相同。第四章 变量、数组与簇4.4 4.4 簇簇 簇是簇是LabVIEWLabVIEW中一个比较特别的数据类型,它可以将几种不同中一个比较特别的数据类型,它可以将几种不同的数据类型集中到一个单元中形成一个整体。的数据类型集中到一个单元中形成一个整体。如有关一个学生的信息有:学号、姓名、性别、年龄、成绩和如有关一个学生的信息有:学号、姓名、性别、年龄、成绩和家庭地址等。如将这些项目分别定义为相互独立的简单变量,不
23、家庭地址等。如将这些项目分别定义为相互独立的简单变量,不能反映它们之间的内在联系。而应当把它们组合成一个组合项,能反映它们之间的内在联系。而应当把它们组合成一个组合项,这种数据结构就是簇。这种数据结构就是簇。上述数据的上述数据的C C语言结构描述:语言结构描述:上述数据的上述数据的LabVIEWLabVIEW结构描述:结构描述:struct studentstruct student int num;int num;char name20;char name20;char sex;char sex;int age;int age;float score;float score;char add
24、r30;char addr30;第四章 变量、数组与簇簇的创建类似于数组的创建:簇的创建类似于数组的创建:1.1.从从ControlsControlsModern Modern Array&Cluster Array&Cluster中选择中选择CluterCluter框架,放入前面板中。框架,放入前面板中。第四章 变量、数组与簇 2.2.向框架中添加所需数据类型元素。向框架中添加所需数据类型元素。注意:簇中只能包含控制和指示中的一种,不能既包注意:簇中只能包含控制和指示中的一种,不能既包含控制又包含指示,在一个高度交互面板中,不能把一含控制又包含指示,在一个高度交互面板中,不能把一个簇既作为输
25、入元素又作为输出元素。个簇既作为输入元素又作为输出元素。第四章 变量、数组与簇4.4.2 4.4.2 簇的使用簇的使用 簇的使用,主要是访问簇中的各个元素,或由不簇的使用,主要是访问簇中的各个元素,或由不同类型但相互关联的数据组成簇。同类型但相互关联的数据组成簇。通过通过FunctionsFunctionsProgramming Programming Cluster Cluster子模子模板中各节点完成。板中各节点完成。第四章 变量、数组与簇1.1.解包解包UnbundleUnbundle函数函数 用该节点可以获得簇中元素的值,注意:输出用该节点可以获得簇中元素的值,注意:输出element
26、element端口的个数必须与簇中元素的个数一致。端口的个数必须与簇中元素的个数一致。第四章 变量、数组与簇2.2.打包打包BundleBundle函数函数 将相互关联的不同类型数据组成簇,或给簇的某个元素将相互关联的不同类型数据组成簇,或给簇的某个元素赋值,注意:输入赋值,注意:输入elementelement端口的个数必须与簇中元素的个端口的个数必须与簇中元素的个数一致。数一致。第四章 变量、数组与簇修改簇中某个元素的值,可以是修改簇中某个元素的值,可以是1 1个或多个元素。个或多个元素。第四章 变量、数组与簇3.3.按名称解包按名称解包Unbundle by nameUnbundle b
27、y name函数函数 用该节点可以获得由元素名称指定的簇中元素的值,可用该节点可以获得由元素名称指定的簇中元素的值,可以是以是1 1个或多个元素名称。个或多个元素名称。第四章 变量、数组与簇4.4.按名称打包按名称打包Bundle By NameBundle By Name函数函数 是是Unbundle By NameUnbundle By Name的逆过程的逆过程 ,组成一个新簇或给簇,组成一个新簇或给簇的某个元素赋值。的某个元素赋值。用用Bundle By NameBundle By Name节点修改簇中某个元素的值。节点修改簇中某个元素的值。第四章 变量、数组与簇用用Bundle By
28、NameBundle By Name节点创建一个簇。节点创建一个簇。第四章 变量、数组与簇5.5.建立簇的数组建立簇的数组Build Cluster ArrayBuild Cluster Array函数函数 用法与用法与Build ArrayBuild Array节点类似。注意从节点类似。注意从componentcomponent端口输端口输入的数据类型必须一致。入的数据类型必须一致。第四章 变量、数组与簇6.6.数组簇组数组簇组Index&Bundle Cluster ArrayIndex&Bundle Cluster Array函数函数 将输入按索引组成簇将输入按索引组成簇 然后将这些簇组
29、成一个簇数组。然后将这些簇组成一个簇数组。第四章 变量、数组与簇7.7.簇转化为数组簇转化为数组Cluster To ArrayCluster To Array函数函数 输入簇的所以元素数据类型必须相同。按簇中元素的编输入簇的所以元素数据类型必须相同。按簇中元素的编号顺序组成一个一维数组。号顺序组成一个一维数组。第四章 变量、数组与簇8.8.数组转化为簇数组转化为簇Array To ClusterArray To Cluster函数函数 将输入数组的前将输入数组的前n n个元素组成一个簇。个元素组成一个簇。N N由编由编程者确定,默认值为程者确定,默认值为9 9。第四章 变量、数组与簇4.4.
30、3 4.4.3 簇的特点簇的特点 1.1.簇操作通常按元素编号顺序进行簇操作通常按元素编号顺序进行,给元素编给元素编号是簇的一大特点号是簇的一大特点,编号可调整。编号可调整。2.2.簇的框架具有自动缩放功能簇的框架具有自动缩放功能,能根据簇中元能根据簇中元素自动确定框架大小素自动确定框架大小.第四章 变量、数组与簇 实验二实验二 1.1.在程序的前面板上创建一个数值型控件,为在程序的前面板上创建一个数值型控件,为它输入一个数值;把这个数值乘以一个比例系数,它输入一个数值;把这个数值乘以一个比例系数,再由该控件显示出来。再由该控件显示出来。2.2.生产一个正弦波,并显示在生产一个正弦波,并显示在
31、ChartChart波形控件上,波形控件上,由另外一个程序把该波形显示出来。调节两个程由另外一个程序把该波形显示出来。调节两个程序运行的速度,观察对比两个波形的差异。序运行的速度,观察对比两个波形的差异。3.3.创建一个创建一个3 3行行4 4列的数组,列的数组,(1)(1)求数组的最大与求数组的最大与最小值;最小值;(2)(2)求出创建数组的大小;求出创建数组的大小;(3)(3)将该数组将该数组转置;转置;(4)(4)将该二维数组改为一个一维数组。将该二维数组改为一个一维数组。4.4.创建一个簇控件,成员为字符型姓名,数值创建一个簇控件,成员为字符型姓名,数值型学号,布尔型注册。从该控件中提取簇成员注型学号,布尔型注册。从该控件中提取簇成员注册,并显示在前面板上。册,并显示在前面板上。