数组
- 更新时间2025-08-27
- 阅读时长7分钟
数组由元素和维度组成。元素是组成数组的数据。维度是数组的长度、高度或深度。数组可以是一维或多维的,在内存允许的情况下每一维度可有多达(231) – 1 个元素。
可以创建数值、布尔、路径、字符串、波形和簇等数据类型的数组。操作一组相似的数据以及进行重复计算时,可考虑使用数组。数组最适合存储从波形采集而来的数据,或存储循环中生成的数据(每次循环迭代生成一个数组元素)。用户可从数组中导出数据至Microsoft Excel。右键单击数组,从快捷菜单中选择导出,可查看导出位置的选项。
限制
数组中不能再创建数组。允许创建多维数组或创建每个簇中含有一个或多个数组的簇数组。不能创建数组元素为子面板控件、选项卡控件、.NET控件、ActiveX控件、图表、多曲线XY图、多列列表框的数组。
索引
定位数组中的某个特定元素需为每一维度建一个索引。在LabVIEW中,通过索引可浏览整个数组,也可从程序框图数组中提取元素、行、列和页。
数组举例
例如,太阳系八大行星可以用一个简单的文本数组表示。在LabVIEW中可用含有8个元素的一维字符串数组表示。
数组元素是有序的。数组通过索引访问数组中任意一个特定的元素。索引以零开始,即索引的范围是0到n-1,其中n是数组中元素的个数。例如,对于九大行星而言,n = 8,因此索引的范围是0到7。地球是第三大行星,因此其索引为2。
下图为一个数组的例子:以数值数组表示波形,数组的每个元素是具有相继时间间隔的电压值。
下图所示的例子更为复杂:以点数组表示的图形,其中每个点是包含一对表示X坐标和Y坐标的数值簇。
前两个范例都使用了一维数组。二维数组元素存储在网格中。需要一个行索引和一个列索引来定位数组中的某一个元素,并且这两个索引都从零开始。下图显示了一个8列8行的二维数组,其中包含8 × 8 = 64个元素。
例如,一个棋盘有八列和八行共64个位置。每个位置可为空或有一个棋子。二维字符串数组可表示一个棋盘。其中每个字符串是占据棋盘上相应位置的一个棋子的名称,或是空字符串(当位置为空时)。
为前面例子中的一维数组添加一行可将数组推广到二维数组。下图显示了以二维数值数组表示的一组波形。其中行索引指定波形,列索引指定波形上的点。
关于使用数组的范例见labview\examples\Arrays\Arrays.lvproj。查找相关范例
创建数组输入控件、显示控件和常量
通过以下方式可在前面板上创建一个数组输入控件或数组显示控件:在前面板上放置一个数组外框,然后将一个数据对象或元素拖曳到该数组外框中。数据对象或元素可以是数值、布尔、字符串、路径、引用句柄、簇输入控件或显示控件。如下图所示。
数组外框会自动调整大小以容纳新对象。
如需在程序框图中创建数组常量,则先从函数选板上选择数组常量,将数组外框放置于程序框图上,然后将字符串常量、数值常量、布尔常量或簇常量放入数组外框。数组常量可存储常量数据或同另一个数组进行比较。
创建多维数组
如需在前面板上添加一个多维数组控件,则右键单击索引框并从快捷菜单中选择添加维度。用户也可以直接拖拽索引显示边框至所需维数。如需一次删除数组的一个维度,右键单击索引框并从快捷菜单中选择删除维度。也可改变索引框的大小来删除维度。
如需在前面板上显示某个特定的元素,可在索引框中输入索引数字或使用索引框上的箭头找到该数字。
例如,一个二维数组包含行和列。如下列前面板所示,左边的两个方框中上面的索引为行索引,下面的索引为列索引。行和列显示框右边的显示框中就是指定位置的值。下列前面板显示第6行,第13列的值为66。
| 1 | 行索引 |
| 2 | 列索引 |
| 3 | 行列定位取值 |
行和列是从零开始的,即第一列为列0,第二列为列1,依此类推。将下面数组中的索引显示的值改为行1,列2,将显示6。
| 0 | 1 | 2 | 3 |
| 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 |
如试图显示超出数组维度范围的某一行或某一列,数组显示控件将变暗以表示该数据没有定义,同时LabVIEW将显示该数据类型的默认值。数据类型的默认值取决于该数组的数据类型。
定位工具可调整数组的大小并一次显示多行或多列。
数组的滚动条也可用来找到某一个特定元素。右键单击数组,从快捷菜单中选择显示项»垂直滚动条或显示项»水平滚动条,可显示数组滚动条。
| 注:LabVIEW中的数组函数按照行序访问数组数据。在二维数组中,先访问行,行索引是主索引。然后访问列,列索引是次索引。在更大的多维数组中,列索引是最后处理的索引,其它索引均在列索引之前。第一个数字是数组索引中第一个维度数组的大小。元素名称只作为索引标识符。 |
数组函数
数组函数用于数组的创建和操作。例如,执行以下操作:
- 从数组中提取单个数据元素。
- 在数组中插入、删除或替换数据元素。
- 分解数组。
关于在循环中使用数组函数时最小化内存使用的技巧,见LabVIEW Style Checklist。
自动调整数组大小的函数
索引数组、替换数组子集、数组插入、删除数组元素和数组子集等函数可自动调整大小以匹配所连接的输入数组的维数。例如,如将一个一维数组连接到以上某一个函数,则该函数只显示单个索引输入。如将一个二维数组连接到同一个函数,则该函数显示两个索引输入,一个用于行索引,另一个用于列索引。
定位工具可手动调整这些函数的大小,以便通过这些函数访问多个数组元素或子数组(行、列或页)。扩展这些函数中的某个函数时,该函数将根据与之相连数组的维数的增加而增加。如将一个一维数组连接到以上某个函数,则该函数将以单个索引输入为单位扩展。如将一个二维数组连接到这个函数,该函数将以两个索引输入为单位扩展,其中一个用于行索引,另一个用于列索引。
连接的索引输入决定了要访问或修改的子数组的形状。例如,“索引数组”函数的输入为一个二维数组,但只连接了行索引输入,则提取的是该数组的完整的一行。如只连接了列索引输入,则提取的是该数组的完整的一列。如同时连接了行索引输入和列索引输入,则提取的是该数组的单个元素。每个输入分组都是独立的,因此可访问数组中任何维度的任何部分。
下列程序框图使用索引数组函数,从二维数组中获取一行和一个元素。
如需访问数组中的多个连续值,则可将“索引数组”函数扩展且无需为所扩展的索引输入端赋值。例如,要提取某个二维数组的第一、二、三行,可将该索引数组函数扩展三个单位,然后将一维数组显示控件连接到每个子数组的输出端。
数组的默认数据
索引超出数组范围时,数组元素参数将会生成默认值。数组大小函数可确定数组的大小。
如使用While循环导致索引超过数组中最后元素,或“索引数组”函数的索引输入端赋了一个太大的数值,或将空数组赋给了“索引数组”函数,都会在无意中超过数组索引的范围。