如何在Labview中对数字求和时按常数递增?
How to increment by constant number while summing numbers in Labview?
我今天才开始学习Labview,一直在网上搜索和查看示例代码。但是,我仍然发现自己停留在一些简单的概念上。
目前我正在尝试编写一个简单的代码,将小于或等于 N
的所有数字相加,这些数字是 3 和 5 的倍数。这是我现在拥有的图像.我觉得它很接近,但是我缺少一个关键方面来使循环将所有通过此标准的数字相加(而不仅仅是最后一个)。
为了引导您完成它——我有一个 for 循环,我首先指定要迭代的某个数字 N
(或者更确切地说 N+1)。我还将 i
设置为等于 5,这样我就可以开始迭代数字 5(我认为)并以 5 的倍数继续。然后,我将输入数字除以 3,并检查余数是否相等到 0 或不。如果是,那么它也是 3 的倍数,所以一个布尔值被设置为 True 并且我将这个数字添加到我的最终总和(+0,因为我不知道还有什么可以放在那里)。如果不是,我就加0。然后计算最后的和。
如果我从左上角的 N=16 开始,我的 "final sum" 指示器显示 15,这是正确的,因为 15 是 5-15 中唯一一个既是 3 又是 5 的倍数的数字。但是,如果我尝试 1001,例如,我的 "final sum" 指示器显示 0。所以我认为它只对循环中的最后一个数字执行这些检查和求和——或者所有以前的结果都被覆盖。我不确定如何解决这个问题(我尝试了一个移位寄存器但后来删除了它,因为我认为这会将我的最终总和带到新循环的输入中,这不是我想要的)。感谢您的帮助!
您可以在此处上传 VI 或 VI 片段(不是屏幕截图)。因为现在,所有的电线都从右到左,很难做某事......
关于问题 - 最后的总和当然是空的,b/c 你不添加以前的结果。将其存储到移位寄存器,并根据需要为其添加值。
关键是您的 for 循环的输出隧道设置为 "Last Value,",这意味着写入 Final Sum 的内容正是最后一次在线路上的内容。另一种选择是对该隧道进行索引。你有一根电线这样做,但你没有对它执行任何操作。如果您对该自动生成的数组的数组元素求和(这就是索引所做的),那么您将得到您正在寻找的输出。
还有,你不能给i写信;它只是为您提供 for 循环的当前索引。
考虑到所涉及执行的简单性,我不会担心执行不需要的步骤,因此您无需担心递增 1 以外的任何值。这很好,因为在 LabVIEW 中, For 循环总是递增 1。
但是,如果此计算的成本更高,则可以通过一些方法解决这个问题,例如在计算中使用索引之前减少迭代次数和缩放索引。
这里是对你所做的稍作修改,但应该可以,我刚刚根据 nekomatic 的评论修复了它:
下面是可以完成相同任务但执行次数更少的代码:
我今天才开始学习Labview,一直在网上搜索和查看示例代码。但是,我仍然发现自己停留在一些简单的概念上。
目前我正在尝试编写一个简单的代码,将小于或等于 N
的所有数字相加,这些数字是 3 和 5 的倍数。这是我现在拥有的图像.我觉得它很接近,但是我缺少一个关键方面来使循环将所有通过此标准的数字相加(而不仅仅是最后一个)。
为了引导您完成它——我有一个 for 循环,我首先指定要迭代的某个数字 N
(或者更确切地说 N+1)。我还将 i
设置为等于 5,这样我就可以开始迭代数字 5(我认为)并以 5 的倍数继续。然后,我将输入数字除以 3,并检查余数是否相等到 0 或不。如果是,那么它也是 3 的倍数,所以一个布尔值被设置为 True 并且我将这个数字添加到我的最终总和(+0,因为我不知道还有什么可以放在那里)。如果不是,我就加0。然后计算最后的和。
如果我从左上角的 N=16 开始,我的 "final sum" 指示器显示 15,这是正确的,因为 15 是 5-15 中唯一一个既是 3 又是 5 的倍数的数字。但是,如果我尝试 1001,例如,我的 "final sum" 指示器显示 0。所以我认为它只对循环中的最后一个数字执行这些检查和求和——或者所有以前的结果都被覆盖。我不确定如何解决这个问题(我尝试了一个移位寄存器但后来删除了它,因为我认为这会将我的最终总和带到新循环的输入中,这不是我想要的)。感谢您的帮助!
您可以在此处上传 VI 或 VI 片段(不是屏幕截图)。因为现在,所有的电线都从右到左,很难做某事...... 关于问题 - 最后的总和当然是空的,b/c 你不添加以前的结果。将其存储到移位寄存器,并根据需要为其添加值。
关键是您的 for 循环的输出隧道设置为 "Last Value,",这意味着写入 Final Sum 的内容正是最后一次在线路上的内容。另一种选择是对该隧道进行索引。你有一根电线这样做,但你没有对它执行任何操作。如果您对该自动生成的数组的数组元素求和(这就是索引所做的),那么您将得到您正在寻找的输出。
还有,你不能给i写信;它只是为您提供 for 循环的当前索引。
考虑到所涉及执行的简单性,我不会担心执行不需要的步骤,因此您无需担心递增 1 以外的任何值。这很好,因为在 LabVIEW 中, For 循环总是递增 1。
但是,如果此计算的成本更高,则可以通过一些方法解决这个问题,例如在计算中使用索引之前减少迭代次数和缩放索引。
这里是对你所做的稍作修改,但应该可以,我刚刚根据 nekomatic 的评论修复了它:
下面是可以完成相同任务但执行次数更少的代码: