




免费预览已结束,剩余80页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章数组、簇,主要学习内容,学习如何创建数组和初始化数组;学习常用数组函数的使用;学习簇的创建;学习簇函数的使用。,3.1数组,数组是相同类型数据元素的集合,这些元素可以是数值型、布尔型、字符串型等各种类型。同一数组的各元素是同一类型。这些元素必须同时都是控制件或同时都是指示件。数组可以是一维的,也可以是多维的,每一维的元素个数最多达231-1(21亿)。对数组元素的访问是通过索引进行的,元素的索引值从0开始,最大索引值为n-1,其中n是数组中元素的个数。每一个数组元素有唯一的一个索引值,通过索引可访问每一个数组元素。,数组是相同类型元素的集合。在LabVIEW中,数组可以随意改变长度。,举例,一个简单的一维数组,在这个数组中含有5个浮点型数据。在数组中第1个元素的索引值为0,第2个元素的索引值为1,依次类推,最后一个元素的索引值是4。,简单的一维数组,创建数组的方法,在前面板创建数组控件在框图程序窗口中创建数组常量其他创建数组的方式,1在前面板创建数组控件简单来说,前面板创建数组控件可分为三步:1)创建数组框的空壳;(包括两部分:索引框和数据)2)向数组框架中添加“元素”,以确定数组元素的数据类型;3)以拖动方式操作,可确定数组的可视大小;4)为数组元素赋值。举例说明,前面板后面板,数组输入控件和数组常量可作为数据源;数组显示控件则作为数据流动的目标容器。到达数组输入控件框架亦即数组显示控件框架的路径为:(前)控件选板-新式-数组、矩阵与簇-数组;而数组常量框架(后面板),经函数选板-编程-数组-数组常量找到。下图显示了在数组框放入字符串常量数组的例子。左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第个元素为:”ABC”,后两个元素均为空。,图2数组的创建,在前面板中创建数组的方法是,(前)控件选板-新式-数组、矩阵与簇-数组;,把数组放置在前面板中,然后选择一个对象(例如数值常量)插入到数组框中。这样就创建了一个数值数组。也可以直接在前面板中创建数组和相应的控制对象,然后将它们复制或者拖曳到流程图中,创建对应的常数。,创建一个多维数组,有两种方法:一是在索引框上右键弹出菜单选择“添加维度”。同样要减少数组维数,在右键弹出菜单中选择“删除唯度”即可。二是利用定位工具通过拖动数组索引边缘的方法来实现。将鼠标置于数组索引框上时,将出现8个小方框,用鼠标拖动方框改变索引框大小就可以改变数组维数。二维数组需要两个索引:行索引和列索引。三维数组需要3个索引;n维数组需要n个索引。,数组元素数目的改变,1)以拖动方式操作,可确定数组的可视大小;2)给数组赋值(指定具体元素)。,所建的数组从外观看,数组元素均呈暗灰色,表明尚末对数组控件中的元素进行定义。数组类型确定后,还需通过索引对数组元素进行赋值。若数组元素各不相同,使用操作工具,逐个索引数组元素,对它们分别进行赋值。,2在框图程序窗口中创建数组常量在框图程序窗口中创建数组常量最一般的方法类似于在前面板上创建数组。从函数选板-编程-数组-数组常量找到,将其放置在框图程序中;选择数据常量对象(如数值常数、布尔常数或字符串常数放置入数组框中;为数组元素赋值。,3)其他创建数组的方式,(1)利用数组函数可以创建数组,如使用StringtoByteArray功能函数将字符串转化为单字节整型数组;(2)某些VI的输出参数是数组;(3)利用程序结构产生数组,如循环的自动索引。,3.1.2利用循环的自动索引功能创建数组,ForLoop和WhileLoop结构都支持自动索引的功能,所以都可以在它们的边界自动索引数组或积聚数组。若循环自动索引功能打开,当将一个外部任意维数的数组源与循环图框的输入通道连接时,则从第一个数组元素开始,一次索引一个元素进入循环体,即循环体将与输入通道连接的二维数组索引为一维数组,将一维数组索引为单位标量元素。在循环边框的输出通道则执行相反的操作。,例3.1利用ForLoop创建一维数组。,每一次循环产生一个新的数组元素,循环结束以后,产生一个含有5个元素的一维数组,数组自动传输到指示器。(若自动索引的功能关闭,读者自己比较结果),例3.2利用ForLoop创建二维数组。,使用两个For循环,把其中一个循环嵌套在另一个循环之中,可以生成一个二维数组。外层循环产生行元素,而内层产生列元素。如图,两个ForLoop自动索引一个3行4列的二维数组的框图程序和前面板。,例3.3利用自动索引计算数组元素的平方和。,在框图程序中将一个一维数组(5个元素)与自动索引有效的ForLoop左边框连接(此时边界上的小方块是空心的),并在循环边界创建一对移位寄存器。利用循环的自动索引特性,在循环过程中将数组元素逐个引入框内,通过移位寄存器对引入的数组元素逐次执行累加和运算,循环次数取决于输入的数组元素个数。设置移位寄存器的初始值为0。,3.1.3数组函数,LabVIEW在数组函数子选板中给出了大量的数组处理函数,数组函数子选板如图,1数组大小函数ArraySize,用于访问数组的大小。路径:函数选板-编程-数组子选板其输入“数组”,可是任意维的数组;输出“大小”,提供该数组各维的长度。如果输入“数组”是一维的,输出“大小”便给出一个整数值;若输入“数组”是多维的,则输出“大小”提供的(也称返回的)就是1个一维的整型数组,其每个分量对应输入数组中相应维的长度。,例3.4ArraySize函数的使用。(一维数组和二维数组),1数组大小函数ArraySize:,2索引数组函数IndexArray,用于访问数组中指定位置的元素。路径:“函数”选板-“编程”-“数组”子选板,例3.5IndexArray函数的使用。访问一维数组索引值为2的数组元素,IndxArray,当连接二维数组时,它的索引端口自动变为2个,上面一个是行索引index(row),下面一个是列索引disabledindex(col)。列索引默认为不索引,所以端口形状为空心的。假如给这个端口连接一个索引值,端口形状自动变为实心的。连线完成后,哪一个索引值不连线就自动成为空心的不索引状态。行或列有一项不索引,那么二维数组就只能索引出一维数组,相应的输出参数也变为subarray。IndexArray函数允许多次索引,也就可以由多个输出参数。,索引二维数组时:,访问2维数组中行索引号为2、列索引号为1的元素;以及行索引号为3、列索引号为0的元素。,3替换数组元素函数ReplaceArray,用于替换定位后的元素。路径:“函数”选板-“编程”-“数组”子选板,例3.6ReplaceArraySubset函数的使用。用此函数将原来数组的第2行替换为新的元素,新元素为(1,2,3,4),将第3行第3列的元素33替换为100。,4插入数组函数InsertIntoArray,在原数组的指定位置插入若干行或若干列的数据。这个位置由函数提供的索引行或索引列数据端口提供,被插入的数据由newelement/subarray数据端口定义。例3.7InsertIntoArray函数的使用。1)在原数组的第1行插入1行新元素,新元素为4个0组成的一维数组;2)在原数组的第1行插入2行新元素。,5数组中删除元素函数DeleteFromArray,用来从一个数组中删除一些元素。其中参数长度(length)用于确定删除行或者列的数量参数;index(row)和index(col)用来确定被删除的行或列的位置;输出数据端口分别对应于删除后的数组和被删除的部分。,例3.8DeleteFromArray函数的使用。,将原数组的第0列删除。,6初始化数组InitializeArray,用于创建一个所有元素全部相同的数组。路径:“函数”选板-“编程”-“数组”子选板函数元素(element)端的输入参数定义了数组的类型,并且为每一个元素初始化为相同数值,数组长度由维数大小(DimensionSize)决定,为了创建和初始化多维数组,选择添加维度(AddDimension)或使用位置工具向下拖动节点一角。,功能:创建n维数组。每一维的长度,分别由“维数大小0”“维数大小n-1”这n个输入端输入的数值确定。刚创建成仅一维,拖曳其图标下边框,可增加输入端子数,从而创建多维数组;且数组刚创建成时,其每个元素的值均与“元素”端子输入的值相同。,6初始化数组InitializeArray,例3.9InitializeArray函数的使用。,一维数组,二维数组,7构建数组函数BuildArray,完成用数据成员构建数组的过程,这个函数不仅可以构建一维数组和多维数组,而且可以拼接数组(注意函数的每个输入只能是标量和数组)。在创建数组(BuildArray)函数创建之初,只带有一个标量输出端,要添加更多的输入,可在函数左侧弹出菜单选择添加输入(AddInput)项,或是用位置工具向下拖动节点的一角,添加所需要数量的输入。删除的方法类似。,路径:“函数”选板-“编程”-“数组”子选板,功能:1)将若干个输入数组即“数组”与“元素”组合成一个数组。该函数图标上弹出的快捷菜单中有“连接输入corcatenateinputs”选项,当它被选中时,该函数输出端会提供将所有输入连接在一起的结果,此输出数组的维数,与所有输入中的最高维数相同;该选项被关闭,所有输入的维数必须相同,该函数输出的数组比输入(数组)高一维;若所有输入均为标量,“连接输入”选项被自动关闭,函数输出一维数组,按顺序输出所有输入的参数(作为它的元素)。,拖曳下边框可增加输入端子。,7构建数组函数BuildArray,2)在该函数上右键弹出菜单选择连接输入ConcatenateInputs项,则函数会将两个数组按输入顺序合并成一个一维数组输出。另外注意框图程序中两种不同输出时函数图标及输出连线的区别。构建数组函数输入端口功能的转换如图。,例3.10构建数组函数的使用。,分别用一个元素构成一个一维数组(a)、用两个元素构成一维数组(b)、,(a),(b),(c),(d),用两个一维数组构成一个二维数组(c)、用两个一维数组拼接成一个新的一维数组(d)。,用于从一个数组中提取出维数与它相等或比它少的一个数组。路径:“函数”选板-“编程”-“数组”子选板,功能:输出(返回)输入的数组中从“索引”参数指定的位置开始、由“长度”参数指定长度的数组子集。每个“索引”与一个“长度”构成一对;“索引-长度”对的数目与输入参数“索引”的维数相同;输出“子数组”的维数,也与“数组”的维数相同。,8提取子数组函数ArraySubset,8提取子数组函数ArraySubset,例3.11提取子数组函数的使用。,数组函数应用,从一个二维数组中取出一部分元素。,前面板和程序框图,9一维数组操作函数,轮转(循环)一维函数Rotate1DArray根据输入的轮转系数n重新排列一维数组元素。若n为正数,将数组最后面的n个元素轮转到最前面;若n为负数,将数组最前面的n个元素轮转到最后面。,倒置(反转)一维数组Reverse1DArray将一维数组所有元素的顺序首尾颠倒。,查找(搜索)一维数组Search1DArray在一维数组中从开始索引(startindex)指定的位置开始寻找元素(element)参数指定的元素。找到了就返回它的索引值,找不到就返回1。,分离一维数组Split1DArray将一维数组由索引参数指定的位置开始分离为两个子数组。,一维数组排序Sort1DArray将一维数组按升序排列。,10数组极值函数ArrayMax&Min,该函数从一个数组中找到最大值和最小值,以及它们的位置索引值。如果有多个相同的极值就给出最前面一个索引值。例3.12数组极值函数的使用。求一个含有5个元素的一维数组的极大值和极小值。,3.2簇(Clusters),簇是一种数据结构,一个簇就是一个由若干不同数据类型的元素组成的集合体,类似于C语言中的结构体,可以把簇想象成一束电缆,在电缆中的每一根导线就是簇中的一个不同的数据元素。簇的成员可以是任意的数据类型,但数组必须同时都是控制件或同时都是指示件。簇的成员有一种逻辑上的顺序这是由它们放进簇的先后顺序决定的,与它们在簇中的摆放位置无关。,使用簇的好处,1把框图程序中不同位置,不同数据类型的多个数据组合在一起,减少了连线,简化了流程;2子程序有多个不同数据类型的参数输入输出时,把它们组合成一个簇,可以减少连接板上端口的数量;3某些控件和函数必须使用簇这样的数据类型参数。,簇,簇(Cluster)的创建,a)创建簇框架;b)向簇框架中添加元素;c)拖动确定簇的可视大小。,簇可以包含任意数目、任意类型的元素。簇不能在运行时添加新元素(而数组的长度在运行时可以自由改变)。簇类似于C语言中的结构(structure)。,簇与数组最明显的区别是,一个簇中的所有元素,不必同时为输入控件、显示控件或常量。但数组则不然。,3.2.1簇的创建,1在前面板创建簇;(演示),1.簇的创建(2),可向其中再放入其他数据类型的“输入控件元素”。,以构建一个簇控件、仅放入一个数值输入控件的情况为例。,簇元素只能同时为控制件或指示件,但可以是不同的类型。,2.簇元素的顺序,在簇中,元素有一定的排列顺序,该顺序即为创建该簇时添加元素的顺序。簇元素的排列顺序很重要,是完成很多操作的依据。,改变簇中元素的排序:在簇框架上弹出快捷菜单,选择“重新排序簇中控件”,即打开了簇元素顺序编辑状态。簇元素上有两个序号,左侧反显的为新序号;右侧加灰的是旧序号。单击簇元素之一,将把该元素设置为第0号元素;对其他重复此过程,直到改好所有元素的顺序,点击上方工具栏OK按钮,确认所做修改。在簇边框上弹出快捷菜单,选“自动调整大小”子菜单,可实现左图所示的所需操作。,3用簇函数创建簇。,簇的使用,2在框图程序创建中创建簇常量;(演示),3.2.2簇函数,1簇解包函数UnbundleUnbundle函数用于从簇中提取单个元素值,输出元素按在簇中编号顺序从上到下依次排列。,例3.15访问簇中各个元素值。,在前面板创建了一个包含3个控件的簇对象,在框图程序窗口中解除捆绑(Unbundle)函数刚放入时,有一个输入端口和两个输出端口,当将簇端子与Unbundle函数输入端连接,该函数输出端口自动与簇元素匹配,在函数的各Component输出端口右键弹出菜单,选择创建-指示控件(CreateIndicator),可将各个元素解包出来送前面板显示。,2合成簇函数Bundle,Bundle函数有两个基本用法:1)可以将各个不同数据类型的数据组成一个簇;2)或者修改给定簇中的某一个元素值。捆绑簇(Bundle)函数中元素端口的个数可以增加或者删除,方法是用位置工具向下拖动节点一角或在节点左侧弹出菜单选择添加元素或删除元素。但其个数必须与簇中元素的个数一致。,例3.16Bundle函数的使用。,在前面板放置一个字符串控制件和两个数值型控制件,在框图程序中将它们对应的端子与Bundle函数输入端自上而下连线(为簇中的每一个元素赋值),组成一个含有3个元素的混合型控制簇,簇中元素的编号顺序与输入数据的顺序一致。在Bundle函数输出端弹出菜单,选择创建指示控件,将输出簇(outputcluster)标签改写为“参数”,运行VI。,功能二:替换成新簇。,例3.17修改簇中某些元素的值。,Bundle函数除了左侧输入端子外,位于节点中间还有一个簇(cluster)输入端子。有时需要输入或修改源簇中某个元素的值,又不希望影响其他元素的值,其中一种简便方法就是使用节点的中间端子。本例中在前面板创建一个名为“参数”的簇控件,包含信号、幅值和频率三个簇元素,现通过前面板修改幅值元素值,而使簇中其他元素值保持不变。在框图程序中,将需要修改的元素与函数对应输入端子连接,将原有的簇连接到参数输入端,输入端口自动与这个簇的元素匹配。,3按名称解包簇成员函数UnbundleByName,按名称解包簇成员函数按指定的成员(标签)名称从簇中提取成员。该函数默认只有一个输出端口,当它的输入端口连接了一个簇,输出端口就显示出簇中第一个成员的名称;向下拖动节点一角或在节点输出端口弹出菜单可增加端口,从而可看到簇元素名的列表,可在列表中或右击名称弹出菜单选择项,选择访问成员。该函数允许多次访问一个成员。引用簇成员时,成员必须已有名称,否则不会出现在输出端口中,所以需要先在它的标签中输入名称。,功能:把输入簇中的元素按标签解除捆绑。在函数输出端,只能获得拥有标签的簇元素。函数初建时,只有一个输出端子;单击其标签域,可弹出带有标签的簇元素的列表;必须对其分别建立相应的显示器。,例3.18显示簇中的某个成员。,利用按名称解包簇成员函数(UnbundleByName)函数显示簇中的第二个元素:幅值。,4按名称替换簇成员函数BundleByName,BundleByName函数只能按照簇中成员的名称替换簇中的成员,不能创建一个簇。当在它的namedcluster参数端连接一个簇时,输入端口就会出现这个簇中第一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电梯智慧城市集成项目可行性研究报告
- 急诊科公休座谈会课件
- 多膛炉焙烧工数字化技能考核试卷及答案
- 急诊科QCC课件教学课件
- 电解精炼工效率提升考核试卷及答案
- 护理查对制度专项考核试题题库及答案
- 穿线工程施工方案
- 2025年2月N0级护士临床三基、查对制度考试试题及答案
- 血液净化护理考试试题及答案
- 煤矿安全培训监查制度课件
- 2025年秋季学期安全主题班会教育记录
- 火电厂安全员课件
- 2025年银行内部审计部门财务审计员竞聘考试指南
- Unit 1 A new start Starting out 课件(内嵌音视频)高一英语外研版必修第一册
- 树立正确就业观课件
- 口腔科终末处理流程与规范
- 钢管护栏拆除方案(3篇)
- 矮小症诊治指南
- 施工现场设备设施安全管理制度
- KTV娱乐场所营销策略
- 护理技师考试题及答案
评论
0/150
提交评论