Оглавление:
- Шаг 1: Код
- Шаг 2. Это код, НЕ КОПИРУЙТЕ И НЕ ВСТАВЛЯЙТЕ
- Шаг 3. Если по какой-либо причине он не компилируется
Видео: Создание MEX-файла Matlab: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:54
Инструкции по интеграции скомпилированного кода 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
Рекомендуемые:
Создание ROM Macintosh Plus: 3 шага (с изображениями)
Создание ПЗУ для Macintosh Plus: это руководство проведет вас через процесс «копирования». Образы EPROM из ваших микросхем ПЗУ Macintosh Plus и (или) "прожиг" изображения к новым фишкам. В основном процесс будет выполняться дважды, чтобы создать оба & quot
Создание собственной фотоэлектрической системы 5 В: 4 шага (с изображениями)
Создание собственной фотоэлектрической системы 5 В: в ней используется понижающий преобразователь в качестве выхода 5 В для зарядки аккумулятора (Li Po / Li-ion). И повышающий преобразователь для батареи 3,7 В на выход 5 В USB для устройств, требующих 5 В. Подобно оригинальной системе, которая использует свинцово-кислотную батарею в качестве заряда для хранения энергии, e
Создание скретч-игр (FNaF): 4 шага
Создание Scratch Games (FNaF): I, eevee1tree. Покажу ВАМ, как сделать игру FNaF на Царапине !!! Если вы не знаете, Scratch, это веб-сайт программирования, где вы можете создавать игры, анимацию, искусство, и с этим мы можем создавать игры, подобные нашей сегодняшней теме, в игре FNaF
Создание адаптера Bluetooth, часть 2 (создание совместимого динамика): 16 шагов
Создание адаптера Bluetooth, часть 2 (Создание совместимого динамика): в этой инструкции я покажу вам, как использовать мой адаптер Bluetooth, чтобы сделать старый динамик совместимым с Bluetooth. * Если вы не читали мое первое руководство по " Изготовлению адаптер Bluetooth " Я предлагаю вам сделать это, прежде чем продолжить.C
Создание маленьких роботов: создание роботов Micro-Sumo на один кубический дюйм и меньше: 5 шагов (с изображениями)
Создание маленьких роботов: создание роботов Micro-Sumo на один кубический дюйм и меньше: вот некоторые подробности о создании крошечных роботов и схем. В этом руководстве также будут рассмотрены некоторые основные советы и методы, которые могут быть полезны при создании роботов любого размера. Для меня одна из самых сложных задач в электронике - это увидеть, насколько малы