ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:1.58MB ,
资源ID:9494598      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9494598.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第4章 数组簇与字符串.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第4章 数组簇与字符串.docx

1、第4章 数组簇与字符串第4章数组、簇和字符串这一章介绍LabVIEW的几种数据类型,数组、簇和字符串。这些数据类型都是一些数据成员的集合。数组是相同类型数据成员的集合,簇是不同类型数据成员的集合,字符串是ASCII码字符的集合。4.1 数组4.1.1 数组概念数组是相同类型数据成员的集合,这些成员可以同是数值型的、布尔型的、字符型的等各种类型,也可以是簇,但是不能是数组。这些成员必须同时都是控制件或同时都是显示件。数组可以是一维的,也可以是多维的。每一维可以多达2311个成员(21亿)。一维数组是一行或一列数据,可以描绘平面上的一条曲线。二维数组由若干行和列数据组成,可以在一个平面上描绘多条曲

2、线。三维数组由若干页组成,每一页是一个二维数组。图4-1是两个数组的例子。图4-1 数组示例对数组成员的访问是通过数组索引进行的,索引值的范围是0n-1,n是数组成员的数目。每一个数组成员有一个唯一的索引值,数组索引值从0开始,例如图4-1中二维数组里的数值0.8的行索引值Row Index是1,列索引值Column Index是2。4.1.2 创建数组1. 在前面板上创建数组图4-2是在前面板上创建数组的步骤。先在Array & Cluster控件子模板中选择数组壳放到前面板上,然后根据需要的数据类型选择一个控件放在数组壳内。可以直接从控件模板中选择控件放进数组壳内,也可以把前面板上已有的控

3、件拖进数组壳内。这个数组的数据类型以及它是控制件还是显示件完全取决于放入的控件。图4-2中放了一个数值型控制件,因此这是一个数值型控制件一维数组。图4-2 在前面板上创建数组(a) (b) (c)图4-3 增加数组成员如果需要创建一个多维数组,把定位工具放在数组索引框任意一角轻微移动,当光标形状变成图4-3(a)下方的网状折角时,向上或下拖动鼠标增加索引框数量就可以增加数组的维数。或者在索引框上弹出菜单选Add Dimension。图4-3(b)已经变为二维数组。两个索引框上一个是行索引下一个是列索引。网状折角光标放在数组索引框左侧时不仅可以上下拖动增加索引框数量,还可以向左拖动扩大索引框面积

4、。网状折角光标形状在鼠标开始拖动后,会变为图4-3(b)下方的所示的双折角形状,即定位工具常用的光标形状。如果要减少数组维数,只要用定位工具减少索引框数量即可,也可以用弹出菜单的方法,选Remove Dimension。要改变各个数组成员的显示区域大小,把定位工具放到任意一个数组成员的显示区域任意一角,当光标为常用形状时,拖动鼠标即可。如图4-3(b)所示。刚刚创建的数组只显示一个成员,如果需要显示更多的数组成员,把定位工具放在数组数据显示区任意一角,当光标形状变成图4-3(c)下方的网状折角时,向任意方向拖动增加数组成员数量就可以显示更多数据。数组索引框中的数值是显示在左上角的数组成员的索引

5、值。2. 在程序代码窗口中创建数组常量在程序代码窗口中创建数组常量最一般的方法类似于在前面板上创建数组。先从Array函数子模板中选择数组壳放到程序代码窗口中,然后根据需要选择一个数据常量放到空数组中。图4-4选择了一个字符型常量,然后用标签工具给它赋值abc。也可以把前面板上的数组控件拖动或拷贝到程序代码窗口中产生一个数组常量。3.数组成员赋值用上述方法创建的数组是空的,从外观上看数组成员都显示为灰色。要根据需要用操作工具或定位工具为数组成员逐个赋值。若隔过前面的成员为后面的成员赋值,则前面成员根据数据类型自动赋一个空值,例如0、F或空字符串。数组赋值后,在赋值范围以外的成员显示仍然是灰色的

6、。图4-4 在程序代码窗口中创建数组常量4. 其它的创建数组的方法创建数组的方法还有: 用数组函数创建数组 某些VI的输出参数是数组 用程序结构产生数组这些方法将穿插在有关的内容中介绍。4.1.3 数组函数图4-4的Array函数子模板中共有23个数组函数,这里按从左向右、从上到下的顺序逐一结合实例说明它们的用法。1数组大小函数Array Size图4-5 数组大小函数的使用图4-5是Array Size函数应用示例,上面是程序代码,下面是前面板显示结果。给Array Size函数连接一维数组时,它返回一个数值10,表示数组有10个成员;给它连接二维数组时,它返回一个一维数组,前一个数值表示输

7、入的二维数组有5行,后一个数值表示输入的二维数组有11列。2. 索引数组函数Index ArrayIndex Array函数刚放进程序代码窗口时只有一个index输入端口,连接到一维数组时,也仍然只有一个index输入端口,如图4-6(a)所示。给这个端口连接一个索引值,element参数就输出该索引值对应的数据。给Index Array函数连接二维数组时,它的索引端口自动变为两个,上面一个是行索引index(row),下面一个是列索引disabled index(col)。列索引默认为不索引,所以端口形状为空心的。假如给这个端口连接一个索引值,端口形状自动变为实心的。连线完成后,那一个索引值

8、不连线就自动成为空心的不索引状态。行或列有一项不索引,那么从二维数组就只能索引出一维数组,相应的输出参数也变为subarray。Index Array函数允许多次索引,也就可以有多个输出参数。图4-6(b)从一个二维数组常数分别索引出第4行,第3列,和属于第2行第3列的成员。注意,索引值由0开始。(a) (b) (c)图4-6 索引数组成员 图4-6(c)用Index Array函数从一个三维数组索引出第2页和第2页中的第3行。操作方法与从二维数组索引数据类似。3. 替换数组成员函数Replace Array Subset图4-7 替换数组成员 Replace Array Subset 函数与

9、Index Array 函数在为数组成员定位的方法上是完全一致的,但是它不是要索引出定位后的成员,而是用另外的数据替换它。替换后的数组与原来的数组大小和数据类型是完全一致的。图4-7用Replace Array Subset函数替换了原数组第2行和第3行第4列的成员,替换发生在图中椭圆框内的位置。4. 插入数组成员函数Insert Into Array 这个函数与Replace Array Subset 函数及其相似,差别只在于它为数组成员定位后不是替换它,而是在这个位置插入新的成员,输出的数组当然比原数组要大。而且Insert Into Array函数的index参数只能连接行列索引其中的一

10、个。图4-8 插入数组成员 图4-8用Insert Into Array函数在一个二维数组第3列的位置连续两次插入一列数据,椭圆中是插入的数据。由于插入数据的类型与原数组类型不同,LabVIEW强制进行了数据类型转换。5. 删除数组成员函数Delete From Array图4-9 删除数组成员 Delete From Array函数用于删除数组中的某些成员,它的外形以及定位数组成员的方式与Insert Into Array函数很相似。在它的array输入参数下面是length参数,即删除长度。这个参数如果不连接,默认值是1。这时假如array参数输入一个二维数组,那么deleted port

11、ion参数输出是一个一维数组。在图4-9中, length参数连接了2,所以deleted portion参数输出一个两行的二维数组。Delete From Array函数的index参数也只能连接行列索引其中的一个。在图4-9中数组常数椭圆中的部分被删除掉了。可以看出,这也是分离数组成员的一种手段。6. 初始化数组函数Initialize Array和创建数组函数 Build Array(a) (b) (c) (d) (e) 图4-10 初始化数组与创建数组函数 Initialize Array函数可以建立一个所有成员全部相同的数组。 它刚放进程序代码窗口时只有一个dimension siz

12、e 参数,像其它许多函数一样,可以用定位工具或弹出菜单的方法,增加输入参数端口。在图4-10(a)创建了一个有3行4列,所有成员都是a的字符常量数组。相比之下Build Array函数的功能就丰富多了。在图4-10(b)中用它将单个数值建成一个只有一个成员的数组。用这种方法还可以将一维数组建成只有一行的二维数组。图4-10(c)中增加了它的输入参数端口,将两个数值建成一个一维数组。只要输入参数端口的数量不超过数组最大维数的限制,可以将任意多个成员合成一个数组。图4-10(d)的情形与图4-10(c)是类似的,它将两个一维数组合成二维数组。但是Build Array函数如果连接了两个以上维数相同

13、的数组,在它的弹出菜单中就有一个选项Concatenate Inputs。选中了这个选项两个一维数组就连接成一个长的一维数组,像图4-10(e)那样。如果Build Array函数的输入是一个一维数组和一些单个数值,Concatenate Inputs选项是默认选中并且不能修改的,所有数值自动追加到数组后面。以上的功能可以推广到二维数组与二维数组连接和二维数组与一维数组连接的情况下。7. 提取子数组函数Array Subset图4-11 提取子数组 Array Subset函数从一个数组中提取出维数与它相等或比它少的一个数组。它连接一个输入数组以后,输入端口对数就自动与输入数组维数适应。每对端

