Агуулгын хүснэгт:

Matlab MEX файл хийх: 3 алхам
Matlab MEX файл хийх: 3 алхам

Видео: Matlab MEX файл хийх: 3 алхам

Видео: Matlab MEX файл хийх: 3 алхам
Видео: Matlab для электронщика - Урок 6 - Использование C / C++ кода, MEX файлы 2024, Арваннэгдүгээр
Anonim
Matlab MEX файл хийх
Matlab MEX файл хийх

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

Алхам 1: Код

Код
Код

хавсаргасан файлыг татаж авах: mextest1p0.cpp

cpp гэдэг нь c ++ гэсэн утгыг илэрхийлдэг. ……… Код нь үүнийг хийдэг: ……… үүнийг matlab командын мөрөөс илгээсэн дугаар шаардлагатай болно. Энэ нь "Сайн байна уу ертөнц" -ийг matlab дээр хэвлэдэг бөгөөд энэ нь matlab руу хоёр аргумент, хоёр элементийн дугаарын массив, мөрийг буцаана. Таны илгээсэн дугаар ………. Үүнийг хэрхэн хэрэгжүүлэх вэ: ………… файлыг компьютер дээрээ хадгална уу matlab эхлүүлээрэй matlab дотор файл байгаа директор руу очоод файлын дээд хэсэгт байгаа хөрвүүлэлт, гүйцэтгэх зааврыг дагана уу..cpp файл. Би зааварчилгааг өгч болох тул тушаалуудыг автоматаар засварлаж, буруу харагдуулдаг тул би эдгээр зааврыг энд бичиж чадахгүй. Доорх зурган дээр код хэрхэн ажиллаж байгааг харж болно. "Тушаалын мөрийн анхааруулга" талаар санаа зовох хэрэггүй, энэ нь ямар ч нөлөө үзүүлэхгүй юм шиг байна. Зүүн талд байгаа мэдэгдэлд одоогийн лавлах нь.cpp файлыг агуулдаг. Баруун талд та намайг кодыг эмхэтгэж, дараа нь matlab дээрээс ажиллуулж байгааг харж болно. Текст засварлагчийн файлыг уншина уу (жишээ нь цонхны дэвтэр гэх мэт), энэ нь маш сайн баримтжуулагдсан бөгөөд өөрөө тайлбартай тул та кодын дүрмийг дагаж мөрдөх замаар өөрт хэрэгтэй бүх зүйлийг хийх боломжтой болно (өөрөөр хэлбэл хуулж буулгах, хийх) бага зэргийн өөрчлөлт) ###################################################### ########################### …….. ТАЙЛБАР …….. зааварчилгаа өгдөг автомат залруулгаас болж код дээр харагдаж байна. Дараагийн хуудас ажиллахгүй, та үүнийг хуулж буулгахын оронд миний хавсаргасан файлаа татаж авах хэрэгтэй. ###################################################### #########################

Алхам 2: Энэ бол код, ХУУЛАХ, БҮТЭЭХГҮЙ

Энэ бол код, ХУУЛАХ, БҮТЭЭХГҮЙ
Энэ бол код, ХУУЛАХ, БҮТЭЭХГҮЙ

###################################################### ####################### …….. ТАЙЛБАР …….. зааварчилгаа өгдөг зарим залхмаар автомат засварын улмаас энэ хуудсан дээр үзүүлсэн код БИШ АЖЛААРАЙ, та үүнийг хуулж, буулгахын оронд миний хавсаргасан файлаа татаж авах хэрэгтэй. ################################## ############################################### Үүнийг c ++ хэл дээр leevonk бичсэн // Энэ нь matlab mex файлын код юм // код нь нэг тооны утгыг авч, хоёр тооны утгыг гаргана // хоёр гаралтын тоог оролтын дугаараас тооцоолно // код нь мөн мөрийн утгыг гаргана // код нь мөн "Сайн уу ертөнц" гэж хэвлээрэй#mex.h "void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############## #########################################-"Сайн уу ертөнц" хэвлэх-### ########## // ########################################## ### mexPrintf ("Сайн уу ертөнц"); // ######################################## ##### // #########-Matlab-аас юм авах-########################### ############################# * ирж буй утгыг хадгалахын тулд массивын хувьсагчийг зарлах*/double* InValues;/* matlab -аас илгээсэн утгыг авах*/InValues = mxGetPr (prhs [0]); [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; // ################################################ ############-String буцаах-################################## ############################** string хувьсагчийг matlab*/char* str руу илгээхийг зарлах;/* string */str = "byebye";/ *мөрийг буцах массивуудад оруулах хоёр дахь үүр (plhs [1]) */plhs [1] = mxCreateString (str); // ########## ##################################################-буцах илүү их зүйл-################################################ ############ * * Илүү их зүйлийг буцааж өгөхийн тулд дээрх ерөнхий дүрмийг дагаж мөрдөх боловч бусад plhs үүр, plhs [somenumber] */} руу оруулна уу.

Алхам 3: Хэрэв ямар ч шалтгаанаар эмхэтгэхгүй бол

Хэрэв ямар ч шалтгаанаар эмхэтгэхгүй бол
Хэрэв ямар ч шалтгаанаар эмхэтгэхгүй бол

Хэрэв ямар ч шалтгаанаар энэ нь эмхэтгэгдээгүй бол (энэ нь миний компьютер дээр сайн ажиллах ёстой) эдгээр нөөцийг олж харсан бол тэд миний сурч мэдсэн газар юм. Тэдэнд бага зэрэг доголдол байдаг (зарим хуучин, ажиллахгүй дүрэм гэх мэт), гэхдээ хэрэв та хоёрын хооронд нааш цааш явж байвал та ямар нэгэн зүйлийг хооронд нь холбох боломжтой байх ёстой. Баримт бичиг/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Зөвлөмж болгож буй: