Matlab无限期while循环中的evalin

Matlab无限期while循环中的evalin

问题描述:

对于课程成像处理,我构建了一个Matlab/C++应用程序。 Matlab应该识别手势,并且应该将它们发送给C++应用程序。我们的想法是在matlab中创建一个我们可以从C++读取的队列。这工作完美,但我们有一个问题:Matlab无限期while循环中的evalin

我们从网络摄像头的数据在一个无限的while循环。在该循环内部,我们使用assignin('base',....)和evalin('base',...)将我们的命令发送到工作区。但是,这些命令仅在循环完成后单击我们的停止按钮才会发送。这意味着C++应用程序不能实时读取值,只能在我们停止完成图像处理后才能读取值。

所以有可能迫使matlab将变量写入基础工作区,以便我们可以使用matlab的C++应用程序读取这些值?

编辑: 下面的程序是如何工作的一个简短描述:

的应用开始与C++应用程序。 C++应用程序启动Matlab引擎,并调用Matlab应用程序的初始化脚本。初始化脚本启动GUIDE GUI,通过按下按钮,手势识别部分开始。 Matlab应用程序的手势识别部分是一个无限的while循环,它不断从网络摄像头输入中获取一帧并处理该图像。找到手势后,它会使用evalin将手势ID写入基本工作区中的队列。与此同时,C++应用程序也处于无限循环中,持续检查该Matlab队列中是否有项目。然而,在matlab脚本离开while循环之前,它不会找到任何项目。 当我手动添加项目到队列时,C++应用程序将立即读取这些值,并且当我不使用while循环来连续捕获帧,而是一个手动获取单个帧的按钮时,C++应用程序也可以立即读取这些值。所以while循环似乎阻止C++应用程序读取队列。

我创建的解决方案非常简单:我将所有内容放在while循环中放在一个单独的函数中,并且每次更新C++应用程序都调用该函数,而不是使用2个单独的while循环。

这些值应立即写入基本工作区,否则使用evalin将无法​​将其取回。所以我很想暗示你误诊了这个问题。

你有一个简单的例子来强调这个问题吗?

+0

也许它们会立即写入基本工作区,但脚本外的代码无法访问它们。我会在一分钟内为我的问题添加一个简短的程序说明。 – Tiddo 2012-01-14 13:54:12