14、口上一个参数是定位提取子数组位置的索引值,下一个参数是提取子数组的长度。图4-11从一个二维数组常量中提取出第2行以下的两行中的第3列以后的三列,如图中椭圆框内所示。8. 一维数组操作函数以下是几个专门用于一维数组操作的函数。(1)轮转一维数组 Rotate 1D Array 根据输入的轮转系数n重新排列一维数组成员。图4-12(a)中的n =2 ,将数组最后两个成员3、4 轮转到最前面;图4-12 (b) 中的n =-2 ,将数组前两个成员0、1 轮转到数组最后面。(a) (b)图4-12 轮转一维数组(2)倒置一维数组 Reverse 1D Array 将一维数组所有成员顺序首尾颠倒,如图

15、4-13(a)所示。(3)查找一维数组 Search 1D Array 在一维数组中由start index参数指定的位置开始寻找element参数指定的成员。找到了就返回它的索引值,找不到返回1。如图4-13(b) 所示。(4)分离一维数组 Split 1D Array 将一维数组由index参数指定的位置开始分离为两个子数组。如图4-13(c)所示。 (a) (b) (c)图4-13 转置、查找、分离一维数组(5)一维数组排序 Sort 1D Array 将一维数组按升序排序,如图4-14(a)所示。(a) (b) (c)图4-14 一维数组排序、插值、门限值(6)一维数组插值 Inter

16、polate 1D Array 如果fractional index or x 参数是整数,就返回索引值与它相等的数组成员。如果这个参数是分数,按它的整数部分在一维数组中定位,按它的分数部分在前后两个成员中插值。图4-14(b)中,为fractional index or x 参数连接的值是2.5,索引值2的成员是5,它后面是8。853,30.5=1.5,5+1.5=6.5,所以返回值为6.5。(7)一维数组门限值 Threshold 1D Array这个函数有些像前一个函数的逆运算,它按照给定的门限值threshold在数组中找到它的分数索引值。如图4-14(c)所示。(8)插接一维数组函数

17、Interleave 1D Array(a) (b) 图4-15 一维数组插接与拆分Interleave 1D Array函数从输入的n个一维数组中依次取出单个数值,插接成一个新的一维数组。新的数组长度等于ln,l是输入数组中最短一个的长度。从图4-15(a)中可以看到,第二个输入数组最后的6被甩掉了。(9)拆分一维数组Decimate 1D ArrayDecimate 1D Array函数与Interleave 1D Array函数又是一对互逆运算。Decimate 1D Array 函数从输入的一维数组中每隔n-1个数据取一个拆分出n 个数组。这个函数的输出端口数量n是可选的。它输出数组的

18、长度全一致,等于Ln 取整数。L是输入数组的长度。从图4-15(b) 中可以看到,输入数组最后的0被甩掉了。9. 数组极值函数Array Max & Min(a) (b) 图4-16 数组极值函数Array Max & Min函数从一个数组中找到最大值和最小值,以及它们的位置索引值。如果有多个相同的极值就给出最前面一个索引值。图4-16(a) 连接的是一维数组,极值位置是单个数值;图4-15(b) 连接的是二维数组,极值位置是一维数组,数组前一个值是行索引位置,后一个值是列索引位置。10. 转置二维数组函数Transpose 2D Array图4-17 转置数组Transpose 2D Arr

19、ay函数把输入的二维数组的各行变为各列。这是一个很简单,但是在图形显示、数据采集中很有用的函数。11. 重构数组函数Reshape Array(a) (b) (c)图4-18 重构数组Reshape Array函数采用输入数组的数据,根据输入的dimension size参数确定的维数,重新构建一个数组。图4-18(a) 用连接的一维数组的数据构建了一个4行3列的二维数组,数值不足时填补0。图4-18(b) 用连接的二维数组的数据构建了一个8个成员的一维数组,用不完的数据甩掉了。图4-18(c) 用连接的5行5列的二维数组的数据构建一个4行3列的二维数组,用不完的数据也甩掉了。从图4-18(b

20、)和图4-18(c)可以看出它采用原数组的数据是从第一行开始,顺序提取,用完前一行再用后一行。4.2 簇4.2.1 簇的概念簇是一种数据类型,一个簇就是一个由若干不同数据类型的成员组成的集合体,类似于C语言中的结构体和Pascal语言中的记录。可以把簇想象成一束通讯电缆线,电缆中每一根线就是簇中一个不同的数据元素。使用簇可以为编程带来以下的便利。1. 把程序代码窗口中不同位置,不同数据类型的多个数据攒在一起,减少了连线的混乱。2. 子程序有多个不同数据类型的参数输入输出时,把它们攒成一个簇可以减少连接板上端口的数量。3. 某些控件和函数必须要簇这种数据类型的参数。簇的成员可以是任意的数据类型,

21、但是必须同时都是控制件或同时都是显示件。簇的成员有一种逻辑上的顺序,这是由它们放进簇的先后顺序决定的,与它们在簇中摆放的位置无关。前面的成员被删除时,后面的成员会递补。改变簇成员逻辑顺序的方法是在簇上弹出菜单,选Reorder Controls In Cluster弹出一个对话框,依次为簇成员指定新的逻辑顺序。4.2.2 簇的创建创建簇的方法与创建数组的方法极其相似。1. 在前面板上创建簇图4-19是在前面板上创建簇的步骤。先在Array & Cluster控件子模板中选择一个簇的空壳放到前面板上;然后根据需要放置的控件多少用定位工具调整簇的空壳的大小;从控件模板中取控件或从前面板上移动控件到

22、簇的空壳中。这个簇的数据类型以及它是控制件还是显示件全取决于放入的控件。图4-19中放了一个数值型控制件,一个字符型控制件和一个布尔型控制件。图4-19 在前面板上创建簇2. 在程序代码窗口中创建簇常量在程序代码窗口中创建簇常量最一般的方法类似于在前面板上创建数组。先从Cluster函数子模板中选择簇的空壳放到程序代码窗口中,然后根据需要选择一些数据常量放到空簇中。图4-20 在程序代码窗口中创建簇常量图4-20选择了一个数值型常量,一个字符型常量,一个布尔型常量。也可以把前面板上的簇控件拖动或拷贝到程序代码窗口中产生一个簇常量。只有数值型成员的簇边框是棕色的,其它是粉红色的。3. 簇成员赋值

23、用上述方法创建的簇常量,它的成员还没有有效的值,从外观上看都显示为灰色。要根据需要用操作工具或定位工具为簇成员逐个赋值。4. 用簇函数创建簇在下一节介绍。4.2.3 簇函数1. 解析簇函数 UnbundleUnbundle 函数刚刚放进程序代码窗口时,有一个输入端口和两个输出端口。如图4-21(a)所示。可以用定位工具对端口进行缩放。如图4-21(b)所示。但是这似乎没有多大必要,因为它连接一个输入簇以后,端口数量就自动与簇的成员数一致了,而且不能再改变。每个输出端口对应一个簇成员,端口上显示出这个成员的数据类型。各个簇成员在端口上出现的顺序与它的逻辑顺序一致。如图4-21(c)所示。图4-2

24、1(d )是解析出来的簇成员。连接几个输出是任意的。(a) (b) (c) (d) 图4-21 Unbundle 函数 2. 合成簇函数 Bundle (a) (b) (c)图4-22 Bundle 函数Bundle函数有两种基本用法,在图4-22(a)中,用这个函数将三个数据攒成一个簇。Bundle 函数的输入端口数量也是可以任意增减的。在这种用法中,cluster 参数没有连接数据。在图4-22(b)中,用这个函数替换一个簇中的成员。将原有的簇连接到cluster 参数上,输入端口自动与这个簇的成员匹配。此时希望替换哪个成员就把用做替换的数据连接到哪一个端口,如果用做替换的数据与原数据类型

25、不符,就不允许连线。在这里用一个双精度浮点数去替换整型数,虽然允许连线,但是输入数据被进行了强制转换。图4-22(c)的用法实际上与图4-22(a)是一致的,只是输入参数中有一个是簇,输出的结果是由一个簇(椭圆中部分)、一个数值和一个字符串组成的簇。如果需要向簇中追加成员,就得把簇解开,再和新成员一起攒成一个簇。 3. 按名称解析簇成员函数Unblundle By NameUnblundle By Name 函数按指定的成员名称从簇中提取成员。这个函数刚放进程序代码窗口中只有一个输出端口,当它的输入端口连接了一个簇,这个输出端口就就显示出簇中逻辑上第一个成员的名称。LabVIEW 的前面板控件

