在 MATLAB 中嵌入 Python

2024-01-15

我正在尝试将 Python 2.6 嵌入到 MATLAB (7.12) 中。我想嵌入一个用 C 编写的 mex 文件。这对于使用标量的小型简单示例来说效果很好。但是,如果以任何方式导入 Numpy (1.6.1),MATLAB 都会崩溃。我说无论如何是因为我尝试了多种方法来加载 numpy 库,包括

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

    from numpy import *
    
  2. With PyRun_SimpleString在 mex 文件中:

    PyRun_SimpleString(“from numpy import *”);
    
  3. 调用 numpy 函数Py_oBject_CallObject:

    pOut  = PyObject_CallObject(pFunc, pArgs); 
    

最初,我认为这可能是在 C 中嵌入 Numpy 的问题。但是,当嵌入到使用 Visual Studios 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 的错误消息,然后粘贴 Visual Studio 中导致 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: Microsoft Windows 7
  Processor ID    : x86 Family 6 Model 7 Stepping 10, GenuineIntel
  Virtual Machine : Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode
  Window System   : Version 6.1 (Build 7600)

Fault Count: 1

Abnormal termination:
Segmentation violation

Register State (from fault):
  EAX = 00000001  EBX = 69c38c20
  ECX = 00000001  EDX = 24ae1da8
  ESP = 0088af0c  EBP = 0088af44
  ESI = 69c38c20  EDI = 24ae1da0

  EIP = 69b93d31  EFL = 00010202

   CS = 0000001b   DS = 00000023   SS = 00000023
   ES = 00000023   FS = 0000003b   GS = 00000000


Stack Trace (from fault):
[  0] 0x69b93d31 C:/Python26/Lib/site-packages/numpy/core/multiarray.pyd+00081201 ( ???+000000 )
[  1] 0x69bfead4 C:/Python26/Lib/site-packages/numpy/core/multiarray.pyd+00518868 ( ???+000000 )
[  2] 0x69c08039 C:/Python26/Lib/site-packages/numpy/core/multiarray.pyd+00557113 ( ???+000000 )
[  3] 0x08692b09                           C:/Python26/python26.dll+00076553 ( PyEval_EvalFrameEx+007833 )
[  4] 0x08690adf                           C:/Python26/python26.dll+00068319 ( PyEval_EvalCodeEx+002255 )



This error was detected while a MEX-file was running. If the MEX-file
is not an official MathWorks function, please examine its source code
for errors. Please consult the External Interfaces Guide for information
on debugging MEX-files.

If this problem is reproducible, please submit a Service Request via:
    http://www.mathworks.com/support/contact_us/

A technical support engineer might contact you with further information.

Thank you for your help. 

Visual Studio 调试器的输出

First-chance exception at 0x0c12c128 in MATLAB.exe: 0xC0000005: Access violation reading location 0x00000004.
First-chance exception at 0x0c12c128 in MATLAB.exe: 0xC0000005: Access violation reading location 0x00000004.
First-chance exception at 0x0c12c128 in MATLAB.exe: 0xC0000005: Access violation reading location 0x00000004.
First-chance exception at 0x751d9673 in MATLAB.exe: Microsoft C++ exception: jitCgFailedException at memory location 0x00c3e210..
First-chance exception at 0x751d9673 in MATLAB.exe: Microsoft C++ exception: jitCgFailedException at memory location 0x00c3e400..
First-chance exception at 0x69b93d31 in MATLAB.exe: 0xC0000005: Access violation writing location 0x00000001.
> throw_segv_longjmp_seh_filter()
throw_segv_longjmp_seh_filter(): invoking THROW_SEGV_LONGJMP SEH filter
> mnUnhandledWindowsExceptionFilter()
MATLAB.exe has triggered a breakpoint

尝试从Python方面解决问题:Python是一种很棒的粘合语言,我建议你让Python运行你的Matlab和C程序。 Python 有:

  1. Numpy
  2. PyLab
  3. Matplotlib
  4. IPython

