来自库编译器的 Python 包:Matlab 运行时错误:索引超出矩阵维度

Posted

技术标签:

【中文标题】来自库编译器的 Python 包:Matlab 运行时错误:索引超出矩阵维度【英文标题】:Python Package from Library Compiler: Matlab Runtime Error: Index exceeds matrix dimensions 【发布时间】:2018-09-03 19:38:12 【问题描述】:

我在 Matlab 中有一个函数。我从中创建了一个 python 包以在我的 python 代码中使用。到现在为止还挺好。当我在 python 中调用函数时,我收到了消息:

MatlabRuntimeError:评估函数结果时发生错误。细节: 文件 C:\Users\Roberto\AppData\Local\Temp\Guilherme\mcrCache9.0.1\classi4\classificado\contagemWGS84.m,第 59 行,在 contagemWGS84 索引超出矩阵维度。

当我转到代码的第 59 行时:

plantas(1) = dados1(1);  %line 59
plantas(1).Diameter = ...
    2*sqrt((dados1(1).Area*res^2)/pi) + 2*step_erode(1)*res;
for i=1:length(dados)
...
...
...

其中 dados 是 8x1 结构,dados1 是 99x1 结构,dados1(1) 是 1x1 结构矩阵和数字字段。当我在matlab中直接运行完全相同的代码时,它运行没有问题。当我在 python 中运行时,我得到了这个错误。

我正在使用 python 2.7 和 Matlab R2016a。 请帮忙。

【问题讨论】:

您的问题可能是对于维度为 n 的向量,索引在 Python 中从 0 - n-1 运行,在 Matlab 中从 1 - n 运行。 我使用了 matlab 应用程序选项卡中的库编译器,所以我认为它可以解决这个问题。如果我更改它,代码将无法从 matlab 中读取。 【参考方案1】:

Python(和大多数 numpy)数组是 zero 索引的,因此访问 1x1 矩阵的 memeber[1][1] 需要 second 列>第二行。

【讨论】:

以上是关于来自库编译器的 Python 包:Matlab 运行时错误:索引超出矩阵维度的主要内容,如果未能解决你的问题,请参考以下文章

从 MATLAB Compiler 应用程序调用 python 时无法调用 python 库

MATLAB 生成的 Python 包与 Ubuntu 上的 PyQt5 冲突 - 可能的库问题

如何从不需要机器上的 Matlab 编译器运行时 (MCR) 的 matlab gui 生成可执行文件

在 Azure DevOps Git 存储库中使用来自 Azure Pipelines 的 Python 包版本标记 Git 存储库

无法运行使用“演示文稿”生成报告的已编译 Matlab 代码

如何在 karma 测试运行器中包含来自 webpack 的供应商捆绑包