首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用mex后,mex文件错误常量输入prhs更改

调用mex后,mex文件错误常量输入prhs更改
EN

Stack Overflow用户
提问于 2013-01-04 16:53:32
回答 1查看 235关注 0票数 1

我正在编写一个Matlab代码,它获取视频帧,将它们放入一个单元数组中,例如

代码语言:javascript
复制
frames{fr} = read(videoObj, fr);

对于示例视频,我检查了frames单元格,它包含84帧( video有84帧),并且所有单元格都充满了图像。

我有一个mex文件,作为标准,它是这样的

代码语言:javascript
复制
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

当我读到mex文件创建的属性时,他们说输入prhsconst mxArray,所以无论mex代码中发生了什么,输入都不会改变。我将matlab的frames单元格数组作为mex文件的输入,因为prhs[0]是frames单元格,并且我做了一些处理(我发誓我不会更改我在prhs[0]中获取的内容)。但是,当我调试Matlab代码时,我发现在调用mex文件(并将帧作为输入提供给mex文件)之后,my frames单元格的最后一个单元格似乎被删除了。当我查看第84个单元格时,它是[],有时它是一个随机数,例如8或4。我不明白当我调用mex文件时,框架单元格的最后一列是如何或为什么消失的。

你可能认为我的Matlab代码中有一个错误,但当我调试时,我在mex处理之前查看了帧,它有84个单元格,最后一个单元格是一个图像,但就在我调用mex之后,frames仍然是84个单元格,但最后一个单元格是[]:empty。

如果有人能帮助我,我将不胜感激,为什么会发生这样的事情呢?const mxArray不意味着“输入不会在mex中改变”吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-04 17:48:16

  1. const mxArray* prhs[]仅包含指向mxArray[]指针。事实证明,可以(尽管风险很高的)更改mexFunction.
  2. Another中输入参数的值。值得一提的是,尽管matlab中的数组和单元格是从1..n索引的,但在C/C++ (尤其是mex文件)中,元素是从,...,n-1索引的。因此,在调试器中看到cell[84]为空(或其中有一个随机值)的事实是因为在单元格array!

的末尾访问了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14153906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档