因此,该组合是几乎所有现有 Matlab 模块的良好替代方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MATLAB 中嵌入 Python 的相关文章

  • 如何为未捕获的异常处理程序编写单元测试

    我有一个函数可以捕获uncaught例外情况 如下 有没有办法编写一个单元测试来执行uncaught exception handler 功能正常 但测试正常退出 import logging def config logger logge
  • 如何在python中附加两个字节?

    说你有b x04 and b x00 你如何将它们组合起来b x0400 使用Python 3 gt gt gt a b x04 gt gt gt b b x00 gt gt gt a b b x04 x00
  • python array(10,1) 和 array(10,) 之间的区别

    我正在尝试将 MNIST 数据集加载到数组中 当我使用 X train y train X test y test mnist load data 我得到一个数组 y test 10000 但我希望它的形状为 10000 1 数组 1000
  • 检查 python 中命令行参数的数量

    我是蟒蛇新手 还是把脚弄湿了 我正在尝试做这样的事情 import sys if len sys argv lt 3 or lt len sys argv gt 3 print This script will compare two fi
  • 将 pandas 剪切操作转换为常规字符串

    我明白了 pandas cut 操作的输出 0 0 20 1 0 20 2 0 20 3 0 20 4 0 20 5 0 20 6 0 20 7 0 20 8 0 20 9 0 20 如何将 0 20 转换为 0 20 我正在这样做 str
  • OpenCV 跟踪器:模型未在函数 init 中初始化

    在视频的第一帧 我运行一个对象检测器 它返回对象的边界框 如下所示
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • 在 Mac OSX 上从 Python 3.6 运行 wine 命令

    我正在尝试用 Python 编写一个打开的脚本wine然后发送代码到wine终端打开一个 exe程序 这 exe程序也是命令驱动的 我可以打开wine 但我无法进一步 import shlex subprocess line usr bin
  • 更改QLineEdit的ClearButton图标

    我想在Windows 10 1909 64位 上的Python 3 8和PyQt5 5 15 0 上更改我的QLineEdit的ClearButton图标 稍后我想在Linux上运行代码 我尝试应用此处找到的代码 如何在 QLineEdit
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • PIL.Image.open和tf.image.decode_jpeg返回值的区别

    我使用 PIL Image open 和 tf image decode jpeg 将图像文件解析为数组 但发现PIL Image open 中的像素值与tf image decode jpeg不一样 为什么会出现这种情况 Thanks 代
  • Matlab:条形图中缺少标签

    使用 Matlab 2012 和 2013 我发现设置XTickLabel on a bar图表最多只能使用 15 个柱 如果条形较多 则标签会丢失 如下所示 绘制 15 个条形图 N 15 x 1 N labels num2str x d
  • 为正则表达式编写解析器

    即使经过多年的编程 我很羞愧地说我从未真正完全掌握正则表达式 一般来说 当问题需要正则表达式时 我通常可以 在一堆引用语法之后 想出一个合适的正则表达式 但我发现自己越来越频繁地使用这种技术 所以 自学并理解正则表达式properly 我决
  • 根据多个阈值将 SciPy 分层树状图切割成簇

    我想将 SciPy 的树状图切割成多个具有多个阈值的簇 我尝试过使用 fcluster 但它只能削减一个阈值 例如 这是我从另一个问题中摘取的一段代码 import pandas data pandas DataFrame total ru
  • 在 numpy 中连接维度

    我有x 1 2 3 4 5 6 7 8 9 10 11 12 shape 2 2 3 I want 1 2 3 4 5 6 7 8 9 10 11 12 shape 2 6 也就是说 我想连接中间维度的所有项目 在这种特殊情况下我可以得到这
  • 非法指令:MacOS High Sierra 上有 4 条指令

    我正在尝试在 pygame 3 6 中制作一个看起来像聊天的窗口 我刚刚将我的 MacBook 更新到版本 10 13 6 在我这样做之前它工作得很好 但在我收到消息之后 非法指令 4 Code import pygame from pyg
  • 高效创建抗锯齿圆形蒙版

    我正在尝试创建抗锯齿 加权而不是布尔 圆形掩模 以制作用于卷积的圆形内核 radius 3 no of pixels to be 1 on either side of the center pixel shall be decimal a
  • Jupyter Notebook:带有小部件的交互式绘图

    我正在尝试生成一个依赖于小部件的交互式绘图 我遇到的问题是 当我使用滑块更改参数时 会在前一个绘图之后完成一个新绘图 而我预计只有一个绘图会根据参数发生变化 Example from ipywidgets import interact i
  • 如何使用xlwt设置文本颜色

    我无法找到有关如何设置文本颜色的文档 在 xlwt 中如何完成以下操作 style xlwt XFStyle bold font xlwt Font font bold True style font font background col
  • Python 中的 Unix cat 函数 (cat * > merged.txt)? [复制]

    这个问题在这里已经有答案了 一旦建立了目录 有没有办法在Python中使用Unix中的cat函数或类似的函数 我想将 files 1 3 合并到 merged txt 我通常会在 Unix 中找到该目录 然后运行 cat gt merged

