ошибка: '' не удалось преобразовать 'uint8 * {aka unsigned int *}' в 'const emxArray_uint8_T *'? '? - PullRequest
0 голосов
/ 04 мая 2018

Я написал функцию matlab для вычисления энтропии изображения "ent=entropoy(image)" и преобразования ее в функцию c ++ с помощью matlab кодера.

Я делаю некоторые вычисления в ent в c++ файле, затем пытаюсь преобразовать весь код C ++ в функцию Matlab.

Я получил

ошибка: «невозможно преобразовать» uint8 * {aka unsigned int *} 'в' const emxArray_uint8_T *

в функции энтропии

Как объявить изображение, «которое вводится из matlab» в функцию mex, и правильно использовать его в функции энтропии?

1 Ответ

0 голосов
/ 04 мая 2018

Чтобы создать emxArray_uint8_T, вам нужно использовать некоторые вспомогательные функции, которые Coder генерирует для вас, например emxCreate_uint8_T.

Сгенерированные типы emxArray_*_T из MATLAB Coder - это структуры, используемые для хранения динамически распределенных данных в сгенерированном коде. Они содержат указатель данных, вектор размера и другие метаданные для управления динамическим размещением.

В MATLAB R2015a и новее ищите файлы main.c и main.h в сгенерированном коде в каталоге examples. Они дадут вам пример основной функции C или C ++, которая покажет вам, как правильно создавать входные данные и вызывать сгенерированный код.

Ответ:

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

также более подробно описывает использование сгенерированных типов emxArray и дает ссылки на документацию MATLAB Coder.

...