LabVIEW中使用递归算法 点击:290 | 回复:0



fjczd

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:552帖 | 36回
  • 年度积分:703
  • 历史总积分:1294
  • 注册:2008年8月14日
发表于:2022-04-17 20:12:29
楼主

LabVIEW中使用递归算法

LabVIEW支持递归吗?如何在LabVIEW中创建递归的VI?

LabVIEW确实支持递归。按照下面的步骤来创建一个递归VI。

关于递归

一个可以调用自己的VI就叫做递归VI 。换言之,如果LabVIEW应用中使用递归,它就会打开很多自己的拷贝,从而完成指定的任务。例如,一个递归的典型应用就是计算一个阶乘(用!表示)。任何正整数的阶乘就是从1开始一直乘到这个数的结果。因此,3! = 3*2*1 = 6。在下面附带的递归VI factorial.vi 例子通过将当前数与当前数-1的阶乘相乘而得,也就是调用了自己。 数学公式如下,3!=3*(2!)。在这个递归factorial VI中,1!和0!(特殊情况)被定义为结果是1。

可重入VI

需要强调的一点是,一个递归VI必须在内存中复制它的很多备份,这个VI我们也把它叫作可重入的。换句话来说,每个递归VI的实例有它自己的,与其他实例VI不一样的数据。下面所列的步骤保证了一个递归VI被设置为可重入的。

创建一个递归的步骤

按照下面的步骤,将一个VI编写为可支持调用自己的功能。

安放好前面版上的输入控件和显示控件(确保他们都有合适的表示方式),通过右键点击前面版右上角的图标和选择Show Connector Pane来设置连接版。

通过选择 File»VI Properties»Execution»Reentrant execution. 

来将VI设置为可重入。

在VI的程序框图中,当前VI的一个拷贝必须在运行时调用Call Reference Node。首先,打开函数选版,选择Application Control»Open VI Reference。将递归VI路径连上,并将options的输入设置为8,这样可以使通过引用调用可重入VI有效。

在Open VI Reference图标中的type specifier VI refnum 中点右键,然后点击 create»constant。在已经创建的常量上点右键,选择 Select VI Server Class»Browse. 选择递归VI的位置,并选择OK。注意到类型标志常量的连接版现则已经表示了这个递归VI的连接版了。

将新打开的VI引用连接入位于Application Control»Call By Reference Node下函数版中的Call By Reference Node。并且将线将整个通过引用被调用的VI的输入和输出口都连好(根据应用的具体情况)。

使用位于Application Control»Close VI Reference下的函数面板中的Close VI Reference来关闭VI的引用。

保证递归VI有一个退出情况。换句话来说,必须有些情况使这个VI只返回一个值,而不是再次调用自己。这个是最终的步骤,现在VI已经被配置为可进行递归了。

阶乘例子

打开附带在下面的factorial.vi,它是一个递归VI的例子。运行整个VI,然后就能得到输入整数的阶乘结果了。

 image.png

请参考附件的例程。

 

更详细的内容,参加如下附件的介绍。


LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序

上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系们。

http://www.bjcyck.com/nd.jsp?id=440#_np=2_358




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师