Оглавление:

Создание MEX-файла Matlab: 3 шага
Создание MEX-файла Matlab: 3 шага

Видео: Создание MEX-файла Matlab: 3 шага

Видео: Создание MEX-файла Matlab: 3 шага
Видео: Подключение С кода к MATLAB посредством MEX-функций 2024, Июль
Anonim
Создание файла Matlab MEX
Создание файла Matlab MEX

Инструкции по интеграции скомпилированного кода C с Matlab. MEX означает MATLAB Executable. MEX-файлы - это динамически связанные подпрограммы, созданные из исходного кода C или Fortran, которые при компиляции могут запускаться изнутри MATLAB так же, как M-файлы MATLAB или встроенные функции. Функции внешнего интерфейса обеспечивают функциональность для передачи данных между MEX-файлами и MATLAB, а также возможность вызова функций MATLAB из кода C или Fortran. Здесь я покажу вам все, что вам нужно, чтобы быстро создать полезный mex-файл. Что вы будете делать. need: = текстовый редактор = matlab 6.1 или выше (более ранние версии также могут работать с файлами mex, но немного в другом формате) = у matlab есть собственный компилятор c, который идет с ним, но я использовал визуальный компилятор C ++, потому что он у меня был.

Шаг 1: Код

Код
Код

скачать прикрепленный файл: mextest1p0.cpp

cpp означает c ++ ……… Вот что делает код: ……… требуется номер, который вы отправляете из командной строки Matlab. Он печатает "hello world" в matlab, он возвращает два аргумента в matlab, массив из двух элементов и строку, первый элемент возвращенного массива чисел равен 1 + число, которое вы ему отправили, второй элемент возвращенного массива чисел - 2 + номер, который вы ему отправили ………. Вот как это реализовать: ………… сохраните файл на свой компьютер, запустите Matlab, перейдите в Matlab в каталог, где находится файл, затем следуйте инструкциям по компиляции и выполнению в верхней части.cpp файл. Я не могу написать эти инструкции здесь, потому что инструктируемые файлы автоматически редактируют команды и заставляют их отображаться некорректно. На картинке ниже вы можете увидеть, как код работает. Не беспокойтесь о «предупреждении командной строки», оно ни на что не влияет. Обратите внимание на то, что в левой части текущего каталога находится файл.cpp. Справа вы можете увидеть, как я компилирую код, а затем выполняю его из Matlab. Прочтите файл в текстовом редакторе (например, в блокноте в Windows), он очень хорошо документирован и не требует пояснений, вы сможете делать почти все, что вам нужно, следуя соглашениям в коде (т.е. копируя и вставляя его и делая небольшие модификации) ############################################ ####################### …….. ПРИМЕЧАНИЕ …….. из-за некоторого раздражающего автоматического редактирования, которое выполняет инструкции, код, как видно на следующая страница НЕ БУДЕТ РАБОТАТЬ, вам НЕОБХОДИМО ЗАГРУЗИТЬ ФАЙЛ, который я прикрепил, вместо того, чтобы копировать и вставлять его. ########################################################################### #####################

Шаг 2. Это код, НЕ КОПИРУЙТЕ И НЕ ВСТАВЛЯЙТЕ

Это код, НЕ КОПИРУЙТЕ И НЕ ВСТАВЛЯЙТЕ
Это код, НЕ КОПИРУЙТЕ И НЕ ВСТАВЛЯЙТЕ

########################################################################### #################### …….. ПРИМЕЧАНИЕ ……..из-за некоторого раздражающего автоматического редактирования, которое выполняет инструкции, код, показанный на этой странице, НЕ БУДЕТ РАБОТА, вам НЕОБХОДИМО ЗАГРУЗИТЬ ФАЙЛ, который я прикрепил, вместо того, чтобы копировать и вставлять его. ############################### #################################### // Это было написано на c ++ leevonk // это код для файла matlab mex // код примет одно числовое значение и выведет два числовых значения // два выходных числа вычисляются из входного числа // код также будет выводить строковое значение // код будет также напечатайте "hello world" #include "mex.h" void mexFunction (int nlhs, mxArray * plhs , int nrhs, mxArray * prhs ) {// ############# ############################ // ####### - выведите «hello world» - ### ######### // ##################################### ### mexPrintf («Привет, мир»); // ################################### ##### // ######## - Получение материалов из Matlab - ######### // ################ ########################## / * объявить переменную массива для хранения входящих значений * / double * InValues; / * получить значения, отправленные из matlab * / InValues = mxGetPr (prhs [0]); / * чтобы использовать эти значения, которые были отправлены из matlab, выполните InValues [0], InValue [1] и т. Д. В зависимости от количества значений. InValues будут использоваться ниже * /// ################################################################### ## // ######## - Возврат числового массива - ######### // ################### ###################### / * объявляем массив, который будет отправлен в matlab (* делает его массивом) * / double * OutValues; / * Создать / выделить возвращаемый аргумент, матрицу 1x2 (1 строка 2 столбца) для первого слота возвращаемого массива (plhs [0]) * / plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Получить указатель на возвращаемый аргумент * / OutValues = mxGetPr (plhs [0]); / * присваиваем значения OutValues, которые будут находиться в первом слоте возвращаемого массива, здесь мы используем InValues для вычисления OutValues * / OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ######################################### // ########### - Вернуть строку - ############# // ################# ######################### / * объявляем строковую переменную для отправки в matlab * / char * str; / * присваиваем значение string * / str = "byebye"; / * помещаем строку во второй слот возвращаемых массивов (plhs [1]) * / plhs [1] = mxCreateString (str); // ########## ##################################//###########--возвращение больше вещей--############//################################ ############ / * для возврата дополнительных материалов, следуйте общим правилам выше, но помещайте данные в другие слоты plhs, plhs [somenumber] * /}

Шаг 3. Если по какой-либо причине он не компилируется

Если по какой-либо причине он не компилируется
Если по какой-либо причине он не компилируется

Если по какой-либо причине он не компилируется (он должен нормально работать на моем компьютере), я вижу эти ресурсы, значит, я узнал о них. У них есть небольшие сбои (использование какой-то старой нефункциональной грамматики и т. Д.), Но если вы будете переходить туда и обратно между ними, вы сможете сколотить что-то, что работает. Http://web.ccr.jussieu.fr/ccr/ Документация / Calcul / matlab5v11 / docs / 00009 / 009a1.htm

Рекомендуемые: