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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

LV讲义第三章.docx

1、LV讲义第三章第三章 数据类型:数组、簇和波形概述数组是同类型元素的集合。一个数组可以是一维或者多维,如果必要,每维最多可有2311个元素。可以通过数组索引访问其中的每个元素。索引的范围是0到n 1,其中n是数组中元素的个数。图所显示的是由数值构成的一维数组。注意第一个元素的索引号为0,第二个是1,依此类推。数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。图数组示意图簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据。它类似于C语言中的stuct。使用簇可以把分布在流程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度。减少子VI的连接端子的数量。波形(W

2、aveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。3 数组的创建及自动索引3 创建数组一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。如果需要用一个数组作为程序的数据源,可以选择FunctionsArrayArray Constant,将它放置在流程图中。然后再在数组框中放置数值常量、布尔数还是字符串常量。下图显示了在数组框放入字符串常量数组的例子。左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第个元素为:”ABC”,后两个元素均为空。图数组的创建在前面板中创建

3、数组的方法是,从Controls模板中选择Array & Cluster,把数组放置在前面板中,然后选择一个对象(例如数值常量)插入到数组框中。这样就创建了一个数值数组。也可以直接在前面板中创建数组和相应的控制对象,然后将它们复制或者拖曳到流程图中,创建对应的常数。还有很多在流程图中创建和初始化数组的方法,有些功能函数也可以生成数组。3 数组控制对象、常数对象和显示对象通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。数组元素不能是数组、图表或者图形。如果您想查看一些数组的例子,请查看ExamplesGeneralarrays.l

4、lb中的例子。3 自动索引For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。这些功能称为自动索引。在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。在输出通道也要执行同样的工作数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。在默认情况下,对于每个连接到For循环的数组都会执行自动索引功能。可以禁止这个功能的执行,方法是用鼠标右键单击通道(输入数组进入循环的位置),在快捷菜单中选择Disable Indexin

5、g。练习 创建一个自动索引的数组目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。前面板图练习的面板1. 打开一个新的前面板。2. 选择ControlsArray & Cluster,在前面板中放置一个数组。设置它的标签为Waveform Array。3. 选择ControlsNumeric,在数组框中插入一个数字式显示对象。如右图所示。它用于显示数组的内容。4. 选择ControlsGraph,在前面板中放置一个波形图。设置它的标签为Waveform Graph。5. 隐藏图例和模板。6. 用鼠标右键单击图形,并在快捷菜单中取消选中 Y ScaleAuto

6、scale Y,禁止自动坐标功能。7. 使用文本工具,把Y轴的范围改为-0.5到1.5。流程图8. 按照下图创建流程图。图练习的流程图 由FunctionsSelect a VI寻找LabVIEWactivity目录下的Generate Waveform VI ,它的作用是返回波形中的某一点。这个VI需要输入一个索引,我们将循环周期连接到这个输入。 注意Generate Waveform VI连出来的连线在循环边界变成一个数组时会变粗,正是在这个边界处形成了一维数组。 For循环会自动累计边界内的数组。这种功能叫做自动索引。在这个例子中,连接到循环计数输入的数值常数令For循环创建了一个由10

7、0个元素组成的数组。 Bundle函数( Functions Cluster)将图块中的各个组件组合成一个簇,在正确连接以前需要改变该函数的图标的大小。将移位工具放在图标的左下角。变形工具会变成如左图所示,拖曳鼠标直到出现第三个输入端子。 数值常数( FunctionsNumeric)三个数值常数用于设置For循环执行的周期数N=100,初始X=0和delta X=1。9. 从前面板执行该VI。该VI将把自动索引后的波形图数组显示在波形图中。10. 把 X的delta值改为0.5,X的初始值改为20。再次执行该VI。注意,波形图现在同样显示100个点,而每个点的初始值为20,X的delta值为

8、0.5(见X轴)。11. 只需在显示器中输入元素的索引号就可以查看波形数组中的任何元素。如果输入的数比数组的元素个数大,那么显示器将变暗,表示您没有为该元素设置索引。如果需要一次查看多个元素,可以通过改变数组显示对象的大小来实现。 把定位工具放置在数组框的右下角。工具将变成右图所示的变形工具。当工具变形时,用鼠标拖曳数组的右边或者下边。数组现在就可以按照元素索引的上升顺序显示多个素,以某个与指定索引对应的元素开始,如下图所示。图练习中多个数组元素的同时观察在前面的流程图中,您为波形图指定了初始的X值和delta X值。默认的X初始值是0,delta X 值是1。这样,也可以把波形数组直接连接到

9、波形图端子, 而无需指定初始的X值和delta X值,如图所示。图练习使用默认X及Delta X时简化后的流程图12. 按上图删除 Bundle功能函数和它所连接的常数对象。方法是用移位工具选择该功能函数和连接的常数对象,按下。再选择EditRemove Bad Wires。按照上图完成流程图的连线。13. 执行该VI。注意初始的X值是,delta X值是1。 多图区图形可以创建含有多条曲线的图形,方法是创建一个数组,用它来汇集传给单图区图形的类型的数据元素。图练习多图区图形的流程图14. 按照上图创建流程图。 正弦函数(FunctionsNumericTrigonometric)在这里,它用

10、于在For循环中创建一个由数据点组成的数组,表示一个正弦波周期。 Pi常数(FunctionsNumericAdditional Numeric Constants) Build Array (FunctionsArray)在这里,它用于创建合适的数据结构(一个二维数组),在波形图中绘制两条曲线。用移位工具拖曳边角可以增大该函数的面积,创建两个输入端子。15. 返回前面板,执行该 VI。注意同一个波形中的两个图区。默认情况下,它们的X初始值都是0,delta X初始值都是1。下图是该程序的运行结果(前面板未改动)。16. 把该VI保存为LabVIEWActivity 目录中的Graph Wav

11、eform Arrays.vi。17. 可以修改图形中的某个图区的外观。方法是,用鼠标右键单击这个图形,再从弹出菜单选择对应的图例。图练习多图区图形的面板显示练习 结束。在上面这个例子中,由于计算端子连接了一个值为100的常数对象,所以 For循环将执行100次。下面这个例子显示了另外一种控制循环执行次数的方法。更详细的例子建议调阅ExamplesFundamentals Graphs and ChartsGraph ExamplesWaveform Graph 例子。练习 对输入数组使用自动索引功能目的:打开并执行一个VI,它将在一个For循环中使用自动索引功能处理一个数组。1. 选择Fil

12、eOpen,打开ExamplesGeneralarrays.llb中的Separate Array Values VI 。2. 打开流程图。下面的示意图显示的是在TRUE和FALSE时的情况。图练习的流程图注意,Input Array引出的连线与For循环外的粗线不同,表示这是一个数组,而循环内部的细线则表示这是一个数组元素。 数组元素在每个循环期间将自动编号。 用自动索引功能设置 For 循环的计数器 注意,计数器端子还没有连线。当您对某个进入For循环的数组使用自动索引功能时,循环就将根据数组的大小执行相应的次数,这样就无需连接某个值到计数器的端口。如果对一个以上的数组使用自动索引功能,或

13、者在使用自动索引功能之外还需要设置计数器时,实际的循环次数将是其中最小的数。3. 执行该VI。在输入的八个数中,可以看到4个属于正数数组,另外4个属于负数数组。4. 从流程图中将一个值为5的常数对象连接到For 循环的计数器端子。执行该 VI。可以看到尽管输入数组仍然有八个元素,但是3个位于正数数组,另外2个位于负数数组。这说明,如果设置了N并开启了自动索引功能,那么实际循环的次数将取较小的数。5. 关闭该VI,不要保存任何修改。注:练习 的算法说明下面是一段伪代码,解释上面的算法,假定输入数组为A(已赋值),B(正数)、C(负数)。Sbr 、Scr分别是与B数组、C数组对应的右寄存器数组,S

14、bl 、Scl分别是与B数组、C数组对应的左寄存器数组,size运算为测数组实际大小,ins运算为将一个数插入数组中最左边的空位。B=0初始化C=0K=size(A(.)测A数组大小For i=0 to k-1 p=A(i)取第I个元素值 if p=0 then Ins p,Sbr将p值插入右寄存器 Else Ins p,Scr end if Sbl=Sbr右寄存器值送给左寄存器 Scl=ScrNext iB=Sbr右寄存器值送到正数组C=ScrPrint B显示Print CEnd练习 结束。数组功能函数LabVIEW提供了很多用于操作数组的功能函数,位于FunctionsArray中。其中

15、包括Replace Array Element,、Search 1D Array、Sort 1D Array、 Reverse 1D Array和 Multiply Array Elements等等。 创建数组Build Array函数(FunctionsArray),用于根据标量值或者其他的数组创建一个数组。开始时,Build Array函数具有一个标量输入端子。您可以根据需要向该功能函数中加入任意数量的输入,输入可以是标量或者数组。如果要添加其他的输入,用鼠标单击函数的左侧,在弹出菜单中选择Add Element Input或者Add Array Input。还可以用变形工具来增大节点的面

16、积(把移位工具放置在某个对象的边角就会变成变形光标)。也可以使用变形光标或者选择Remove Input来删除输入。下图显示了利用流程图中的常数对象的值创建和初始化数组的两种方法。左侧的方法是,将5个字符串常数放入一个一维字符串数组中。右侧的方法是,将三组数值常数放入三个一维数值数组,再将这三个数组组成一个二维数组。这样最后产生的是一个3x3的数组,三列分别是3, 4, 7; 1, 6, 2; 5, 2, 8.。还可以通过结合其他的含有标量元素的数组来创建数组。例如,假设有两个数组,三个标量元素,可把它们组成一个新的数组,顺序是:数组1,标量1,标量2,数组2,标量3。 初始化数组(Initi

17、alize Array)用于创建所有元素值都相等的数组。下图中,该功能函数创建了一个一维数组。元素输入端子决定每个元素的数据类型和数值,维长度输入端子决定数组的长度,例如,假设元素类型是长整型,值为5,维长度为100,那么创建的数组是一个一维的、由100个值为5的长整型元素组成的数组。也可以从前面板控制端子、流程图常数或者程序其他部分的计算结果得到输入。创建和初始化一个多维数组的方法是,用鼠标右键单击函数的右下侧,在弹出菜单中选择Add Dimension。还可以使用变形光标来增大初始化数组节点的面积,为每个增加的维添加一个维长度输入端子。也可以通过缩小节点的方法来删除维,即从函数的弹出菜单中

18、选择Remove Dimension,或者使用变形光标。下面的示意图显示了怎样初始化一个三维数组。如果所有的维长度输入都是0,该函数会创建一个具有指定数据类型和维数的空数组。 数组大小Array Size函数,返回输入数组中的元素个数。 数组子集(Array Subset)选取数组或者矩阵的某个部分。该函数可以返回从某个指针开始的部分数组,并包括了长度元素。下图显示了一些数组子集的例子,注意,数组索引从0开始。 索引数组(Index Array)用于访问数组中的某个元素。下图显示了一个索引函数的例子,它用于访问数组中的第三个元素。注意,因为第一个元素的索引为0,所以第三个元素的索引是2。将一个

19、二维数组与Index Array函数相连,Index Array就会含2个索引端子。将一个三维数组与Index Array函数相连,Index Array就会含3个索引端子。余类推。可以使用的索引端的符号是一个黑方快,被禁止使用的索引端(Disable Indexing)是一个空心的小方框。当给一个被禁止使用的索引端连接上一个Constant 或 Control是它会自动变为黑方快,即变为可以索引,相反原来一个可以使用的索引端上连接的Constant 或 Control被删去时,索引端符号会自动变为空心的小方框,即变为禁止使用。也可以按照任何维的组合提取子数组,下面的示意图显示了怎样从一个二维

20、数组中提取一个一维的行或者列数组。还可以从一个三维数组中提取一个二维数组,方法是禁止两个索引端子,或者通过禁止一个索引端子提取一个一维数组。下图显示了从三维数组提取数组的各种方法。下面的规则对使用剪切数组进行了规定:输出对象的维数必须等于被禁止的索引端口的数目。例如0个索引端口被禁止标量元素1个索引端口被禁止二维元素2个索引端口被禁止三维元素启动的端子所连接的数值必须指定输出元素。这样,您就可以理解,上图中左下方的例子的作用是,利用0列和3行的所有元素产生一个一维数组,而右上方的例子的作用是利用第一帧中的所有元素产生一个二维数组。新的第0个元素是与原有元素最近的元素。练习 使用创建数组功能函数

21、目的:使用创建数组函数,把一些元素和输出组织成一个更大的数组。图练习的面板和框图1 按照图创建一个前面板。2. 从ControlsNumeric模板中选择一个数字控制对象放置在前面板中,设置它的标签为scalar 1。3. 复制并粘贴该数字显示对象,创建两个新的对象,并分别设置它们的标签为scalar 2和scalar 3。4. 创建一个数字控制对象的数组,设置它的标签为array 1。复制并粘贴它,创建一个新的数组,设置它的标签为array 2。5. 在array 1、scalar 1、 scalar 2、scalar 3、array 2中输入数值1到9。6. 创建流程图。选择Functio

22、nsArray,在流程图中放置一个Build Array功能函数。用定位工具增大函数额面积,以容纳5个输入。7. 把数组和标量与Build Array连接起来。创建输出的一维数组,它由 array 1、scalar 1、 scalar 2、array 2、scalar 3中的元素所组成,如图所示。8. 执行该VI。可以看到array 1、scalar 1、 scalar 2、scalar 3、array 2中的数值出现在同一个一维数组中。9. 保存该VI为LabVIEWActivity目录下的Build Array.vi。练习 结束。什么是多态化(Polymorphism)?多态化是指一种函数

23、功能,即可以协调不同格式、维数或者显示的输入数据。大多数LabVIEW的函数都是多态化的。例如,图给出了Add函数的一些多态化组合。图多态化组合的例子第一个组合中,两个标量相加,结果还是一个标量。第二个组合中,该标量与数组中的每个元素相加,结果是一个数组。数组是数据的集合。第三个组合中,一个数组的每个元素被加到另一个数组的对应元素中。您还可以使用其他的组合,例如数值簇或者簇数组。可以把这些准则应用到其他的G语言函数或者数据类型。G语言函数对于各种情况都具有多态性功能。有些函数接受数值和布尔输入,而有些函数接受其他任何数据格式的组合。如果您想了解更多关于多态化的知识,请参阅Online Refe

24、renceFunction and VI Reference。簇创建簇控制和显示在前面板上放置一个簇壳(Cluster shell)就创建了一个簇。然后你可以将前面板上的任何对象放在簇中。例如数组,你也可以直接从Control 工具板上直接拖取对象堆放到簇中。一个簇中的对象必须全部是Control,或全是Indicator,不能在同一个簇中组合Control与Indicator,因为簇本身的属性必须是其中之一。一个簇将是Control或Indicator,取决于其内的第一个对象的状态。如果需要可以使用工具重置簇的大小。右图所示是一个含个Control的簇。也可以在流程图上用类似的方法创建簇常数

25、。如果你要求簇严格地符合簇内对象的大小,可在簇的边界上弹出快速菜单选择自动定义大小(Autosizing)簇的序(Order)簇的元素有一个序,它与簇内元素的位置无关。簇内第一个元素的序为0,第二个是1,等等。如果你删除了一个元素,序号将自动调整。如果你想将一个簇与另一个簇连接,这两个簇的序和类型必须同一。如果想改变簇内元素的序,可在快速菜单中选择ReOrder Controls In Claster,这时会出现一个窗口,在该窗口内可以修改序。使用簇与子VI传递数据一个VI的连接窗口最大有28个端子,如果你不希望使用全部28个端子传递数据,这既烦琐又易出错。通过把控制或显示对象捆绑成一个簇的方

26、法,仅使用一个端子就可以实现该功能。 捆绑(Bundle)数据Bundle功能将分散的元件集合为一个新的簇,或允许你重置一个已有的簇中的元素。可以用位置工具拖曳其图标的右下角以增加输入端子的个数。最终簇的序是取决于被捆绑的输入的顺序。右图中Bundle图标中部的Claster端子用于用新元素重置原簇中的元素。 分解(Unbundle)簇 Unbundle功能是Bundle的逆过程,它将一个簇分解为若干分离的元件。如果你要对一个簇分解,就必须知道它的元素的个数。LabVIEW还提供一种可以根据元素的名字来捆绑或分解簇的方法,稍后介绍。练习 簇目的:学习创建簇、分解簇,再捆绑簇并且在另一个簇中显示

27、其内容。图练习的面板和框图打开前面板,创建一个簇壳(Array & Cluster palette),标签改为Input Cluster,拖曳至适当大小。在这个簇壳中放置一个数字Control,两个布尔开关,和一个串Control。仿照以上步骤,创建Output Cluster如上。注意将各Control改为相应的indicator。用快速菜单查看两个簇的序是否一致,若有差别,改之。在前面板上设置一个STOP按钮。注意其缺省值为FALSE,不要改变它的状态。建立如上面所示的流程图。注意在STOP按钮与循环条件端子之间接入了一个NOT函数,因为按钮缺省值为FALSE,经NOT函数后变为TRUE,

28、这就意味着当按钮状态不变时,循环继续执行,相反一旦按钮动作,则循环终止。在6i版本中这个设置可以简化,不必使用NOT函数,直接将STOP按钮与循环条件端子相连,然后用鼠标右键点击循环条件端子,选择stop if true即可。结果如右图所示。返回前面板并运行VI。在输入簇中输入不同的值观察输出。关闭并保存程序。Cluster Exercise.vi练习 结束用名称捆绑与分解簇有时你并不需要汇集或分解整个簇,而仅仅需要对其一、两个元素操作。这时你可以用名称来捆绑与分解簇。在Cluster 工具模板中除了Bundle及Unbundle功能外,还提供有Bundle By Name和Unbundle

29、By Name功能。它们允许根据元素的名称(而不是其位置)来查询元素。与Bundle不同,使用Bundle By Name可以访问你需要的元素,但不能创建新簇;它只能重置一个已经存在的簇的元素,同时你必须给Bundle By Name图标中间的输入端子一个输入以申明要替换其元素的簇。Unbundle可返回指定名称的簇元素,不必考虑簇的序和大小。例如,如果你想重置上例中Boolean 2的值,就可以使用Bundle By Name功能而不必担心簇的序和大小。与此类似如果你要访问串的值,可以使用Unbundle By Name功能。图用名称操作簇在上面的例子中,Cluster Control中有两

30、个元素,一个是数据类型(名称是Numeric),另一个是字符串型(名称是String),另一个控制是字符串“ABCD”,框图如右所示,运行该程序,即可将簇内的字符串值重置。(本例中为了使Bundle By Name的输入端由Numeric 变为String,需使用快速菜单中的Select Item 项操作。)数组和簇的互换有时你会发现,将数组变为簇(或者相反)很方便。尤其是因为LabVIEW包括的关于数组的操作功能多于簇。例如,前面板上有一个多按钮的簇,你希望颠倒这些按钮值的序。好了,Reverse 1D Array功能正好可用,但是它仅可用于数组。这没关系,你可以使用功能Cluster to Array将簇转换为数组,使用Reverse 1D Array切换开关的值,最后再利用Array to Claster 变换回簇。Waveform数据类型在数据采集和信号分析中经常要遇到波形数据,在LabVIEW 6i中增加了Waveform数据类型,使得波形的描述更加简洁。Waveform数据类型包含了波形的数据(Y)、起始时刻(t0)和步长X,使用Waveform 模板的Build Waveform 函数可以建立一

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1