错误:''无法将'uint8 * {aka unsigned int *}'转换为'const emxArray_uint8_T''?'?

时间:2018-05-04 11:19:12

标签: c++ image matlab mex matlab-coder

我编写了一个matlab函数来计算图像“ent=entropoy(image)”的熵,并由matlab编码器将其转换为c ++函数。

我在c++文件中进行一些计算,然后尝试将所有c ++代码转换为matlab函数。

我收到了

  

错误:'无法将'uint8 * {aka unsigned int *}'转换为'const   emxArray_uint8_T *'

在熵函数中

如何在mex函数中声明'从matlab'输入的图像并在熵函数中正确使用它?

1 个答案:

答案 0 :(得分:1)

要创建emxArray_uint8_T,您需要使用Coder为您生成的一些辅助函数,例如emxCreate_uint8_T

MATLAB Coder生成的emxArray_*_T类型是用于在生成的代码中存储动态分配数据的结构。它们包含数据指针,大小向量和其他元数据来管理动态分配。

在MATLAB R2015a及更新版本中,在main.c目录下的生成代码中查找文件main.hexamples。这些将为您提供示例C或C ++主函数,向您展示如何正确构造输入并调用生成的代码。

答案:

https://stackoverflow.com/a/24271438/3297440

还详细介绍了使用生成的emxArray类型,并提供了MATLAB Coder文档的链接。