小编Pau*_*den的帖子

在MATLAB中嵌入Python

我试图将Python 2.6嵌入到MATLAB(7.12)中.我想嵌入一个用C编写的mex文件.这对于使用标量的小型简单示例很有用.但是,如果导入Numpy(1.6.1),MATLAB崩溃了.我说无论如何,因为我已经尝试了许多方法来加载numpy库,包括

  1. 在python模块(.py)中:

    from numpy import *
    
    Run Code Online (Sandbox Code Playgroud)
  2. 随着PyRun_SimpleString在MEX文件:

    PyRun_SimpleString(“from numpy import *”);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 调用numpy函数Py_oBject_CallObject:

    pOut  = PyObject_CallObject(pFunc, pArgs); 
    
    Run Code Online (Sandbox Code Playgroud)

最初,我认为这可能是将Numpy嵌入C中的问题.但是,当嵌入在使用Visual Studio 2005 C编译器的/ MD(多线程)开关的命令行编译的简单C文件中时,Numpy工作正常.接下来,我想我只需要在MATLAB中更改make文件以包含/ MD开关.没有这样的运气,mexopts.bat与/ MD开关编译.我还手动注释了Numpy init模块中的行,以找出崩溃的MATLAB.似乎加载任何扩展名为pyd的文件会导致MATLAB崩溃.在NumPy中加载的第一个这样的文件是multiarray.pyd.MATLAB文档描述了如何使用Visual Studio调试mex文件,并在下面放置了错误消息.在这一点上,我知道问题是pyd的内存问题和MATLAB的一些冲突.有趣的是,我可以在MATLAB中使用系统命令来启动使用numpy的python中的进程,并且不会生成错误.我将在MATLAB的错误消息下面粘贴,然后在可视化工作室中粘贴MATLAB崩溃的过程中的DEBUG输出.但是,我并没有粘贴整个事情,因为第一次机会的例外列表很长.有没有解决这个集成问题的建议?

MATLAB error
Matlab has encountered an internal problem and needs to close 
MATLAB crash file:C:\Users\pml355\AppData\Local\Temp\matlab_crash_dump.3484-1:


------------------------------------------------------------------------
       Segmentation violation detected at Tue Oct 18 12:19:03 2011
------------------------------------------------------------------------

Configuration:
  Crash Decoding  : Disabled
  Default Encoding: windows-1252
  MATLAB License  : 163857
  MATLAB Root     : C:\Program Files\MATLAB\R2011a
  MATLAB Version  : 7.12.0.635 (R2011a)
  Operating System: …
Run Code Online (Sandbox Code Playgroud)

python matlab numpy mex

31
推荐指数
1
解决办法
3417
查看次数

标签 统计

matlab ×1

mex ×1

numpy ×1

python ×1