Передайте строки в файле MEX на C

В этом примере показано, как передать строки в MEX-функцию, созданную с помощью API на C Matrix. Пример revord.c принимает вектор символов и возвращает символы в обратном порядке.

Анализ кода С

Чтобы увидеть код, откройте revord.c в MATLAB® Редактор.

Функция шлюза, mexFunction, создает строку C из переменного входа, prhs[0]. Путем выделения переменных типа mxArray из вычислительной стандартной подпрограммы, revord, вы можете избежать существенных изменений в ваших исходных C и Кода С++.

Преобразуйте входной параметр prhs[0] в строку C-стиля input_buf.

input_buf = mxArrayToString(prhs[0]);

Выделите память для выходного аргумента, output_buf, строка в стиле С.

output_buf = mxCalloc(buflen, sizeof(char));

Размер выходного аргумента эквивалентен размеру входного параметра.

Вызовите вычислительную стандартную подпрограмму, revord.

revord(input_buf, buflen, output_buf);

Преобразуйте выход, output_buf, в mxArray и назначить plhs[0].

plhs[0] = mxCreateString(output_buf);

Не освобождайте память для этой переменной, потому что она является выходным аргументом.

mxArrayToString function, используется для создания временной input_buf переменная, выделяет память; использовать mxFree функция для освобождения памяти.

mxFree(input_buf);

Пример сборки и тестирования

Выполните следующие команды из командной строки MATLAB.

Создайте пример.

mex -v revord.c

Вызовите функцию.

x = 'hello world';
y = revord(x)
y =
dlrow olleh

Похожие темы