Mundarija:

Matlab MEX faylini yaratish: 3 qadam
Matlab MEX faylini yaratish: 3 qadam

Video: Matlab MEX faylini yaratish: 3 qadam

Video: Matlab MEX faylini yaratish: 3 qadam
Video: Driverlarni o'rnatish, Драйверни урнатиш, Drayverlarni o'rnatish, drayver haqida, drayver nima 2024, Noyabr
Anonim
Matlab MEX faylini yaratish
Matlab MEX faylini yaratish

Matlab bilan C kodini birlashtirish bo'yicha ko'rsatmalar. MEX MATLAB Executable degan ma'noni anglatadi. MEX-fayllar C yoki Fortran manba kodlaridan ishlab chiqarilgan dinamik ravishda bog'langan kichik dasturlar bo'lib, ularni kompilyatsiya qilishda MATLAB ichidan MATLAB M-fayllari yoki o'rnatilgan funksiyalar kabi ishga tushirish mumkin. Tashqi interfeys funktsiyalari MEX-fayllar va MATLAB o'rtasida ma'lumotlarni uzatish va MATLAB funktsiyalariga C yoki Fortran kodlaridan qo'ng'iroq qilish imkoniyatini beradi, bu erda men sizga kerakli mex faylini tezda yaratish uchun kerak bo'lgan hamma narsani ko'rsataman. kerak: = matn muharriri = matlab 6.1 yoki undan yuqori (oldingi versiyalar mex fayllarini ham bajarishi mumkin, lekin biroz boshqacha formatda) = matlabda o'z kompilyatori bor, lekin men vizual c ++ kompilyatoridan foydalandim.

1 -qadam: Kod

Kodeks
Kodeks

biriktirilgan faylni yuklab oling: mextest1p0.cpp

cpp c ++ degan ma'noni anglatadi ……… Kod shunday qiladi: ……… uni matlab buyruq satridan yuboradigan raqam kerak. Matlabda "Salom dunyo" ni chop etadi, matlabga ikkita argumentni qaytaradi, ikkita elementli raqamlar qatori va satrda qaytarilgan sonlar qatorining birinchi elementi 1 + siz yuborgan raqam, qaytarilgan sonlar qatorining ikkinchi elementi 2 + Siz yuborgan raqam ………. Ushbu tarzda amalga oshiriladi: ………… faylni kompyuteringizga saqlang matlabni ishga tushiring matlabda fayl joylashgan katalogga o'ting, so'ngra yuqoridagi kompilyatsiya va bajarish ko'rsatmalariga amal qiling..cpp fayli. Men bu ko'rsatmalarni bu erda yozolmayman, chunki ko'rsatmalari buyruqlarni avtomatik ravishda tahrir qiladi va noto'g'ri ko'rinadi. Quyidagi rasmda siz ishlayotgan kodni ko'rishingiz mumkin. "Buyruqlar satri haqida ogohlantirish" haqida qayg'urmang, bu hech narsaga ta'sir qilmaydi. E'tibor bering, chap tomonda joriy katalogda.cpp fayl mavjud. O'ng tomonda siz meni kodni tuzganimni va keyin matlabdan bajarayotganimni ko'rasiz. Faylni matn tahrirlovchisidan o'qing (masalan, derazadagi bloknot), u juda yaxshi hujjatlashtirilgan va o'z -o'zidan tushunarli, siz koddagi qoidalarga amal qilib (masalan, nusxa ko'chirish, joylashtirish va yasash) kerakli hamma narsani qila olasiz. ozgina o'zgartirishlar) ################################################################################################### ########################## …….. QAYD …….. ko'rsatma beradigan ba'zi zerikarli avtomatik tahrir tufayli, Keyingi sahifa ishlamaydi, siz nusxalash va joylashtirish o'rniga men biriktirgan faylni yuklab olishingiz kerak. ########################################################################################### #######################

2 -qadam: bu kod, nusxa ko'chirmang va joylashtirmang

Bu kod, nusxa ko'chirmang va joylashtirmang
Bu kod, nusxa ko'chirmang va joylashtirmang

########################################################################################### ###################### …….. QAYD ………. ko'rsatma beradigan ba'zi zerikarli avtomatik tahrirlar tufayli, bu sahifada ko'rinadigan kod YO'Q. ISHLAYIN, buni nusxalash va joylashtirish o'rniga men biriktirgan faylni yuklab olishingiz kerak. ################################ ########################################## Bu c ++ da leevonk tomonidan yozilgan // bu matlab mex faylining kodi // kod bitta raqamli qiymatni oladi va ikkita raqamli qiymatni chiqaradi // ikkita chiqish raqami kirish raqamidan hisoblanadi // kod shuningdek mag'lubiyat qiymatini chiqaradi // kod shuningdek, "salom dunyo" ni chop eting#"mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############## ###################################### "salom dunyo" ni chop etish-### ######### // ###################################################################### ### mexPrintf ("Salom dunyo"); // ###################################### ##### // #########-Matlabdan narsalar oling-######### // ################ ########################### * kiruvchi qiymatlarni ushlab turish uchun qator o'zgaruvchisini e'lon qilish*/double* InValues;/* matlabdan yuborilgan qiymatlarni olish*/InValues = mxGetPr (prhs [0]);/* matlabdan yuborilgan bu qiymatlarni ishlatish uchun InValues qiling. [0], InValue [1], va hokazo, qancha qiymat borligiga qarab. InValues quyida ishlatiladi */// ######################################## ## // ########-raqamlar qatorini qaytarish-############################## ####################### * * matlab -ga yuboriladigan qatorni e'lon qilish (* uni massiv qiladi) */double * OutValues;/ * Qaytish argumentini, qaytariladigan massivning birinchi uyasi uchun 1x2 (1 qator 2 ustunli) Matritsa yaratish/ajratish (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Qaytish argumentiga ko'rsatgich oling */OutValues = mxGetPr (plhs [0]); / * Qaytish qatorining birinchi uyasida joylashgan OutValues qiymatlarini belgilang, bu erda biz InValues yordamida OutValues */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ######################################### // ###########-Stringni qaytarish-############# // ################# ###########################** string o'zgaruvchisini matlab*/char* str ga yuborilishini e'lon qilish;/* ga qiymat tayinlash string */str = "byebye";/ *mag'lubiyatni ikkinchi qatorga qaytaruvchi qatorga qo'ying (plhs [1]) */plhs [1] = mxCreateString (str); // ############ #############################################-qaytish boshqa narsalar-############################################ ############ * * ko'proq narsalarni qaytarish uchun yuqoridagi umumiy qoidalarga amal qiling, lekin boshqa plhs uyalariga joylashtiring, plhs [somenumber] */}

3 -qadam: Agar biron sababga ko'ra kompilyatsiya qilinmasa

Agar biron sababga ko'ra kompilyatsiya qilmasa
Agar biron sababga ko'ra kompilyatsiya qilmasa

Agar biron sababga ko'ra u kompilyatsiya qilmasa (u mening kompyuterimda yaxshi ishlashi kerak bo'lsa), bu manbalarni ko'rsam, ular men o'rgandim. Ularda ozgina nosozliklar bor (eski, ishlamaydigan grammatika va boshqalarni ishlating), lekin agar siz ikkalasi o'rtasida oldinga va orqaga o'tsangiz, siz ishlaydigan narsani birlashtira olasiz. Hujjatlar/Hisoblash/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Tavsiya: