当前位置: 首页 > news >正文

1.【Labview白话系列】Labview数组精讲

题主经过写文章一段时间的发现,许多同学对该软件的理解和编程能力是不太一样的,有些知识相对一些同学较为简单,但是有些同学提问就比较困难。那么针对这个问题,题主打算出一期说白话系列的专栏,在该栏目中用最通俗的大白话和例子去让大家深刻了解这个软件的功能和摸透他的脾气。

本系列文章 适用于入门到强化各个阶段,讲解很详细,有问题可以补充,题主随时答疑。废话不多说,直接开篇。

本文目录

  • 一、数组简介
    • 1.1 Labview中的数组是什么
      • 1.1.1 前面板建立数组
      • 1.1.2 数组的前面板操作指令
      • 1.1.3 数组的后面板操作指令
    • 1.2 数组的相关函数使用
      • 1.2.1 第一列函数
      • 1.2.2 第二列函数
      • 1.2.2 第三列函数
      • 1.2.3 第四列函数
    • 1.3 数组的几个重要参数
  • 二、数组应用
    • 2.1 数组生成及索引方式
    • 2.2 数据采集时数组与波形的关系。

一、数组简介

这一章我们讲解Labview中的数组的类型定义和数组相关的函数,废话不多说直接上大白话。

1.1 Labview中的数组是什么

在labview里面,数组相当于一个容器,我们看到的Labview里面的数组是一个格子一个格子的,每个格子里的内容就是我们数组里面的一个 “元素” 。就像你需要一个鞋架收纳鞋子,鞋架是数组,鞋子是元素
在Labview里面,建立数组是在前面板,后面板是处理数组的一些函数或者指令。

1.1.1 前面板建立数组

前面板建立数组时,有几种数组的类型:数值型、字符串型、枚举型、布尔型还包括路径、列表之类的都可以建立数组。
建立方法:前面板 — 右键— 点击数据容器 — 数组 — 点击数组放置该模块 — 在点击右键选择数值/布尔/字符串等元素 — 将元素通过鼠标拖入数组中 — 建立完成
下图为按照上述方法创建的数组及其对应的后面板控件。可以看到数组的颜色和我们要创建数组的元素是一样的。
在这里插入图片描述
建完之后如何让操作呢,接下来是数组的数据类型讲解。

1.1.2 数组的前面板操作指令

数组建立完成后,控件的操作一般在前面板进行,前面板一般包括:增加数组维数、显示数组元素个数、索引数组位数、改变数组前面板外形等操作。
在这里插入图片描述
增加数组维数: 索引框下部拉出后,可以将索引框下拉为两个及以上的框图,此时,索引框有几个就会有几个数组维数,如下图中,布尔数组为一维数组,字符串数组为二维数组,枚举数组为三维数组。
一维数组是单行或单列的数组,二维数组是N行N列数组,N大于等于2。
在这里插入图片描述
显示数组元素个数: 面向用户的数据个数显示操作,将鼠标放置在数组控件的右下角处,等待变为黑色箭头后,单击左键拖动控件就能增加可显示的数据数量。
在这里插入图片描述

1.1.3 数组的后面板操作指令

将数组控件显示为图标: 打开后面板后,右键数组控件,单击“显示为图标”,可以将数组控件的外形转换为小图标形式,该指令同样适用于其他控件,当我们在操作大型复杂程序时,使用该功能可以有效减少后面板程序空间的利用,并增加程序的美观性。如下图所示:
在这里插入图片描述
导出数组数据: 将数组数据导出为EXcel表格数据,比如你在使用数据采集到某一组数据时,数据已经在这个数组控件中显示,此时可以右键数组控件,然后点击“导出”,选择导出至excel即可。
在这里插入图片描述

1.2 数组的相关函数使用

本节介绍数组相关的几种函数使用,数组相关函数在后面板右键 — 数组中打开,

1.2.1 第一列函数

1.数组大小 :数组大小是指,当前数组的长度为多少,这个数组是一维数组的时候,该函数显示的是数组的元素有多少个,如下图所示,数值数组中只有两个元素,那么大小显示为2,当数组为二维数组时,大小显示为每个行或者列的元素数,所以会显示为一个一维数组。
在这里插入图片描述
2.索引数组 :索引可以理解为“查找”,这样就容易理解些了,索引数组就是查找数组的元素,这个指令就是查找输入的数组中的第n+1个元素的值。如下图所示,在该函数中,我检索值输入为了“3”,也就是说查找第3+1,即第四个数值元素,那么“元素”控件应该显示为3。可能有人问为什么是第四个元素,因为labview的索引是从0开始的,可以说0代表了第一个元素值。那么3就是第四个元素值了。
在这里插入图片描述
3.替换和插入数组 :替换数组子集和数组插入这两个函数有相似之处,一个是将数组里的某个元素或某个数组部分替换掉,一个是将某个元素和数组插入进原来的数组里面,请看下面实例,可以看到数组经过上面替换函数后,替换第2个索引值,即把第三个数值2替换成9,新数组为1293。而下方插入数组,是从第二个位置插入一个数值9,原来的数值还在。
在这里插入图片描述
4.删除数组元素 :该函数用于删除数组中的一些元素,需要输入三个参数,第一个是把需要删除元素的数组输入,第二个是长度,指的是需要删除多少个元素,比如1就是指删除一个元素,第三个是索引,指的是从第一个元素开始删除,比如索引值是2的时候,就从一个数组的第三个数开始删。如下图得到的最终数组为1 2 3.
在这里插入图片描述

1.2.2 第二列函数

1.初始化数组: 这个函数其实在Labview上是描述的不够清楚的,labview给出了如下的图片及解释。
在这里插入图片描述
这个函数他把每个维数的元素个数叫做 “维数大小” 这个是很有歧义的,我们可以称这个为 “这一维函数的元素个数” ,这样就好理解了,是什么意思呢?比如我们想建立一个二维数组,就将下图所示的位置,下拉两个就好,如果是想生成三维数组,就下拉三个以此类推。那么这个“维数大小”指的是什么呢,就是我们当前这一维数组里面,有几个元素,如下图,我建立了一个二维数组,将数组里面所有的元素初始化为2,这样就可以得到一个元素均为2的4×5的二维数组。
在这里插入图片描述在这里插入图片描述
注释:数组灰色的0的地方表示未定义,指的是没有元素,不算在数组大小里面,相当于是空的,我们看数组元素个数,只看亮的地方就好,比如上图的2的地方全是亮的。

2.创建数组: 讲该函数之前,首先我们要明确一个概念,就是各维数之间的关系,高维数的数组相当于低维数的相叠加而形成,他们之间的关系为: 元素 → 一维数组 → 二维数组 → … → N维数组,也就是说低维的组成高维的,元素组成一维数组,一维数组组成二维数组以此类推。那么对于该函数,就是这样应用的,如下图所示,最终显示的数组可以看到,元素组成了一维数组,一维数组组成了二维数组。
在这里插入图片描述
在这里插入图片描述
当然并不是只有相同的输入才可以生成数组,比如一维数组可以和单个元素连接形成新的一维数组,二维数组也可以和一维数组连接形成新的二维数组,当然这种连接只能跨一个维度,比如元素和二维数组就不可以连接组成新的数组了。下图:

在这里插入图片描述
3.数组子集: 这个相当于将数组裁剪出一部分,用法相当于删除数组元素,从索引位置开始,截取我需要的长度的数组的子集,显示出来。
在这里插入图片描述
4.数组最大值和最小值: 顾名思义,这个函数显示的是输入到这个函数的数组中,最大的元素值和最小的元素值,并显示出最大和最小元素值所在的位置。
在这里插入图片描述
5.重排数组维数
该函数可以将高维数组平铺成低维数组,同时也可以将低维数组填到高维数组里面,如下图所示,二维数组被平铺成一维数组,同时由于定义了20个元素,二维数组只有8个元素,所以平铺后的数组有12个默认0来填充。
在这里插入图片描述

1.2.2 第三列函数

这一列函数均为数组排序相关的函数,由于函数很简单,相信大家连上就会用,题主简单说一下几个函数的用法:
1.一维数组排序: 这个函数就是将一维数组俺从小到大的顺序排列起来,连上一个杂乱无章的数组,该函数可以帮我们按照大小个排列起来。
2.排序二维数组: 这个函数说白了,和上个函数一样,比他强不到哪里去,这个相当于针对二维数组里面的某一行或者某一列做排序,实际上还是对二维数组里面的一维数据排序,排序前让你输入row或者column,你就根据像排序哪一行还是那一列选择就好了,row是行,column是列。
3.重排一维数组: 相当于洗牌,重新把一维数组的顺序打乱,随机的,杂乱无章的,每次执行这个函数你都会获得一个不一样的数组,但是元素数量和元素大小都不变哈。
4.重排二维数组: 和排序二维数组用法一样,但是是打乱数组,这个就不分行和列了哈,直接所有元素全部混在一起打乱顺序。
5.反转一维数组: 这个贼简单,就是把数组的顺序倒过来,不多讲了。

1.2.3 第四列函数

1.搜索一维数组: 这个函数是搜索一维数组里面的你想要找的元素在哪个位置,图中这个函数执行后,“元素索引”显示为“1”,表示我要找的“2”这个数字是在第二个位置(这是因为labview计数是从0开始计数的,和索引相关的都是从0开始计数,所以1就是第二位)。当然这个函数搜索到第一个位置的2时就停止索引了,只告诉我们第一个“2”的位置。
在这里插入图片描述
2.拆分一维数组
该函数是将一个一维数组拆成两个数组,以索引的位置位分界线,题主写的索引值为2,所以从第二个2后面为第二个子数组。
在这里插入图片描述
3.一维数组循环移位
就是把后面的几个元素拿到数组最前面,题主写了个2,表示最后两位数拿到前面,就是把30拿到前面。
在这里插入图片描述
4.数组元素+1/-1
这个没什么好讲的,就是这个函数是把数组中所有的元素+1或者-1,注意:是数组里面所有的元素。

后面的几个函数题主打算配合簇来讲,所以打算下节课再详细讲解簇和数组的函数配合关系并区分他们两个。

1.3 数组的几个重要参数

数组中有几个需要注意的参数,分别是:数组类型,数组维数,数组大小。
数组类型: 是指数组中元素的类型是什么,这里由上面第一节讲过,数组包含输入和输出两种,两者可以直接在后面板右键转换,包含字符串型、数值型、枚举型、布尔型等等。
数组维数和数组大小: 是指数组为几维数组,一维数组大小为1N或N1,二维数组的大小为M*N,以此类推。

二、数组应用

注:本章相关程序均在文章最后提供分享链接,大家可自行下载。
本章介绍数组生成与索引的几种方式,数组与波形之间的关系,数组的函数处理内容。通过实例让大家理解数组的实际应用场景。

2.1 数组生成及索引方式

数组生成除了前文提及的使用函数创建之外,还和循环函数(for,while)的索引关系很大,在项目开发中,使用for循环建立和数组的关系是非常便捷的,通过for循环产生数组的方式是软件开发中常用的方式,
题主之前写过一篇介绍For循环的文章,里面讲解了如何建立for循环和数组的关系,链接放在下面:
链接:Labview for循环精讲 https://blog.csdn.net/m0_52176775/article/details/135746691
本章提供一个范例:建立一个一维数组,元素数为20个,数组中的元素是随机变化的,每个元素的范围是0-20且为正整数。 这种类型的题目就直接使用for循环+索引来解决了,大家可以自己做一下,我把我得程序贴在下面。
在这里插入图片描述
这样就创建了一个一维数组,那么我们增加一下难度,如果要建立一个二维数组该怎么样处理呢?我们可以在外面再套一层for循环,这样当内部的一维数组创建完成后,最外层的for循环就会开始第二次循环。如下图所示:
在这里插入图片描述
同时,for循环还可以索引进入for循环的数组,每循环一次只拿一个元素,具体在上述关于for循环讲解的链接中都可以看到,

2.2 数据采集时数组与波形的关系。

数据采集是Labview其中很强大的一个功能,可以向数据采集卡获取波形数据等,当然NI也自带了NI-DAQ数据采集卡,提供给大家使用,实际采集数据的过程中,有时会用到波形显示,大家知道,一段音频一束光都是波形,根据采样定理(这个了解即可),我们采集到的任何波形都不是连续的,都是一个个点组成的一个模拟波形使我们的波形看上去更像一个连续光滑的图形,那么这些点的本质实际上就是数组!。而且多为两行数据的二维数组,一行代表坐标,一行代表幅值。
我们使用电脑自带的麦克风采集当前的声音信号,后面板程序及前面板显示如下图所示:在这里插入图片描述
题主使用两种方式显示了波形,一种是1D数组类型,一种是波形图的方式,可以看到波形和一维数组是互相转化的,波形本质即为一维数组。
在这里插入图片描述

后续会继续更新相关文章,建议大家关注题主,不错过跟更新的文章

链接: https://pan.baidu.com/s/13QhLAcoYQoqmdE50TtjQOA
提取码:6666

相关文章:

1.【Labview白话系列】Labview数组精讲

题主经过写文章一段时间的发现,许多同学对该软件的理解和编程能力是不太一样的,有些知识相对一些同学较为简单,但是有些同学提问就比较困难。那么针对这个问题,题主打算出一期说白话系列的专栏,在该栏目中用最通俗的大…...

ANTLR4规则解析生成器(三):遍历语法分析树

文章目录 1 词法分析2 语法分析3 遍历语法分析树3.1 Listener3.2 Visitor 4 总结 1 词法分析 词法分析就是对给定的字符串进行分割,提取出其中的单词。 在antlr4中,词法规则的名称的首字母需要大写,右侧必须是终结符,通常将词法…...

OpenCV实现目标追踪

目录 准备工作 语言: 软件包: 效果演示 代码解读 (1)导入OpenCV库 (2)使用 cv2.VideoCapture 打开指定路径的视频文件 (3)使用 vid.read() 读取视频的第一帧,ret…...

【剑指offer--C/C++】JZ6 从尾到头打印链表

一、题目 二、本人思路及代码 直接在链表里进行翻转不太方便操作,但是数组就可以通过下标进行操作,于是, 思路1、 先遍历链表,以此存到vector中,然后再从后往前遍历这vector,存入到一个新的vector,就完成…...

算法-买卖股票的最佳时机

1、题目来源 121. 买卖股票的最佳时机 - 力扣(LeetCode) 2、题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖…...

【大数据】Flink SQL 语法篇(十):EXPLAIN、USE、LOAD、SET、SQL Hints

《Flink SQL 语法篇》系列,共包含以下 10 篇文章: Flink SQL 语法篇(一):CREATEFlink SQL 语法篇(二):WITH、SELECT & WHERE、SELECT DISTINCTFlink SQL 语法篇(三&…...

Java中List接口常见的实现类

目录 ArrayList实现类 数据存储 构造器 成员方法:CRUD Vector实现类 数据存储 构造器方法 成员方法 LinkedList实现类 数据存储 构造器方法 成员方法CRUD List总结 ArrayList:数组实现,随机访问速度快,增删慢&#x…...

SPI通信

SPI通信: 四根通信线:SCK,MOSI,MISO,SS(从机选择线) 同步时钟,全双工 支持总线挂载多个设备,一主多从 SPI相对IIC传输更快,最简单,最快速 SPI没有接收和应答机制,发送就发…...

【动态规划】【数论】【区间合并】3041. 修改数组后最大化数组中的连续元素数目

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 数论 区间合并 LeetCode3041. 修改数组后最大化数组中的连续元素数目 给你一个下标从 0 开始只包含 正 整数的数组 nums 。 一开始,你可以将数组中 任意数量 元素增加 至多 1 。 修改后,你可以从…...

字节后端实习 一面凉经

心脏和字节永远都在跳动 深圳还有没有大厂招后端日常实习生啊,求捞~(boss小公司也不理我) 很纠结要不要干脆直接面暑期实习,又怕因为没有后端实习经历,面不到大厂实习。死锁了...

倒计时37天

复习1001. 马走日问题: 1.P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) //日常碎碎念:谁懂啊,dev突然不能用了,也不知道是哪里出了问题下了五六次都不能用,,,找远程安…...

【计算机考研】考408,还是不考408性价比高?

首先综合考虑,如果其他科目并不是很优秀,需要我们花一定的时间去复习,408的性价比就不高,各个科目的时间互相挤压,如果备考时间不充裕,考虑其他专业课也未尝不可。 复习408本来就是费力不讨好的事情 不同…...

测试入门篇

测试: 这里写目录标题 测试:基础概念:BUG:创建一个合理的bug:bug 的级别:跟开发争执如何解决: 测试用例:编写测试用例的万能公式:案例: 登录功能的测试:设计测试用例的方法: 进阶篇(主要介绍测试方法):自动化测试:自动化测试的分类:selenium( web 自动化测试工具 )环境部署:什么…...

b站小土堆pytorch学习记录—— P25-P26 网络模型的使用和修改、保存和读取

文章目录 一、修改1.方法2.代码 二、保存和读取1.方法2.代码(1)保存(2)加载 3.陷阱 一、修改 1.方法 add_module(name: str, module: Module) -> None name 是要添加的子模块的名称。 module 是要添加的子模块。 调用 add_m…...

[数据结构]OJ用队列实现栈

225. 用队列实现栈 - 力扣(LeetCode) 官方题解:https://leetcode.cn/problems/implement-stack-using-queues/solutions/432204/yong-dui-lie-shi-xian-zhan-by-leetcode-solution/ 首先我们要知道 栈是一种后进先出的数据结构&#xff0c…...

「优选算法刷题」:最长回文子串

一、题目 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba"…...

Java项目:41 springboot大学生入学审核系统的设计与实现010

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本大学生入学审核系统管理员和学生。 管理员功能有个人中心,学生管理,学籍信息管理,入学办理管理等。 学生功能有…...

【数据结构与算法】常见排序算法(Sorting Algorithm)

文章目录 相关概念1. 冒泡排序(Bubble Sort)2. 直接插入排序(Insertion Sort)3. 希尔排序(Shell Sort)4. 直接选择排序(Selection Sort)5. 堆排序(Heap Sort)…...

Unity3D学习之XLua实践——背包系统

文章目录 1 前言2 新建工程导入必要资源2.1 AB包设置2.2 C# 脚本2.3 VSCode 的环境搭建 3 面板拼凑3.1 主面板拼凑3.2 背包面板拼凑3.3 格子复合组件拼凑3.4 常用类别名准备3.5 数据准备3.5.1 图集准备3.5.2 json3.5.3 打AB包 4 Lua读取json表及准备玩家数据5 主面板逻辑6 背包…...

前端技术研究越深入,越觉得技术不是决定录用唯一条件。

一、拒绝抬杠 我说技能不是唯一条件,不是说技能不重要,招聘前端条件是1X,其中1是技能,X是其他条件。 如果X条件很优秀,1这个条件可以降格为0.8、0.5,甚至更低。 有人就抬杠,那为啥不招聘清洁工来干前端&…...