随机推荐

  • Scala 类型(推理)问题?

    我正在 Scala 中使用以下方法开发 REST Web 服务Jersey http jersey java net JAX RS 参考实现 我收到一个奇怪的错误 我正在尝试创建一个内容配置 http jersey java net non
  • 更改单元格中部分文本的字体颜色

    我的单元格将包含以下值 Image not allowed png 我想改变颜色 png独自一人或之后发生的任何事情 现在我尝试使用下面的代码更改字体颜色 Cells 4 2 Font Color RGB 255 50 25 它将更改整个单
  • 在包含 AudioToolbox 框架的 Objective-C iOS 项目中找不到 AudioServices.h

    根据苹果文档 AudioServices h应该是AudioToolbox框架的一部分 尽管我已将 AudioToolbox 框架添加到我的 Xcode 项目中 但当我 import AudioServices 时 我收到错误 未找到 Au
  • 在 foreach 中强制转换为数组是否被认为是一种不好的做法?

    在启动 foreach 循环时转换为数组是否被认为是一种不好的做法 像这样的事情 foreach array examples as example Do stuff 这可以防止 为 foreach 提供的参数无效 免于发生 或者首先检查它
  • 如何使用Keras API提取“从输入层到隐藏层”和“从隐藏层到输出层”的权重?

    我是 Keras 新手 我正在尝试获取 Keras 中的权重 我知道如何在 Python 中的 Tensorflow 中执行此操作 Code data np array attributes int64 target np array la
  • MatMul 运算在张量流中如何工作?

    我注意到张量流中定义的 MatMul 运算 形状函数 Status MatMulShape shape inference InferenceContext c ShapeHandle a TF RETURN IF ERROR c gt W
  • 如何更改Mongo文档中嵌套字段的数据类型?

    我的 Mongo 结构如下 topProcesses cpuUtilizationPercent 0 0 processId 1 memoryUtilizationPercent 0 1 command init user root cpu
  • Firefox 中保存的密码发送空字段

    我在保存浏览器凭据时遇到问题 我第一次使用应用程序登录时 浏览器要求我保存字段 我按 确定 但是当我第二次登录并且浏览器使用保存的凭据填写表单字段时 我按登录 浏览器发送不带参数的请求 HTML div div
  • 如何使用所有处理器在 MPI 中发送/接收

    该程序使用 C Lagrange 和 MPI 编写 我是 MPI 新手 想要使用所有处理器进行一些计算 包括进程 0 为了学习这个概念 我编写了以下简单程序 但是这个程序在接收到进程0的输入后挂在底部 并且不会将结果发送回进程0 inclu
  • 通知图标在通知托盘上为白色

    我的通知托盘上的应用程序图标在 Android 5 上变成白色 我见过这个Android 5 Lollipop 中通知栏图标变白 https stackoverflow com questions 28387602 notification
  • 如何在 Windows 窗体应用程序中创建 Alt 快捷方式?

    我想为 Windows 窗体应用程序中的某些控件创建键盘快捷键 Example 注意带下划线的 F E V P B I have a label and a textbox control I d like to associate tha
  • 可以检测页面抓取吗?

    所以我刚刚创建了一个为我执行页面抓取的应用程序 并运行它 效果很好 我想知道是否有人能够弄清楚代码正在被页面抓取 无论他们是否为此目的编写了代码 我用java编写了代码 它几乎只是检查一行html代码 我想在向该程序添加更多代码之前我应该
  • CGContextClipToMask 返回空白图像

    我是石英新手 我有 2 个图像 一个背景和一个带有剪切形状的蒙版 我想将其放置在背景上以剪切出一部分 生成的图像应该是切口的形状 这是我的面具 中间的形状是 0 alpha 这是我的代码 UIView canvas sender super
  • 稍后发送电子邮件

    我想知道是否 v1 0 me sendMail具有延迟发送电子邮件的能力 在 Outlook 客户端中 您可以指定希望在稍后的日期和时间发送电子邮件 我四处探听 看看是否有一个属性可以在消息对象上设置来指示这一点 有人找到办法让它工作吗 当
  • iOS 在 UIWebView 表单输入中使用 UIKeyboardTypeDecimalPad

    我想用 显示小数点 在基于 cordova 的应用程序中本机应用程序使用的左上角 我见过很多使用私有 API 等的线程 但我想要一个可以用于应用程序商店提交的解决方案 任何帮助表示赞赏 我已经尝试过一些东西 this https stack
  • “范围错误:超出最大调用堆栈大小”为什么?

    如果我跑 Array apply null new Array 1000000 map Math random 在 Chrome 33 上 我得到 RangeError Maximum call stack size exceeded Wh
  • 如何在两个不同的核心数据模型之间共享实体

    我想知道如何在两个不同的核心数据模型之间共享实体 例如 我有一个 Universe 模型描述了 世界数据 以其 国家数据 另一方面 我有一个 人口 模型 它描述了 人类数据 以其 国家数据 我绝对希望将我的模型分开 提前致谢 你检查过了吗核
  • 在QML中动态创建ListModel

    当我需要在运行时创建任何 QML 组件时 我可以使用该指南 http qt project org doc qt 5 qtqml javascript dynamicobjectcreation html http qt project o
  • 输入字段值中的 HTML

    如何让 HTML 在输入字段的值中起作用 如果值中包含 HTML 它将显示为纯文本 有没有办法做这样的事情
  • 在 MATLAB 中嵌入 Python

    我正在尝试将 Python 2 6 嵌入到 MATLAB 7 12 中 我想嵌入一个用 C 编写的 mex 文件 这对于使用标量的小型简单示例来说效果很好 但是 如果以任何方式导入 Numpy 1 6 1 MATLAB 都会崩溃 我说无论如