lABVIEW关于数据类型的编辑:数组、簇和波形
LabVIEW中的波形数据
LabVIEW中的波形数据与其他基于文本模式的编程语言不同,在LabVIEW中有一类被称为波形数据的数据类型,这种数据类型更类似于“簇”的结构,由一系列不同数据类型的数据构成。
但是波形数据又具有与“簇”不同的特点,例如它可以由一些波形发生函数产生,可以作为数据采集后的数据进行显示和存储。
这一节将主要介绍创建波形数据以及处理波形数据的方法。
1 波形数据的创建LabVIEW中的波形数据既可以由一些用于产生波形的函数、VIs以及Express VIs生成,也可以由数据采集函数从数据采集卡中采集数据而得到。
下面主要介绍用函数、VIs以及Express VIs生成波形数据的方法。
在LabVIEW中,与创建波形数据相关的函数、VIs以及Express VIs主要位于函数选板中的波形(Waveform)子选板以及信号处理(Signal Processing)子选板中,两个选板分别如图6-19以及图6-20所示。
图6-19 波形子选板图6-20 信号处理子选板下面介绍一些常用的用于产生波形数据的函数、VIs以及Express VIs的使用方法。
1.基本函数发生器函数(Basic Function Generation.vi)基本函数发生器函数可以产生正弦波、锯齿波、方波和三角波四种波形,并可以任意设定波形的频率、幅值、相位以及偏移量(叠加的直流分量)等属性。
图6-21所示的程序演示了基本函数发生器函数产生多种波形的方法,在例程中,用户可以指定波形的类型(正弦波、锯齿波、方波或三角波)、幅值、频率、相位以及叠加的直流分量的幅值等属性,根据这些属性生成相应的波形。
程序的后面板如图6-22所示。
图6-21 基本函数发生器函数演示程序的前面板图6-22 基本函数发生器函数演示程序的后面板2.调谐与噪声波形发生函数(Tones and Noise Waveform.vi)调谐与噪声波形发生函数用以产生多个一定频率、幅值、相位的正弦信号叠加的波形数据,同时可以模拟噪声和直流分量,并叠加到已有的波形数据上面。
labview数组、簇和图形的区别
数组是同类型元素的集合。
一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。
可以通过数组索引访问其中的每个元素。
索引的范围是0到n – 1,其中n是数组中元素的个数。
图3-1所显示的是由数值构成的一维数组。
注意第一个元素的索引号为0,第二个是1,依此类推。
数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。
图3-1数组示意图簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据。
它类似于C语言中的stuct。
使用簇可以把分布在流程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度。
减少子VI的连接端子的数量。
波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。
3.2数组的创建及自动索引3.2.1创建数组一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。
如果需要用一个数组作为程序的数据源,可以选择Functions»Array»Array Constant,将它放置在流程图中。
然后再在数组框中放置数值常量、布尔数还是字符串常量。
下图显示了在数组框放入字符串常量数组的例子。
左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素均为空。
图3-1数组的创建在前面板中创建数组的方法是,从Controls模板中选择Array & Cluster,把数组放置在前面板中,然后选择一个对象(例如数值常量)插入到数组框中。
这样就创建了一个数值数组。
也可以直接在前面板中创建数组和相应的控制对象,然后将它们复制或者拖曳到流程图中,创建对应的常数。
还有很多在流程图中创建和初始化数组的方法,有些功能函数也可以生成数组。
3.2.2数组控制对象、常数对象和显示对象通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。
LabVIEW中的波形数据
LabVIEW中的波形数据与其他基于文本模式的编程语言不同,在LabVIEW中有一类被称为波形数据的数据类型,这种数据类型更类似于“簇”的结构,由一系列不同数据类型的数据构成。
但是波形数据又具有与“簇”不同的特点,例如它可以由一些波形发生函数产生,可以作为数据采集后的数据进行显示和存储。
这一节将主要介绍创建波形数据以及处理波形数据的方法。
1 波形数据的创建LabVIEW中的波形数据既可以由一些用于产生波形的函数、VIs以及Express VIs生成,也可以由数据采集函数从数据采集卡中采集数据而得到。
下面主要介绍用函数、VIs以及Express VIs生成波形数据的方法。
在LabVIEW中,与创建波形数据相关的函数、VIs以及Express VIs主要位于函数选板中的波形(Waveform)子选板以及信号处理(Signal Processing)子选板中,两个选板分别如图6-19以及图6-20所示。
图6-19 波形子选板图6-20 信号处理子选板下面介绍一些常用的用于产生波形数据的函数、VIs以及Express VIs的使用方法。
1.基本函数发生器函数(Basic Function Generation.vi)基本函数发生器函数可以产生正弦波、锯齿波、方波和三角波四种波形,并可以任意设定波形的频率、幅值、相位以及偏移量(叠加的直流分量)等属性。
图6-21所示的程序演示了基本函数发生器函数产生多种波形的方法,在例程中,用户可以指定波形的类型(正弦波、锯齿波、方波或三角波)、幅值、频率、相位以及叠加的直流分量的幅值等属性,根据这些属性生成相应的波形。
程序的后面板如图6-22所示。
图6-21 基本函数发生器函数演示程序的前面板图6-22 基本函数发生器函数演示程序的后面板2.调谐与噪声波形发生函数(Tones and Noise Waveform.vi)调谐与噪声波形发生函数用以产生多个一定频率、幅值、相位的正弦信号叠加的波形数据,同时可以模拟噪声和直流分量,并叠加到已有的波形数据上面。
基于labview的数组簇和波形
数
组
数组是同一类型数据的集合。 LabVIEW中的数组元素可以为任何数值类 型、布尔型、字符串和簇。
数组、图表、图形不能作为数组元素
数组
一个数组可以是一维的,在内存允许的情 况下,也可以是多维的,每维最多可以包 含231_1个元素。 可以通过数组指针(索引index)访问数组 元素,指针在0到N-1的范围内变化,而 N就是数组元素的个数。
多曲线波形Graph
图形显示举例
创建一个VI来测量温度并将测量结果显示在 波形图表中。
设计一个VI来测量温度,每隔0.25秒测一次,共测 定10秒。在数据采集过程中,VI将在波形Chat上实 时地显示测量结果。采集过程结束后,在Graph上 画出温度数据曲线及最佳拟合曲线,并算出温度的 最大值,最小值和平均值。 温度上下限,温度超出上下限则发出告警
更多图形显示例子请参见 \\National Instruments\LabVIEW 8.6\examples\Waveform
推荐一些学习网站
\china 开源代码社区OpenG /bbs /myspace/blog/in dex_43958.html#sort_1 http://ruanqizhen.sFra / VI图形显示
图形是以曲线来显示数据 常用的二维图形控件有波形Chart和波形 Graph和XY Graph 可显示单条曲线和显示多条曲线。 图形控件有很多特性,可以设置和修改, 改变曲线显示的格式。
波形chart和波形Graph的使用
图形Chart可以交互式绘制曲线,常用于 循环中,可以保存并显示已采集到的数据, 当新数据到来时可以追加显示。 图形Graph一次性绘制预先产生的数据数 组,不能将新数据追加到以前产生的数据 上
4数组、簇和波形
获得数组子集
获得输入数组的一部分子集数组\获得数组子集.vi
获得数组的最大值最小值数组\获得数组子集.vi 改变数组的维度数组\改变数组维度.vi 一维数组排序函数数组\改变数组维度.vi 搜索一维数组数组\改变数组维度.vi 划分一维数组数组\改变数组维度.vi 反转一维数组数组\改变数组维度.vi 线性插值、阈值函数数组\线性插值和阈值函数.vi 交叉排列函数、交叉抽取数组函数数组\交叉排列数 组.vi 二维数组转置函数数组\二维数组转置函数.vi
簇 (Cluster)
• 一个比较特别的数据类型,它可以将几种 不同的数据类型集中到一个单元中形成一 个整体 • 可将多个相关数据集中到一起,这样只需 要一条数据线就可以把多个节点连接到一 起。
簇的创建及使用
簇控件的位置,已定义的簇。
簇控件 错误输入控件 错误输出控件
簇操作函数
解包函数 打包函数 按元素名称 解包函数 按元素名称 打包函数
五、数组、簇
数组
1. 数组控件 2. 数组之间的算术运算 3. 数组函数
数组的创建
控件和指示数组 常量数组 循环建立数组 用For循环来创建数组是最佳的,因为循 环开始前它已经分配好了内存,定义好了数 组的长度
1.数组控件
和C语言一样,数组是相同类型的数据元素的集合, 数值、布尔量、字符串都可以。 一般数值数组比较经常使用。 一个数组可以是一维或者多维,如果必要,每维最多 可有 231 − 1 个元素。其前提是内存允许。
子数组替换函数
用于替换数组的部分内容。 数组\子数组替换函数.vi
3
源数组
4
输出数组
2 0 1 2 3 0 0 0 0
替换数组第2行的前3个元素
基于labview的数组、簇和波形
单曲线和多曲线XY Graph
多曲线波形Graph
图形显示举例
创建一个VI来测量温度并将测量结果显示在 波形图表中。
设计一个VI来测量温度,每隔0.25秒测一次,共测 定10秒。在数据采集过程中,VI将在波形Chat上实 时地显示测量结果。采集过程结束后,在Graph上 画出温度数据曲线及最佳拟合曲线,并算出温度的 最大值,最小值和平均值。
数组函数举例
设计一个三基色的混色器
设计一个VI,产生8个随机数组成的数组,先倒序排 列,按从小到大排列,并且求出最大值、最小值。
使用 For 循环的自动索引功能创建数组,并 用一个图形(Graph)显示该数组
更多例子请参考labview软 安装路径下:
……\\LabVIEW8.6\exmaples \general\Arrays.llb
生成数 组行
生成数 组列
课后思考并练习
如何用while循环创建一维或二维数组?
1.用while循环创建数组时,要打开自动索引; 2.While循环是在运算之后检查条件端子; 3.要设置停止的条件。
1.数组大小 Array Size
数组函数子模板
2.数组检索 Index Array
3.替换数组元素Replace Array Subset
4.插入数组元素 Insert Into Array
5.删除元素 Delete From Array
6.初始化数组Initialize Array
7.创建数组 Build Array
8.子数组 Array Subset
9.一维数组循环移位.Rotate 1D Array
10.一维数组倒置 Reverse 1D Array
LabVIEW(十):数组和簇
LabVIEW(⼗):数组和簇★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★⼀、数组1、创建数组(1)、前⾯板右键>“数组、矩阵与簇”>数组。
(2)、前⾯板右键>(选择要添加的数组数据类型,⽐如创建数值数组)数值>将“数值输⼊控件”拖⼊数组中。
(3)、选中数组右键>表⽰法>”DBL(双精度)”或“I32(长整型)”等,根据需要修改。
2、查看数组⼤⼩:(前⽂已有赘述)选中索引框右键>⾼级>显⽰最后元素3、改变数组的维度选中索引框>“添加维度”或“删除维度”4、数组的初始化将数组的“数值输⼊控件”往下拖拉以显⽰更多元素,在输⼊控件中填⼊数值。
初始化完毕。
5、“数组⼤⼩”函数:返回数组每个维度中元素的个数程序框图右键>数组>数组⼤⼩>为“数组⼤⼩”创建显⽰控件>连接需要获得数组⼤⼩的数组。
6、“创建数组”函数:连接多个数组或向N维数组添加元素。
(1)、程序框图右键>数组>创建数组(2)、将“创建数组”向上/下拖动可显⽰更多输⼊端。
也即:选中“创建数组”右键>”添加输⼊”或”删除输⼊”。
(3)、可输⼊单个“数值输⼊控件”(在前⾯板中添加),也可以输⼊数组。
7、添加的数组:“创建数组”创建的显⽰控件。
(1)、选中“创建数组”右键>(勾选)连接输⼊:两个N维的数组连接之后仍是N维数组。
(2)、选中“创建数组”右键>(未勾选)连接输⼊:两个N维的数组连接之后是2N维数组。
8、“数组插⼊”函数:在n维数组中索引指定的位置插⼊元素或⼦数组。
(1)、程序框图右键>数组>数组插⼊。
(2)、将“数组插⼊”向上/下拖动可显⽰更多输⼊端。
但不像创建数组那样有快捷菜单。
(3)、要添加索引的位置:“数组插⼊”右键>创建>常量。
可省略此项,省略该项则添加到数组末尾。
LABVIEW编程基础 第3章 LabVIEW的数据类型
字符串控件在默认情况下为正常显示状态显 示字符的一般形式,在字符串中可以直接输入回 车或空格键,系统自动根据键盘动作为字符串创 建隐藏的‘\’形式的转义控制字符。
图3-59
字符串输入与显示控件
字符串是LabVIEW中一种基本的数据类型。 路径也是一种特殊的字符串,专门用于对文件路 径的处理。 字符串型与路径子选板中共有三种对象供用户选 择:字符串输入/显示、组合框和文件路径输入/显示。
1.字符串控件
字符串控件用于输入和显示各种字符串。 右键单击字符串控件弹出的快捷菜单中,关于 定义字符串的显示方式有四种。
(2)索引数组
图3-17
索引数组函数接线端子
图3-18
使用索引数组函数索引数组中的元素和指定列或行或元素
(3)替换数组子集
图3-19
替换数组子集函数接线端子
图3-20
替换数组子集函数的使用
(4)数组插入
图3-21
数组插入函数接线端子
图3-22
数值插入函数的使用
(5)删除数组元素
图3-23
删除数组元素函数接线端子
第三章 LabVIEW的数据类型
陕西理工大学 物理与电信工程学院
1 CONTENTS
数据类型 数据运算选板 数组型数据
目 录
2 3 4
簇型数据 字符串型数据
5
1 CONTENTS
数据类型
数据运算选板
目 录
2 3 4
数组型数据
簇型数据
5
字符串型数据
3.1 数据类型
3.1.1 数值型控件
LabVIEW中的数据结构
只要将簇框添加到前面板(如下图所示)上,再将数据对象或元素(可以是布尔、枚举、数组、数值、字符串、 路径以及簇控件)拖拽至框内,即可在前面板上创建簇输入控件或显示控件。 另外,通过拖拽鼠标游标,可以改变簇框的尺寸。
图 9. 创建簇输入控件 图 10 中的示例是一个含有三个输入控件的簇: 一个字符串、一个布尔开关和一个数值控件。
组装簇
“捆绑”函数可以将独立的元素组装成簇,或者改变现有簇中的个别元素值,而无需更新所有元素的值。 使用位 置调整工具可重新设定捆绑函数的大小,或者可在元素输入端上点击右键后选择快捷菜单中的“添加输入”。
图 11. 在程序框图中组装一个簇
修改簇
若要连接簇的输入,则只需连接需要修改的元素。以图 12 为例,其中有三个控件。
数组输出
当自动索引一个数组的输出隧道时,每一次循环输出一个新元素到数组。因此,自动索引输出数组的大小等于 循环的次数。 此时,连接输出隧道和数组显示控件的连线将变粗,表明它将输出一个数组,且输出隧道中将包含一个方框。
图 7. 自动索引输出 在循环隧道上点击右键,并在快捷菜单中的选择“启用索引”或“禁用索引”,即可启用或关闭自动索引功能。 While 循环的自动索引功能默认是关闭的。 举例来说,若要隧道仅输出最后一次循环的值,则需要停用自动索引。
(1)索引框 | (2)元素框 图 1. 数值数组控件
创建数组输入控件和显示控件
如图 2 所示,在前面板上添加一个数组框,然后将数据对象或元素(如数值或字符串控件)拖入其中,即可 添加输入控件或显示控件的数组。
图 2. 将数值控件拖入数组框内 如试图将一个无效的输入或显示控件拖入数组框中,则无法实现该操作。 在程序框图中使用数组之前,必须在数组框中插入对象。否则数组的接线端将为空,不会产生任何相关的数据 类型。
LabVIEW编程与项目开发实用教程 第3章 数据类型
数组赋值,也可以先调整索引值,然后编辑该索引值元素的 值,见图3-15。
图3-15 通过索引赋值数组
3、数组维度设置 如果要创建二维或高维数组,将鼠标指针放置在数组索引框 上,出现控制点后在控制点上向下拖动增加维度(对于二维 数组,仅需要拖出另一个索引)。然后按照添加元素的方法 拖拉(横向+加纵向拖动)数组边框,见图3-16。
第3章 数据类型
3.1 LabVIEW数据类型及其操作 3.2 数组 3.3 字符串 3.4 簇 3.5 波形数据
3.1 LabVIEW数据类型及其操作
3.1.1 数值型 数值型是LabVIEW一种基本的数据类型,可以分为浮点型、 整型数和复数型3种基本形式。
数值数据类型包括前面板上数值输入控件和数值显示控件、 程序框图上的数值常量。前面板上数值选板包括多种不同形 式的控件和指示器,包括数值控件、滚动条、旋钮、颜色盒 等。
图中,在原数组第1行处插入[8 8 0 8 8]和[66 77 66]两行数 据,[66 77 66]插入的那一行会被补零变为[66 77 66 பைடு நூலகம் 0]。
5.删除数组元素
删除数组元素函数,删除数组中从某一索引号开始某设定 长度的部分,返回删除该部分后的数组以及被删除的部分数 组。图3-26例程,删除第1列(列索引端子给出)后的2列( 长度端子给出)数组元素。注意,对于二维及高维数组不能 删除单个元素。
函数是以功能函数节点的形式来表现的。
数组函数位于函数选板中“编程”子选板下的“数组”选板内 ,如图所示。
1.数组大小函数
数组大小函数会返回输入数组的元素的个数。如果输入数组为 N维的多维数组,该函数就会返回有N个元素的一维数组,数组每 个元素按顺序对应每维元素的个数。函数图标和用法,如图3-22 所示。
LABVIEW4 数据类型
2 簇的使用——簇函数
◆对一个簇进行操 作,主要是访问簇 中的各个元素,或 由不同类型但相互 关联的数据组成簇。
◆ 通过簇(Cluster)
子模板中各节点完 成。
1)按名称解除捆绑函数—Unbundle函数
功能:根据名称将簇解开从而有选择的获得簇中元素的值
2) 捆绑函数 —Bundle函数
例:输入一个两行字符串,求其长度。
② 连接字符串函数(Concatenate String)
把输入的多个字符串合并成一个 字符串。输入可以为单一字符串、 字符串数组或是字符串簇。 注意:输入字符串长度包括换行符。
例: 输入3个字符串,将其合并为一个字符串。
③ 截取子字符串函数(String Subset) 函数图标及接口:
第四章
数据类型与操作
§4.1 基本数据类型
§4.2 数据运算选板
§4.3 数 组型数据 §4.4 簇型数据
§4.5 字符串
LabVIEW的数据类型
无符号整形: U8、U16、U32 整形 数值型 基本型 布尔型 数据类型 字符串 数组 复合型 枚举 簇数据 波形数据 有符号整形: I8、I16、I32 浮点数:单精度SGL、双精度DBL、扩展精度EXT 复数:单精度CSG、双精度CDB、扩展精度CEX
1 (从前面板)数组的创建:创建数组控制器和指示器
两个步骤: 第一步创建数组壳: 从控件选板的选择“新式”显 示风格下的“数组、矩阵与簇” 子选板,放在前面板上,即建 立了一个空的数组壳
第二步建立数据对象:
把一个数据对象拖入数组壳, 或者从控制模板中添加一个 数据对象到数组壳中,这样 就可以创建一个数组
如把学生情况表中数据:姓名 (字符型)、性别(字符型)、 年龄(数字型)、党员否(字 符型)等,形成一个簇 。
精品课件-LabVIEW编程与项目开发实用教程-第3章 数据类型
第3章数据类型
3.1.3 枚举 型 LabVIEW中的枚举类型和C语言中的枚举类型定义相同,可以认 为是一种受到约束或限制的字符串类型。 枚举类型提供了一个选项列表,其中每一项都包含一个字符串 标识和数字标识,数字标识与每一选项在列表中的顺序一一对 应。 右键快捷菜单选择 编辑项… 在弹出的枚举项编辑对话框中 设置枚举项和值。枚举数据类型可以用8位、16位或32位无符 号整数表示,相互之间可以转换。图3-4为枚举项编辑后的对 话框内容和前面板内容,枚举输出值是0—4的正整数。
第3章数据类型
第二步建立数据对象: 把一个数据对象拖入数组壳,或者从控制模板中添加一个数据 对象到数组壳中,这样就可以创ห้องสมุดไป่ตู้一个数组。也可以直接在前 面板中创建数组和相应的控制对象,然后将它们复制或者拖曳 到流程图中,即可创建对应的数组常数。
第3章数据类型
对前面板或程序框图中的数值型数据,可通过右键快捷菜单选 择 表示法 更改为程序需要的具体数据类型,或通过右键快捷 菜单选择 属性 在属性对话框中更改数据类型或其他属性,如 图。
第3章数据类型
数值型数据属性页的基本设置: (1)外观页面,在此中可以设置数值控件的外观属性,包括标签 、启用状态、显示基数和显示增量/减量按钮等。 (2)数据类型页面,在此页面中可以设置数据类型和范围等。用 户应当注意的是,在设定最大值和最小值时,不能超出该数字类 型的数据范围,否则,设定值无效。 (3)数据输入页面,用于为数值对象或输出设置数据范围。值范 围。包括最大值和最小值的设定。增量用于设置强制增量。 (4)显示格式页面,在此页面中用户可以设置数值的格式与精度 。 注意:不同数值型控件的属性页不尽相同,这主要是由控件的功 能和外观决定的。
第3章数据类型
LABview波形数据
LABview波形数据LABview波形数据波形数据类型是由3个元素构成的簇:当第一个采样点为采集的初始时(t0),时间值的增加或步进值(dt),以及采集到的数据数组(Y)。
如果您测到的数据已经是波形数据类型的话,您可以直接把它连接到waveform chart和graph控件。
关于引入时间信息作为waveform chart和graph控件的x轴请参考以下的知识库链接。
非波形数据如果您采集的数据不是波形数据类型,但是您仍旧希望绘制数据及其采集时间的图,您需要做以下工作(参考下面的LabVIEW VI例程):1.使用Get Date/Time In Seconds VI位于Functions ? Time & Dialog选板。
注意不要使用Get Date/Time String函数。
将该函数放置在您获得数据的循环内。
2. 使用Bundle函数位于Functions ? Cluster选板将您的数据点和时间值在该循环内组合成簇。
注意,您需要将时间值连在bundle函数上面的输入端口,(对应x轴数值)数据位于bundle函数下端的输入端口(对应于y轴数值)3. 将Bundle函数的输出连到XY Graph端口位于您程序框图的循环之外。
该XY 图能够从前面板的Controls ? Graph子选板中得到。
确认在循环的边界的簇连线上允许索引(enable indexing)。
您可以右击循环边界上的连线隧道选择允许索引实现该功能。
4. 右击前面板上的XY图进入并点击X Scale ? Formatting...5. 从Format下拉菜单,选择Time & Date6. 完成您期望在x轴上显示的时间以及/或者日期格式7. 选择OK保存该更改。
第3章LabVIEW的数据类型
图标
续表
存储所占位数
数值范围
256
实部与虚部分别与扩展精度浮点型相同
128
实部与虚部分别与双精度浮点型相同
64
实部与虚部分别与单精度浮点型相同
10
3.1.2 布尔型控件
11
布尔控件代表一个布尔值,只 能是True或False
它既可以代表按钮输入,也可 以当作LED指示灯显示。
3.1.3 枚举类型
(10)重排数组维数
41
重排数组函数的接线端子如图3-31所示。其功能是任意类型 的n维数组,在“n维数组”中输入维数大小m,该函数把n维数 组重整为m维数组后,在“m维数组中输出”。
图3-31 重排数组维数函数接线端子
(11)一维数组排序
42
图3-32 一维数组排序函数接线端子
(12)搜索一维数组
5.给定任意x, 求如下表达式的值
y
x5
c os x ex
3.3 数组(Array)
24
数组控件
数组控件
3.3.1 数组的创建
25
在前面板和程序框图中可以创建数值、布尔、路径、字符串、 波形和簇等数据类型的数组。
3.3.1 数组的创建
26
图3-11 创建的数值型一维数组
27
(a)拖曳边角添加数组元素
30
数组函数位于函数选板中“编程”子选板下的“数组”选板内
图3-14 数组函数选板
31
常用的数组函数如下所示。 (1)数组大小
图3-15 数组大小函数接线端子 图3-16 数组大小函数的使用举例
(2)索引数组
32
图3-17 索引数组函数接线端子 图3-18 使用索引数组函数索引数组中的元素和指定列
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据类型:数组、簇和波形.1概述数组是同类型元素的集合。
一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。
可以通过数组索引访问其中的每个元素。
索引的范围是0到n – 1,其中n是数组中元素的个数。
图3-1所显示的是由数值构成的一维数组。
注意第一个元素的索引号为0,第二个是1,依此类推。
数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。
图3-1数组示意图簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据。
它类似于C语言中的stuct。
使用簇可以把分布在流程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度。
减少子VI的连接端子的数量。
波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。
3.2数组的创建及自动索引3.2.1创建数组一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(如果需要用一个数组作为程序的数据源,可以选择Functions»Array»Array Constant,将它放置在流程图中。
然后再在数组框中放置数值常量、布尔数还是字符串常量。
下图显示了在数组框放入字符串常量数组的例子。
左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素均为空。
图3-1数组的创建在前面板中创建数组的方法是,从Controls模板中选择Array & Cluster,把数组放置在前面板中,然后选择一个对象(例如数值常量)插入到数组框中。
这样就创建了一个数值数组。
也可以直接在前面板中创建数组和相应的控制对象,然它们复制或者拖曳到流程图中,创建对应的常数。
还有很多在流程图中创建和初始化数组的方法,有些功能函数也可以生成数组。
3.2.2数组控制对象、常数对象和显示对象通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。
数组元素不能是数组、图表或者图形。
如果您想查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。
3.2.3自动索引For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。
这些功能称为自动索引。
在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。
循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。
在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。
在默认情况下,对于每个连接到For循环的数组都会执行自动索引功能。
可以禁止这个功能的执行,方法是用鼠标右键单击通道(输入数组进入循环的位置),在快捷菜单中选择DisableIndexing。
练习3-1创建一个自动索引的数组目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。
前面板图3-2练习3-1的面板1.打开一个新的前面板。
2.选择Controls»Array & Cluster,在前面板中放置一个数组。
设置它的标签为Waveform Array。
3.选择Controls»Numeric,在数组框中插入一个数字式显示对象。
如右图所示。
它用于显示数组的内容。
4.选择Controls»Graph,在前面板中放置一个波形图。
设置它的标签为Waveform Graph。
5.隐藏图例和模板。
6.用鼠标右键单击图形,并在快捷菜单中取消选中YScale»Autoscale Y,禁止自动坐标功能。
7.使用文本工具,把Y轴的范围改为-0.5到1.5。
流程图8.按照下图创建流程图。
图3-2练习3-1的流程图●由Functions»Select a VI…寻找LabVIEW\activity目录下的Generate WaveformVI,它的作用是返回波形中的某一点。
这个VI需要输入一个索引,我们将循环周期连接到这个输入。
●注意Generate Waveform VI连出来的连线在循环边界变成一个数组时会变粗,正是在这个边界处形成了一维数组。
●For循环会自动累计边界内的数组。
这种功能叫做自动索引。
在这个例子中,连接到循环计数输入的数值常数令For循环创建了一个由100个元素组成的数组。
●Bundle函数(Functions» Cluster)——将图块中的各个组件组合成一个簇,在正确连接以前需要改变该函数的图标的大小。
将移位工具放在图标的左下角。
变形工具会变成如左图所示,拖曳鼠标直到出现第三个输入端子。
●数值常数(Functions»Numeric)——三个数值常数用于设置For循环执行的周期数N=100,初始X=0和delta X=1。
9.从前面板执行该VI。
该VI将把自动索引后的波形图数组显示在波形图中。
10.把 X的delta值改为0.5,X的初始值改为20。
再次执行该VI。
注意,波形图现在同样显示100个点,而每个点的初始值为20,X的delta值为0.5(见X轴)。
11.只需在显示器中输入元素的索引号就可以查看波形数组中的任何元素。
如果输入的数比数组的元素个数大,那么显示器将变暗,表示您没有为该元素设置索引。
如果需要一次查看多个元素,可以通过改变数组显示对象的大小来实现。
把定位工具放置在数组框的右下角。
工具将变成右图所示的变形工具。
当工具变形时,用鼠标拖曳数组的右边或者下边。
数组现在就可以按照元素索引的上升顺序显示多个素,以某个与指定索引对应的元素开始,如下图所示。
图3-3练习3-1中多个数组元素的同时观察在前面的流程图中,您为波形图指定了初始的X值和deltaX值。
默认的X初始值是0,delta X 值是1。
这样,也可以把波形数组直接连接到波形图端子,而无需指定初始的X值和delta X值,如图3-4所示。
图3-4练习3-1使用默认X及Delta X时简化后的流程图12.按上图删除 Bundle功能函数和它所连接的常数对象。
方法是用移位工具选择该功能函数和连接的常数对象,按下<Delete>。
再选择Edit»Remove Bad Wire s。
按照上图完成流程图的连线。
13.执行该VI。
注意初始的X值是0,delta X值是1。
多图区图形可以创建含有多条曲线的图形,方法是创建一个数组,用它来汇集传给单图区图形的类型的数据元素。
图3-5 练习3-1多图区图形的流程图14. 按照上图创建流程图。
● 正弦函数(Functions»Numeric»Trigonometric )——在这里,它用于在For 循环中创建一个由数据点组成的数组,表示一个正弦波周期。
● Pi 常数(Functions»Numeric»AdditionalNumeric Constants )● Build Array (Functions»Arra y )——在这里,它用于创建合适的数据结构(一个二维数组),在波形图中绘制两条曲线。
用移位工具拖曳边角可以增大该函数的面积,创建两个输入端子。
15. 返回前面板,执行该 VI 。
注意同一个波形中的两个图区。
默认情况下,它们的X 初始值都是0,delta X 初始值都是1。
下图是该程序的运行结果(前面板未改动)。
16. 把该VI 保存为LabVIEW\Activity 目录中的GraphWaveform Arrays.vi 。
17. 可以修改图形中的某个图区的外观。
方法是,用鼠标右键单击这个图形,再从弹出菜单选择对应的图例。
Array图3-6 练习3-1多图区图形的面板显示练习 3-1 结束。
在上面这个例子中,由于计算端子连接了一个值为100的常数对象,所以 For 循环将执行100次。
下面这个例子显示了另外一种控制循环执行次数的方法。
更详细的例子建议调阅Examples 》Fundamentals 》Graphsand Charts 》Graph Examples 》Waveform Graph 例子。
练习 3-2 对输入数组使用自动索引功能目的:打开并执行一个VI ,它将在一个For 循环中使用自动索引功能处理一个数组。
1. 选择File»Open …,打开Examples\General\arrays.llb 中的Separate Array ValuesVI 。
2.打开流程图。
下面的示意图显示的是在TRUE和FALSE时的情况。
图3-7练习3-2的流程图注意,Input Array引出的连线与For循环外的粗线不同,表示这是一个数组,而循环内部的细线则表示这是一个数组元素。
数组元素在每个循环期间将自动编号。
用自动索引功能设置 For 循环的计数器注意,计数器端子还没有连线。
当您对某个进入For循环的数组使用自动索引功能时,循环就将根据数组的大小执行相应的次数,这样就无需连接某个值到计数器的端口。
如果对一个以上的数组使用自动索引功能,或者在使用自动索引功能之外还需要设置计数器时,实际的循环次数将是其中最小的数。
3.执行该VI。
在输入的八个数中,可以看到4个属于正数数组,另外4个属于负数数组。
4.从流程图中将一个值为5的常数对象连接到For 循环的计数器端子。
执行该 VI。
可以看到尽管输入数组仍然有八个元素,但是3个位于正数数组,另外2个位于负数数组。
这说明,如果设置了N并开启了自动索引功能,那么实际循环的次数将取较小的数。
5.关闭该VI,不要保存任何修改。
注:练习3-2的算法说明下面是一段伪代码,解释上面的算法,假定输入数组为A(已赋值),B(正数)、C(负数)。
Sbr 、Scr分别是与B数组、C数组对应的右寄存器数组,Sbl 、Scl分别是与B数组、C数组对应的左寄存器数组,size运算为测数组实际大小,ins运算为将一个数插入数组中最左边的空位。
练习3-2结束。
3.3数组功能函数LabVIEW提供了很多用于操作数组的功能函数,位于Functions»Array中。
其中包括Replace Array Element,、Search 1DArray、Sort 1D Array、Reverse 1D Array和Multiply ArrayElements等等。
创建数组——Build Array函数(Functions»Array),用于根据标量值或者其他的数组创建一个数组。
开始时,Build Array函数具有一个标量输入端子。