如何在没有Matlab的机器上使用Python脚本中的Matlab函数

时间:2016-07-22 12:02:06

标签: python c matlab visual-studio

设置

在一个共享项目中,我编写了一个Python脚本,需要将一些参数传递给同事写的函数,接收其输出并处理结果。所述功能是在Matlab中创建的,我不拥有(并且在最终产品将运行的机器上不可用),因此我要求他们将其转换为独立格式。

我收到的是一个* .mexw64文件和一个名为“codegen”的文件夹,其中包含大量自动生成的内容,其中包含原始C代码所需的功能。

问题:C代码无法编译

为了在Python中使用这个新的C函数,我需要编译它,所以我将所有文件复制到VisualStudio 2015中新创建的项目中并尝试了。它失败了,因为无法识别函数的参数类型“real_T”。我从来没有和C一起工作,也不知道我在这里做什么,不管怎么说,所以现在,我有点卡住了。我的同事之前从未从Matlab中输出任何内容,也不知道该怎么做。

原始的Matlab函数如下所示:

function [a] = convert_vector(b)
  ...
end

生成的C代码如下:

/* Include files */
#include "rt_nonfinite.h"
#include "testc.h"

/* Function Definitions */
void convert_vector(real_T b[2])
{
  ...
}

问题:如何编译C代码?

为了从Python调用C代码我需要编译它,但我不知道如何处理“real_T”类型错误。在MATLAB Answers,他们说必要的一切都应该在.h文件中,但显然VisualStudio不知道这一点,即使它是#included。这可能是我以前从未与C和/或VisualStudio有过任何关系。

然而,无论如何,我想知道这是否是正确的方法。在能够使用简单函数之前,转换为未编译的C并对其执行大量操作似乎非常繁琐。也许Codegen不是最好的方法吗?

更高级别的问题:如何导出?

我已经读过有其他可能性来导出Matlab函数,例如作为一个独立的* .exe文件,这对我来说在使用和模块处理方面都比较简单。所以,我想,这里真正的问题是:导出Matlab函数以便从我的Python脚本中使用它的最佳方法是什么,以便

  • 在运行脚本的机器上不需要Matlab本身
  • 我可以通过Python传递参数并接收结果吗?

对于这个有点复杂的问题感到抱歉。我很感激有关问题的每个部分的建议,以及如何改进问题本身的提示。

0 个答案:

没有答案