首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将前5个值相加计算偏移量

将前5个值相加计算偏移量
EN

Stack Overflow用户
提问于 2020-01-20 17:46:45
回答 2查看 113关注 0票数 1

我正在使用node-red来获取我的称重单元的信号。我使用MQTT (从我的python脚本)接收到了测压元件的值,然后我想保存来自MQTT的前5个值,以计算测压元件的偏移量。然后,当我将有我的偏移量,我可以从我的msg.payload减去它,将称重元件设置为0。

我试图创建一个while循环来累加前5个值,但即使前5个值消失了,结果也在更新。看起来它应用了我的循环中的计算,即使循环结束了。

代码语言:javascript
运行
复制
var offset0 = 0;
var i = 0;


while (i < 5) {
    offset0 = parseFloat(msg.payload) + offset0;
    i = i + 1;
}
offset0 = offset0 / 5;


msg.payload = offset0;
return msg;

在我的称重传感器发出每一个新的信息后,msg都在更新...或者我只想保留前5个值(5个是为了进行测试,然后我想使用超过5个点)。

例如,下面是我从称重传感器获得的数据:

代码语言:javascript
运行
复制
1.93, 1.94, 1.95, 1.94, 1.96, 1.93, 1.88, 1.93. 

它应该包含前5项:

代码语言:javascript
运行
复制
1.93, 1.94, 1.95, 1.94, 1.96 

做个中庸之人。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-20 19:38:39

你的方法有很多问题。

首先,默认情况下,函数节点(运行代码的地方)不会保留任何状态。这意味着对于每条传入的消息,offset0将被重置为0。

其次,代码由传入的消息触发,这意味着while()循环将始终使用相同的值(触发节点的消息的msg.payload中的任何值)运行。

您需要使用所谓的context来存储到达功能节点的消息之间的值。

像这样的东西应该是一个起点:

代码语言:javascript
运行
复制
//get current offset array from context or empty array
var offset = context.get('offset') || [];

//if less than 5 readings store value and do not send on message
if (offset.length < 5) {
  offset.push(msg.payload);
  context.set('offset',offset);
  return;
} else {
  //otherwise calculate mean and remove from value and forward.
  var o;
  for (var i=0; i<5; i++) {
    o += offset[i];
  }
  msg.payload = msg.payload - (o/5);
  return msg;
}
票数 1
EN

Stack Overflow用户

发布于 2020-01-20 17:58:28

您可以取索引的剩余部分,将sum重置为0,并获得最后5个数的平均值为4。

代码语言:javascript
运行
复制
var values = [1.93, 1.94, 1.95, 1.94, 1.96, 1.93, 1.88, 1.93],
    sum = 0,
    count = 0,
    i;

for (i = 0; i < values.length; i++) {
    if (i % 5 === 0) sum = 0;         // reset
    sum += values[i];
    if (i % 5 === 4) {                // take mean
        console.log(sum / 5);
    }
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59820595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档