虚拟仪器5.ppt_第1页
虚拟仪器5.ppt_第2页
虚拟仪器5.ppt_第3页
虚拟仪器5.ppt_第4页
虚拟仪器5.ppt_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5 数组和簇 5 1数组 簇和字符串5 2数组5 3簇5 4字符串5 5数据的图形化显示5 6文件I O 5 1数组 簇和字符串 5 2数组 数组是同一类型数据的集合 LabVIEW中的数组可以为任何数值类型 布尔型 字符串 一个数组可以是一维的 在内存允许的情况下 也可以是多维的 每维最多可以包含231个元素 可以通过数组指针 索引index 访问数组元素 指针在0到N 1的范围内变化 而 就是数组元素的个数 例 10元素的一维数组 1 创建数组 第一步创建数组壳 从控制模板的 数组和簇 子模板中选择 数组 控制器 放在前面板上 即建立了一个空的数组壳第二步建立数据对象 把一个数据对象拖入数组壳 或者从控制模板中添加一个数据对象到数组壳中 这样就可以创建一个数组 增加数组维数 在数组壳左边的指针标记上弹出菜单 选择 添加维度 选项 增加数组的维数 列指针 行指针 当前指针指示的元素 4行2列元素 三维数组 页指针 行指针 列指针 利用循环创建数组 在For循环和While循环的边框上可以自动地累积数据 形成数组 这种特性被称为自动索引 自动索引为打开状态时 每一次循环产生一个新的数组元素 并存储在循环的边框上 若自动索引被设为无效 则只有最后一次循环产生的数传到循环外 For循环数据出口的自动索引默认为有效 而While循环的数据出口的自动索引默认为无效在数据出口信道上右击 弹出菜单中可修改自动索引 创建二维数组 使用两个For循环 把其中一个嵌套在另一个中可以生成一个二维数组 外层的For循环产生行 而内层的For循环产生列 数组元素向循环内部传入数据 注意自动索引和非自动索引的区别 自动索引条件下 数组元素依次传入循环内部 结果是只留下最后一个元素 非自动索引则相反 一次性传入循环内部 结果是留下整个数组 如果一个允许自动索引的For循环包括多个数组 或者将一个值连接到允许自动索引循环的计数端子N 则循环次数将取最小值 非自动索引时N必须连接 2 数组函数 数组函数详细介绍 1 数组大小函数该函数返回输入数组的元素个数 对于一维数组返回一个32位的整型数 对于二维或多维数组返回一个一维32位整型数组 2 数组索引函数用于根据下标索引从数组中得到数组的元素或数组子集 对于一维数组可得到其中一个元素 对于二维或多维数组 通过只指定部分下标可以得到某一元素或数组子集 3 子数组替换函数ReplaceArraySubset将已知数组中部分内容用新的数据替换掉 4 插入到数组函数InsertIntoArray向数组指定位置插入若干行或若干列新元素 5 从数组中删除元素函数DeleteFromArray从一个数组中删除单个元素或者子数组 对于二维数组 删除操作是针对整行或整列的 6 初始化数组IntializeArray指定数组的维数 大小 并且将数组元素值都初始化为相同的值 7 创建数组函数BuildArray功能 把多个数组组合成一个数组或对一个数组添加元素 输入端子的个数可以通过大小调节句柄来增减 可以对一维 二维 多维数组进行操作 标量可当作0维数组 构建数组函数的输入端子中 维数相差只能是0或1 维数低的数组将追加至维数高的数组的尾部 或首部 取决于输入端子的先后次序 8 提取子数组函数ArraySubset 提取输入数组的第0行开始的两行和第1列开始的两列元素 组成一个新数组 9 获得数组最大值和最小值的函数ArrayMax Min 10 改变数组维数函数ReshapeArray 可以转换数组的维数 11 一维数组排序函数Sort1DArray将输入一维数组按升序排列后输出 12 查找一维数组函数Search1DArray该函数能从startindex 默认是0 处的元素开始查找指定元素的第一次出现的位置 若找到该元素 则返回该元素的索引 若没有找到 则返回 1 13 一维数组分离函数Split1DArray实现把一维数组从index指定的位置一分为二 分割成两个一维数组 14 一维数组反转函数Reverse1DArray把输入的一维数组按照反向顺序排列输出 15 一维数组移位函数Rotate1DArrayn为正数时向右循环移n位 n为负数时向左循环移n位 例1 数组的多态性运算多态性 Polymorphism 是LabVIEW的某些函数 例如加 乘和除 接受不同维数和不同数据类型输入的能力 两个标量相加 其结果依然是标量 当一个标量与一个数组相加时 情况会怎样呢 1 标量与数组相加 减 乘 除 2 数组与数组相加 减 乘 除 当参与运算的两个数组维数 大小相同时 则对应元素相互运算可得结果 若数组大小不同时 则以较短的数组元素用完为准 较长数组的剩余元素将忽略不计 例2 设计一个VI 产生10个随机数组成的数组 按照从大到小降序排列 并且求出最大值 最小值 例3 数组插值函数应用 例4 线性代数函数举例 例5 霓虹灯 8个霓虹灯以0 5秒的周期交替闪烁 以数组的方式实现 5 3簇 定义 簇是一种可以把相同或不同类型的数据组合在一起的数据结构 类似于C语言中的结构体数据类型struct 我们可以把簇形象地理解为一根多芯电缆 不同的信号线捆绑在一起进行传输 电缆中的每根线就相当于簇中的每个元素 数组大小是可变的 数组元素的顺序不允许随意变动 而簇大小是固定不变的 元素的顺序可以任意拖拽改变 簇和数组也有相同之处 其中的元素要么是输入控件要么是显示控件 即簇合数组不能同时包含输入控件和显示控件 1 创建簇 在前面板放置一个簇的空框架 然后再加入控件 簇框架的选择路径及放置的空框架如图所示 与数组一样 一个簇是输入控件还是显示控件 取决于放入簇框架中的第一个元素的类型 创建一个簇框架并向其中加入数值控件 数组控件 布尔控件 如下图所示 簇元素的顺序取决于簇的各个元素放入簇框架时的先后顺序 要查看或者改变簇元素的顺序 可以右击簇框架 选择 重新排序簇中控件 则打开簇顺序编辑界面 2 簇函数 1 解除捆绑函数该函数将簇的各个元素分解开 可分别获得簇中每个元素的值 函数输出端子的个数由簇内的元素个数决定 输出顺序按照簇元素的排列顺序 2 簇捆绑函数该函数可将若干独立元素打包到一个新簇中 也可以对簇中的元素赋值或者替换现有簇中的元素 函数左端的输入端子个数可以通过句柄进行调整 3 按名称解除捆绑函数该函数在功能方面与解除捆绑函数相同 可以获得簇的每一个元素值 其优点是 在输出端按簇顺序列出了各元素标签名称 便于区别 定位和连线 4 按名称捆绑函数该函数的输入簇端子是必须要连接的 在功能方面 该函数可以对输入簇中的元素赋值或替换 但不能将独立元素打包到一个新簇 5 簇至数组转换函数该函数要求簇的组成元素类型一致 可将满足此要求的簇转换为数组 6 数组至簇转换函数由于簇元素的位置相对不固定 所以可以根据需要进行布局或排版 相反 数组元素位置固定 所以在必要时可将数组转换为簇 右键单击程序框图上的数组至簇转换函数 从快捷菜单中选择簇大小 可显示该对话框 该对话框用于将数组转换为簇时 指定 数组至簇转换 函数从数组中提取的元素个数 簇的大小是固定值 所以必须设定簇包含的元素个数 簇中元素的数量 指定 数组至簇转换 函数定义的簇中元素的数量 元素的数量必须在1 256之间 默认值为9 在执行 数组至簇转换 函数时 如簇元素的数量比实际上数组元素的数量多 则LabVIEW将用适当的默认值填充簇 5 4字符串 字符串就是一系列文本字符 以ASCII码表示 在数据传送中 通常将数字型的数据转换成字符串进行传送 在很多情况下 往磁盘上存储的数字型数据也要求是字符串格式 1 创建字符串 创建 在控制模板的 字符串与路径 子模板中 字符串的输入 使用字符串控制器字符串输出 使用字符串指示器 部分ASCII码表 字符的四种显示模式 可以在字符串控制器和指示器上弹出快捷菜单来改变字符显示模式 1 正常显示 这是默认显示模式 2 代码显示 可以显示或输入通常情况下不可显示的字符 例如空格 回车 跳格字符等 不可显示字符以反斜杠后跟相应代码的形式表示 3 密码显示 这是口令显示模式 即在前面板上字符串显示为星号 4 16进制显示 显示字符的十六进制表示的ASCII代码 不可显示字符代码表 2 字符串处理函数 1 字符串长度函数该函数返回字符串的字节数 即长度 一个汉字的长度是2个字节 2 连接字符串函数把所有的输入字符和字符串数组按顺序连接成一个输出字符串 3 截取字符串函数offset指定提取子字符串在原字符串中的起始位置 从0开始计数 参数length指定子字符串的长度 4 替换子字符串函数插入 删除或替换原字符串的一部分 位置和长度由offset和length决定 此函数有3种用法 替换 用substring参数输入的字符串 替换原字符串中从offset参数指定的位置开始 length参数指定长度的子字符串 删除 substring没连 从offset指定的位置开始 删除length长度的子字符串 插入 length输入值为0 一个字符也没删除 在原字符串中从offset指定的位置开始插入substring参数输入的字符串 length输入值为0 一个字符也没删除 在原字符串中从offset指定的位置开始插入substring参数输入的字符串 5 搜索替换字符串函数从offset端口指定的位置开始查找参数searchstring指定的字符串 并用replacestring指定的字符串替换查找到的字符串 若replacestring未连接数据 那么就删除查找到的字符串 6 查找匹配字符串函数 匹配模式 用于从指定的偏移处搜索表达式 并将原字符串分为三个子串输出 即匹配字符串之前的字符串 匹配字符串和匹配子字符串之后的字符串 同时输出匹配后的偏移量 若没找到匹配字符串则该端口输出 1 三个子串输出 如果没查找到regularexpression 匹配字符串输出为空 offsetpastmatch端口输出 1 5 4数据的图形化显示 LabVIEW丰富的数据图形化显示功能是其众多优秀特性之一 也是其应用日益广泛的原因之一 由于是数据的图形化显示 从输入控件和显示控件的角度分类 应隶属显示控件范畴 图形化显示控件主要分为两大类 图表 Chart 图 Graph 图表主要用来显示实时数据 可以显示被测物理量的变化趋势 类似于示波器 记录仪 图则用于对已采集数据进行事后显示处理 它根据需要将数据组织成所需的图形一次显示出来 1 波形图 标签 Y标尺 X标尺 图例 波形图的特点 一次性显示程序产生的所有数据等时间间隔地显示数据点每一时刻只有一个数据值 类似单值函数可绘制一条或多条曲线 数据组织格式不同 1 波形图的使用 下面举例说明波形图的使用 例5 在For循环中 对0 2 之间均匀分布的100个点 单位为弧度 并调用 三角函数 中的正弦和余弦函数 使用波形图绘制正弦和余弦曲线 使用波形图可以绘制出一条或多条曲线 在这两种情况下 有着不同的数据组织格式 绘制一条曲线时 波形图可以接受如下两种数据格式 1 一维数组 对应于 波形图1 此时 默认时间从0开始 相邻数据点之间的时间间隔为1 即时刻0对应数组的第0个元素 时刻1对应数组的第1个元素 2 簇数据类型 对应于 波形图3 簇中应包括时间起点 时间间隔 数值数组这三个元素 绘制多条曲线时 波形图可以接受如下数据格式 1 二维数组 对应于 波形图2 数组的每一行反映的是一条曲线的数据 时间从0开始 相邻数据点之间的时间间隔为1 2 由簇作为元素的二维数组 对应于 波形图4 每个簇元素都由时间起点 时间间隔 数值数组这三个元素组成 这是最通用的一种多曲线数据格式 因为其允许每条曲线都有不同的起始时间 数据点时间间隔和数据点长度 3 时间起点 时间间隔 数值型二维数组组成的簇 对应于 波形图5 将二维数组的每一行作为一条曲线的数据 4 把数组打包成簇 然后以簇作为元素组成二维簇数组 对应于 波形图6 当多条曲线的数据点个数不同时 可以使用这种数据组织方式 时间起点从0开始 相邻数据点之间的时间间隔为1 5 时间起点 时间间隔 以簇为元素构成的数组组成的簇 对应于 波形图7 该簇中的数组元素的每个簇都由一个一维数组打包而成 每个一位数组都是一条曲线 所有曲线共用最外层簇提供的时间起点和时间间隔 此外 波形图还可以接收波形数据 在后续章节介绍 2 波形图的属性定制 波形图包含的组件和功能 1 标签 Label 对象的标识 在程序中通过对象的标签实现对对象的访问 2 标题 Caption 对象的名称 默认情况下和对象的标签相同 3 纵坐标 YScale 默认标签是 幅值 可用标签工具修改 刻度同样可用标签工具进行修改 右击波形图 选择 Y标尺 格式化 可设置数据的格式和精度 例如设置是以浮点数还是以科学计数法显示数据 小数点位数是几位等 选择Y标尺 样式 可设置刻度数据的显示格式 style子菜单给出了9种刻度风格 可以选择是否显示主刻度和副刻度数字及刻度线 映射子菜单设定刻度的映射方式 线性 linear 关系 对数 logarithmic 关系 自动调整Y标尺 自动缩放 4 横坐标默认标签是 时间 设置方法和纵坐标类似 5 横坐标滚动条XScrollbar 6 图形操作面板GraphPalette3个按钮 切换两种观察模式 单击中间按钮 出现 将一个矩形区域放大 将两条纵线间的区域放大 将两条横线间的区域放大 恢复图形原有比例 以一个点为中心放大 以一个点为中心缩小 7 图例显示绘图区中每条曲线的样式 单击图例出现快捷菜单 可设置 修改曲线样式 线宽 颜色等 2 波形图表 波形图表也称为趋势图 波形图在接收到新数据时 先把已有数据曲线完全清除 然后根据新数据重新绘制整条曲线 波形图表则不同 波形图表保存了旧的数据 且所保存旧数据的长度还可以自行制定 在波形图表中 新数据被连接在旧数据的后面 同时显示 绘制单曲线时 可接受两种数据格式 分别是标量数据和数组 当输入标量 每次推进一个点 当输入数组 每次推进的点数等于数组长度 当绘制多曲线时 也可接受两种数据格式 第一种 将每条曲线的一个新数据点 数值类型 打包成簇 然后输入到波形Chart中 这时波形Chart将所有曲线同时推进一个点 第二种 将每条曲线的一个数据点打包成簇 若干个这样的簇作为元素构建数组 再把数组传送到波形Chart中 数组中的元素个数决定了绘制Chart每次数据的长度 在这种数据格式下 波形Chart将所有曲线推进多个点 例6 分别用以上两种方式显示两条随机数曲线 缓冲区设置 波形图表有一个缓冲区 用来保存历史数据 缓冲区容纳不下的旧数据将被舍弃 在快捷菜单的 图标历史长度 选项中可以设置缓冲区长度 分格显示曲线 在绘制多条曲线时 波形图表的默认情况是把这些曲线绘制在同一个坐标系中 在波形图表的快捷菜单中选择 分格显示曲线 即可把多条曲线绘制在不同的坐标系中 从上倒下排列 选择 层叠显示曲线 则回到同一坐标系中显示 3 XY图 XY图即坐标图 而前面讲的波形图和波形图表 是x轴数据等间隔时的坐标图 在绘制XY图时 需要把x轴数据和Y轴数据捆绑成簇作为图形的输入 例7 绘制圆和椭圆的XY图 4 三维图形显示 除了用于显示二维图形的函数和VI LabVIEW也提供了用于三维图形的控件 如强度趋势图IntensityChart和强度图表IntensityGraph 三维曲面图函数3DSurfaceGraph 三维参数图函数3DSurfaceGraph 1 三维曲面图 三维曲面图用于显示三维空间的一个曲面 在前面板放置一个三维曲面控件时 框图中将出现两个图标 如下图所示 3DSurfaceGraph是一个ActiveX控件 提供用于作图的属性和方法 负责图形显示 另一个是3DSurface vi负责三维作图 x向量 和 y向量 都是一维数组 x向量 的元素x i 和 y向量 的元素y i 共同确定了二维数组 z矩阵 中的数据点z i j 在x y平面投影点的坐标为 x i y j 所有Z方向数据点平滑连接就构成了三维曲面 例8 使用正弦函数节点生成正弦曲面 2 三维参数图 三维曲面图不能显示三维空间的封闭图形 如要显示封闭图形可使用三维参数图控件 与三维曲面图类似 在前面板放置一个三维参数图控件时 框图中将出现两个图标 如下图所示 3DParametiricSurface是一个ActiveX控件 提供用于作图的属性和方法 负责图形显示 另一个是3DParametiricSurface vi负责三维作图 三维曲面图的使用较为复杂 需要借助参数方程的形式理解 若要显示三维图形 需要3个方程 x fx i j y fy i j z fz i j 其中 x y z是图形中点的三维坐标 i j是两个参数 例9 绘制单位球 球面的参数方程 X cost cosaY cost sinaZ sint 5 波形数据 在信号采集 处理 分析过程中 经常要用到波形数据类型 波形数据是LabVIEW按一定格式定义的簇 但是对其捆绑和解除捆绑需要用专用函数进行 构成波形数据簇的元素有 t0 dt Y和attributs 其中 t0表示波形的起始时间 数据类型为时间标识型 dt代表波形数据中相邻数据点的时间间隔 单位是秒 数据类型是双精度浮点型 Y代表数据 默认类型为双精度浮点型数组 attributes是注释信息 数据类型为变体类型 默认的波形数据一般不显示attributes 波形数据控件默认为输入控件 如图所示 可以在快捷菜单中选择转换为显示控件 如图 1 获得波形数据内部元素函数 该函数类似簇元素按名称解除捆绑函数 通过该函数可以得到波形数据的各个元素 2 创建波形数据函数 该函数类似于簇元素按名称捆绑函数 在已知各元素的前提下 通过该函数可以构建波形数据 例10 波形数据函数综合应用及波形数据的图形化显示 3 波形数据的图形化显示 波形数据可以直接与趋势图和波形图连接 当波形数据作为波形图的输入时 相当于把波形数据中的数组Y通过波形图显示 其横坐标从0开始 间隔是波形数据中的时间间隔dt 当波形数据作为趋势图的输入时 其横坐标是绝对时间 时间范围与采样频率有关 纵坐标是波形数据的数组数值Y 例11 随机数波形数据的图形化显示 5 6文件I O 1 基本文件类型支持3种格式的文件 即文本文件 二进制文件和数据记录文件 其中 电子表格文件是一种特殊类型的文本文件 数据记录文件中又包含一种被称为波形文件的文件格式 下面分别简要介绍这几种文件格式 1 文本文件优点 通用性强 即文件的内容可以被MicrosoftWord MicrosoftExcel甚至Windows自带的记事本等应用程序直接读取 缺点 第一 用这种格式存储的文件占用空间比较大 存取的速度相对比较慢 第二 用这种格式保存和读取文件的时候需要进行文件格式转换 因而需要花费额外的时间 第三 不能随机地访问其中的某个数据 2 电子表格文件与文本文件一样 仍然以ASCII码格式来存储数据 使MicrosoftExcel等电子表格处理软件能直接读取这类数据文件 3 二进制文件存取速度最快 格式最为紧凑 冗余数据少占用的空间要比文本文件小得多不需要进行格式转换无法被一般的字处理软件如Word读取 通用性较差 4 数据记录文件一种二进制文件它把数据组织为具有相同结构的记录 每一行为一个记录 每个记录都具有相同的数据结构 LabVIEW把每一个记录作为一个簇写入文件 5 波形文件波形文件是一种特殊的数据记录文件 它记录了波形数据特有的一些信息 如波形的起始时间 采样的间隔时间等 2 文件I O函数LabVIEW的文件输入输出操作包括三个基本步骤 打开一个已存在的文件或创建一个新文件 对文件的读或写操作 关闭打开的文件 LabVIEW的文件操作还包括文件或路径的更名与移动 改变文件特征 创建 修改和读取系统设置文件 记录前面板对象数据 LabVIEW提供的文件输入输出函数位于函数模板的文件I 0子模板 波形 波形文件I O子模板中 分别被用于数据文件和波形文件存取 1 打开或创建文件输入端子中的 文件路径 端子可以输入具体路径名称 也可以悬空不连接 当输入具体路径名称时 必须包括文件名在内 若悬空 当该VI运行时 将弹出标准的Windows文件对话框 可从中选择需要操作的文件 引用句柄输出是打开文件的引用号 如文件无法打开 则值为 非法引用句柄 2 关闭文件关闭引用句柄指定的已打开的文件 并返回至引用句柄相关文件的路径 引用句柄是与要关闭的文件关联的文件引用句柄 即上述打开 创建文件按函数的句柄输出 3 文本文件的读写操作文本文件就是把字符串以ASCII编码格式存储在文件中 最常见的文本文件是 txt文件 在将需要的数据存储为文本文件时 事先需要将数据转换为字符串 例12 建立一文件 d text txt 对该

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论