26、一般都有一个默认的名称,但是许多常量没有默认名称。如果簇中的成员没有名称,它就不会出现在输出端口中,这上时就要在它的标签中为它输入名称。Unblundle By Name 函数的输出端口可以任意缩放,它允许多次解析同一个成员。选择哪一个端口解析出哪一个成员的方法仍然是在端口上弹出菜单,选Select Item ,如图4-23所示。图4-23 按名称解析簇4. 按名称替换簇成员函数 Bundle By Name图4-24 按名称替换簇成员Bundle By Name函数只能按照簇中成员的名称替换簇中的成员。这个函数放进程序代码窗口中只有一个输入端口,当它的cluster 参数上连接了一个簇,输入

27、端口就出现这个簇逻辑上第一个成员的名称。希望替换哪个成员就在这个端口上弹出菜单选择哪个成员,并连接一个类型匹配的数据。输入端口的数量也是可以改变的。5. 建立簇数组函数 Build Cluster ArrayBuild Cluster Array函数只要求输入数据类型全一致,不管它们是什么数据类型,一律转换成簇,然后连成一个数组。数组成员不能是数组,但是在图4-25中,3个一维数组被转成3个簇,然后建成一个数组。这个数组有3个成员,每个成员都是一个簇,这个簇中只有一个一维数组。图4-25 建立簇数组函数6. 插接簇数组函数 Index & Bundle Cluster ArrayIndex &

28、 Bundle Cluster Array 函数从输入的n个一维数组中依次取值,相同索引值的数据被攒成一个簇,所有的簇构成一个一维数组。插接成的簇数组长度与输入数组中长度最短的一个相等,长数组最后多余的数据被甩掉,如图4-26所示。图4-26 插接簇数组函数7.簇和数组之间转换的函数 Array To Cluster 和Cluster To Array(a) (b)图4-27 簇与数组之间转换的函数Array To Cluster 函数把输入的一维数组每个成员作为新建立的簇的一个成员。默认的簇有9个成员,数组成员不足时补0。如图4-27(a)所示。Cluster To Array 函数将输入簇

29、的每个成员作为新建立的一维数组的一个成员,簇成员数据类型必须一致。4.3 字符串4.3.1 字符串的概念字符串是一系列ASCII码字符的集合,这些字符可能是可显示的,也可能是不可显示的,例如换行符、制表位等。程序中通常在以下情况用到字符串。 传递文本信息。 用ASCII码格式存储数据。把数值型的数据作为ASCII文件存盘,必须先把它转换为字符串。 与传统仪器的通信。在仪器控制中,需要把数值型的数据作为字符串传递,然后再转化为数字。4.3.2 字符串控件字符串出现在前面板上所用的控件一般只有String & Path 控件子模板的String Control 、String Indicator

30、和List & Table 控件子模板的Table。有些控件虽然也可以输入字符串,但是它的数据类型实际上并不是字符型的,例如Listbox 和Text Ring 等。使用操作工具或标签工具可以在字符串控制件中输入或修改文本。扩大字符串控制件和显示件的显示区域用定位工具拖动它的任意一角。如果需要减少字符串控件在前面板上占的位置并能更多的显示字符,可以弹出菜单选Visible ItemsScrollbar命令。对于String Control和String Indicator,此命令选项为灰色时,应先扩大字符串控件窗口的垂直尺寸。字符串在String Control 和String Indicat

31、or 中的显示形式有以下几种。 正常显示。 “”代码显示。对非显示符号加“”代码。由于图4-28中的字符串LabVIEW 后面敲了一个回车,所以“”代码显示为LabVIEWn。其它“”代码见表4-1。 口令显示。用“*”代替所有字符。 16进制显示。用16进制数显示所有字符的ASCII码值。在不同的显示形式之间切换通过弹出菜单进行,如图4-28所示。图4-28 字符的显示形式表4-1 LabVIEW的“”代码代码释义b前移一位f表格转换n换行r回车t制表位s空格Table是一个字符串二维数组的表显示形式,它的每一个单元格显示一个字符串。刚放进程序代码窗口的Table 不全具备图4-29所示的显示项,可以在弹出菜单的Visible Items 选项中选择这些显示项。图4-29 Table4.3.3 字符串函数LabVIEW 提供了大量的字符串操作函数,这里选择编程中最常用的一些加以介绍。图4-30 字符串函数模板(a) (b) (c) (d) 图4-31 字符串操作函数(一) 1. 字符串长度函数String Length 返回字符串所包含的字符个数值。如图4-31(a)所示。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2