在Matlab和C之间共享数据

时间:2014-01-07 18:13:17

标签: c matlab

我的一些朋友写了一个程序,它使用C程序从网络(UDP)接收数据,并使用Matlab处理收到的数据。两个文件即。 “数据文件”和“控制文件”用于在Matlab和C之间传递数据。方案如下。

  1. C程序从网络接收数据,如果'控制文件'包含'0',则将接收的数据写入'数据文件'。完全写入数据后,“控制文件”中的“0”将替换为“1”。
  2. Matlab程序连续检查“控制文件”中的“1”,并在“控制文件”中读取“1”后立即从“数据文件”中读取数据。在读取和处理数据后,Matlab将'1'替换为'控制文件'中的'0'。
  3. 基本上,该方案试图使用“控制文件”作为“锁定”来安全地处理“数据文件”中的数据。每1毫秒连续接收数据,处理需要软实时。

    虽然声称一切正常,但我觉得这里有些可疑。原则上,我们应该使用类似于信号量的东西来正确锁定资源....对吧? 这个计划有哪些陷阱?有没有更好的替代方案?

    编辑:现在我看到有人在Launch one C++ application from another, and communicate with it提出了类似的“快速而肮脏”的技术

    我想知道为什么这是一种'肮脏'技术?它会在所有情况下都成功吗?

1 个答案:

答案 0 :(得分:2)

您必须在案例中使用文件锁定(read wiki

另外,您可能有兴趣看到MEX-Files提供了Matlab和C之间的接口,因此它可以从Matlab调用C函数。请参阅herehere