vue组件的重新渲染的问题

目录 1.方式1 2.方式2 1.方式1 修改组件上的key属性 Vue是通过diffing算法比较虚拟DOM和真实DOM,来判断新旧 DOM 的变化。key是虚拟DOM对象的标识,在更新显示时key表示着DOM的唯一性。 DOM是否变化的核心是通过判断新旧DOM的key值是否变化&#xff0c…...

opengl 学习(二)-----你好,三角形

你好&#xff0c;三角形 分类demo效果解析 分类 opengl c demo #include "glad/glad.h" #include "glfw3.h" #include <iostream> #include <cmath> #include <vector>using namespace std;/** * 在学习此节之前&#xff0c;建议将这…...

mongodb4.2升级到5.0版本,升级到6.0版本, 升级到7.0版本案例

今天一客户想把自己当前使用的mongodb数据库4.2版本升级到7.0版本。难道mongodb能直接跳跃升级吗? 经过几经查找资料&#xff0c;貌似真不行呀。确定升级流程如下: 还得从mongo4.2升级到5.0。其次再从5.0升级到6.0。最后再从6.0升级到7.0。 开始升级之前将数据进行备份 这一步…...

CPU处理器模式与异常

ARM架构中的Exception Level&#xff08;EL&#xff09; 在ARM架构中&#xff0c;Exception Level&#xff08;EL&#xff09;是一个关键概念&#xff0c;它表示了处理器当前处理异常或中断的层次。ARMv8-A架构定义了四个Exception Levels&#xff1a;EL0、EL1、EL2和EL3&…...

Day 53 |● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和

1143.最长公共子序列 class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size()1,vector<int>(text2.size()1,0));int res 0;for(int i 1; i < text1.size(); i){for(int j 1; j <…...

ant-desgin charts双轴图DualAxes,柱状图无法立即显示,并且只有在调整页面大小(放大或缩小)后才开始显示

摘要 双轴图表中&#xff0c;柱状图无法立即显示&#xff0c;并且只有在调整页面大小&#xff08;放大或缩小&#xff09;后才开始显示 官方示例代码 在直接复制&#xff0c;替换为个人数据时&#xff0c;出现柱状图无法显示问题 const config {data: [data, data],xFiel…...

获取别人店铺的所有商品API接口

使用淘宝淘口令接口的步骤通常包括&#xff1a; 注册成为淘宝开放平台的开发者&#xff1a;在淘宝开放平台网站上注册账号并完成认证。 创建应用以获取API密钥&#xff1a;在您的开发者控制台中创建一个应用&#xff0c;并获取用于API调用的密钥&#xff0c;如Client ID和Clie…...

成都正信:亲戚借了钱一直不还怎么委婉的说

在中国传统文化中&#xff0c;亲情关系往往被视为最为重要和敏感的部分。当亲戚间发生借贷时&#xff0c;若出现拖欠不还的情形&#xff0c;处理起来尤为棘手。面对这样的尴尬局面&#xff0c;采取委婉而有效的沟通方式至关重要。 张华最近就遇到了这样的困扰。他的表弟去年因急…...

Truenas入门级教程

Truenas入门教程 前言&#xff1a;系统相关配置 采用I3 4160&#xff0c;采用了2块500G的硬盘&#xff0c;内存为8G&#xff0c;两个网卡只用了其中一个&#xff0c;系统安装的是core版本 硬件采用DELL3020MT机箱&#xff0c;自带3个SATA网口&#xff0c;后期网口不够&#…...

窗口函数dense() over(条件)

力扣题目连接 https://leetcode.cn/problems/rank-scores/ 在 SQL 中&#xff0c;DENSE_RANK() 是一个窗口函数&#xff0c;用于计算结果集中每行的稠密排名&#xff08;dense rank&#xff09;。DENSE_RANK() 函数会为具有相同排序字段值的行分配相同的排名&#xff0c;但不会…...