一、题目
-
已知某传感器过去的一段时间内采集的数据为d1,d2,d3,......,dn,现欲以m点的数据宽度,预测 tao 步后的数据值,即将一维的时间序列数据重构为如下m+1列的形式:
d(1) d(2 ) ....... d(m), d(m+tao)
d(2) d(3 ) ....... d(m+1), d(m+tao+1)
......................................................................
请设计子VI,能够讲给定的数组转换为如上结构形式的数据输出
二、过程
通过创建数组对数组进行初始化,模拟传感器采集到的数据。
采用for循环对采集到的数据进行处理,通过“数组大小”节点获取数组中元素个数,设置数值输入控件“数据宽度m”为任意值,为方便观察,此处设置为“2",为了防止下标访问越界,用数组大小减去数据宽度和τ之和,再加1,最后连接至“循环总数”。
调用“数组子集”节点,将“索引”连接至“循环计数”,即获取数组中对应下标的元素,将“长度”连接至“数据宽度”节点,即可设置数组宽度。最后通过移位寄存器保存每次获取到的数组子集,在左侧移位寄存器对二维数组进行初始化后,通过右侧移位寄存器输出重构后的数据。
要实现预测τ步后的元素,只需要在原来的数组中新建一列元素,并且以“数组宽度”+“循环计数”+“+1”的结果-1,作为元素下标,通过“索引数组“节点,生成预测元素,再通过“数组插入”节点,插入到原来的数组中即可。
下图为子VI设计:
下图为测试子VI过程: