Съдържание:
- Стъпка 1: Кодът
- Стъпка 2: Това е кодът, НЕ КОПИРАЙТЕ И ПАСТЕЙТЕ
- Стъпка 3: Ако по някаква причина не се компилира
Видео: Създаване на Matlab MEX файл: 3 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:55
Инструкции как да интегрирате компилиран C код с Matlab. MEX означава MATLAB Executable. MEX-файловете са динамично свързани подпрограми, произведени от C или Fortran изходен код, които при компилиране могат да се изпълняват от MATLAB по същия начин като M-файловете MATLAB или вградени функции. Външните интерфейсни функции осигуряват функционалност за прехвърляне на данни между MEX-файлове и MATLAB, както и възможност за извикване на MATLAB функции от C или Fortran код. Тук ще ви покажа всичко необходимо, за да направите бързо полезен mex файл. Какво ще нужда от: = текстов редактор = matlab 6.1 или по -нова версия (по -ранните версии могат да правят и mex файлове, но малко по -различен формат) = matlab има собствен компилатор на c, който идва с него, но използвах визуален компилатор на c ++, защото го имах.
Стъпка 1: Кодът
изтеглете прикачения от мен файл: mextest1p0.cpp
cpp означава c ++ ……… Това прави кодът: ……… отнема номер, който му изпращате от командния ред на matlab. Той отпечатва "здравей свят" в matlab, връща два аргумента в matlab, масив с два елемента и низ, първият елемент от върнатия масив от числа е 1 + числото, което сте му изпратили, вторият елемент от върнатия масив от числа е 2 + номерът, който сте му изпратили ………. Ето как да го приложите: ………… запишете файла на компютъра си Стартирайте MATLAB навигирайте в MATLAB до директорията, където е файлът, след това следвайте инструкциите за компилиране и изпълнение в горната част на.cpp файл. Не мога да напиша тези инструкции тук, защото инструкциите автоматично редактират командите и ги карат да се показват неправилно. На снимката по -долу можете да видите кода да работи. Не се притеснявайте за „предупреждението за командния ред“, изглежда не влияе на нищо. Забележете от лявата страна, текущата директория съдържа.cpp файла. Вдясно можете да ме видите как компилирам кода и след това го изпълнявам от matlab. Прочетете файла във вашия текстов редактор (например бележник в Windows), той е много добре документиран и обяснителен, ще можете да правите почти всичко, от което се нуждаете, като следвате конвенциите в кода (т.е. копирате и поставяте и правите леки изменения) ############################################### ######################### …….. ЗАБЕЛЕЖКА …….. поради някакво досадно автоматично редактиране, което правят инструкциите, кодът, както се вижда на следващата страница НЯМА ДА РАБОТИ, ТРЯБВА ДА ИЗТЕГЛИТЕ ФАЙЛА, който прикачих, вместо да копирате и поставите това. ################################################# #######################
Стъпка 2: Това е кодът, НЕ КОПИРАЙТЕ И ПАСТЕЙТЕ
################################################# ###################### …….. ЗАБЕЛЕЖКА ……..заради някои досадни автоматични редакции, които правят инструкциите, кодът, както се вижда на тази страница, НЯМА РАБОТЕТЕ, ТРЯБВА ДА ИЗТЕГЛЕТЕ ФАЙЛА, който прикачих, вместо да копирате и поставите това. ############################## ######################################## // Това е написано на c ++ от leevonk // това е код за melax файл на matlab // кодът ще приеме една цифрова стойност и ще изведе две числови стойности // двете изходни числа се изчисляват от входящия номер // кодът също ще изведе низова стойност // кодът ще също отпечатайте "здравей свят" #включете "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 [някакъв брой] */}
Стъпка 3: Ако по някаква причина не се компилира
Ако по някаква причина не се компилира (би трябвало, работи добре на компютъра ми) вижда тези ресурси, от тях научих. Те имат малки проблеми (използването на някаква стара, нефункционална граматика и т.н.), но ако вървите напред -назад между двете, трябва да можете да съберете заедно нещо, което работи. Документация/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/
Препоръчано:
Arduino като ISP -- Записване на шестнадесетичен файл в AVR -- Предпазител в AVR -- Arduino като програмист: 10 стъпки
Arduino като ISP || Записване на шестнадесетичен файл в AVR || Предпазител в AVR || Arduino като програмист: ……………………… Моля АБОНИРАЙТЕ се за канала ми в YouTube за още видеоклипове …….. Тази статия е всичко за arduino като isp. Ако искате да качите шестнадесетичен файл или ако искате да настроите предпазителя си в AVR, няма нужда да купувате програмист, можете да направите
Как да направите Exe файл: 3 стъпки
Как да направите Exe файл: Здравейте, ще ви науча как да направите изпълним файл. (известен също като.exe файлове) Това изобщо не изисква кодиране. Просто фалшифицирайте инсталатора. Тук ще бъдат предоставени връзки: InstallForge Така че, без да се замислям, ще ви науча как да направите a.exe файл
(2) Започване на създаване на игра - Създаване на начален екран в Unity3D: 9 стъпки
(2) Започване на създаване на игра - Създаване на пръскащ екран в Unity3D: В тази инструкция ще научите как да направите прост начален екран в Unity3D. Първо, ще отворим Unity
Създаване на Bluetooth адаптер Pt.2 (Създаване на съвместим високоговорител): 16 стъпки
Изработка на Bluetooth адаптер Pt.2 (Създаване на съвместим високоговорител): В тази инструкция ще ви покажа как да използвам моя Bluetooth адаптер, за да направя стария високоговорител съвместим с Bluetooth.*Ако не сте прочели първата ми инструкция за „Изработване Bluetooth адаптер " Предлагам ви да го направите, преди да продължите
Преобразувайте (само за) всеки медиен файл в (почти за) всеки друг медиен файл безплатно!: 4 стъпки
Преобразувайте (само за) всеки медиен файл в (почти за) всеки друг медиен файл безплатно !: Първите ми инструкции, наздраве! Както и да е, бях в Google и търсех безплатна програма, която да преобразува файловете ми Youtube.flv във формат, който е по -универсален, като.wmv или.mov. Търсих в безброй форуми и уебсайтове и след това намерих програма, наречена