Mündəricat:

Matlab MEX faylının hazırlanması: 3 addım
Matlab MEX faylının hazırlanması: 3 addım

Video: Matlab MEX faylının hazırlanması: 3 addım

Video: Matlab MEX faylının hazırlanması: 3 addım
Video: Əvəzləşmənin aparılması ilə bağlı rahat bir excel faylı 2024, Noyabr
Anonim
Matlab MEX faylının hazırlanması
Matlab MEX faylının hazırlanması

Tərtib edilmiş C kodunu Matlab ilə necə birləşdirmək barədə təlimatlar. MEX, MATLAB Executable deməkdir. MEX-faylları, C və ya Fortran mənbə kodundan hazırlanan dinamik olaraq əlaqələndirilən alt proqramlardır ki, tərtib edildikdə MATLAB M-faylları və ya quraşdırılmış funksiyalar kimi MATLAB-dan da işlədilə bilər. Xarici interfeys funksiyaları, MEX faylları ilə MATLAB arasında məlumat ötürmə funksiyasını və C və ya Fortran kodundan MATLAB funksiyalarına zəng etmə qabiliyyətini təmin edir. Burada faydalı bir mex faylı hazırlamaq üçün lazım olan hər şeyi sizə göstərəcəyəm. lazımdır: = mətn redaktoru = matlab 6.1 və ya daha yuxarı (əvvəlki versiyalar mex faylları da edə bilər amma bir az fərqli formatda) = matlabın öz c kompilyatoru var, amma məndə olduğu üçün vizual c ++ tərtibçisindən istifadə etdim.

Addım 1: Kod

Kod
Kod

əlavə etdiyim faylı yükləyin: mextest1p0.cpp

cpp c ++ deməkdir ……… Kodun etdiyi budur: ……… matlab əmr satırından göndərdiyiniz nömrə lazımdır. Matlabda "salam dünya" yazır, iki arqumenti matlaba qaytarır, iki elementli bir sıra və bir sətir, qaytarılmış nömrə dizisinin ilk elementi 1 + göndərdiyiniz nömrə, qaytarılmış nömrə dizisinin ikinci elementidir 2 + göndərdiyiniz nömrə ………. Bunu necə həyata keçirmək olar: ………… faylı kompüterinizə qeyd edin matlabı başlatın matlabda faylın yerləşdiyi qovluğa gedin və sonra faylın yuxarısındakı tərtib və icra təlimatlarına əməl edin..cpp faylı. Bu təlimatları bura yaza bilmərəm, çünki təlimatlar əmrləri avtomatik olaraq düzəldir və səhv görünür. Aşağıdakı şəkildə kodun işlədiyini görə bilərsiniz. "Komanda xətti xəbərdarlığı" ndan narahat olmayın, heç bir şeyə təsir etməyəcək. Sol tərəfdəki bildiriş, cari qovluqda.cpp faylı var. Sağda kodu tərtib etdiyimi və sonra matlabdan icra etdiyimi görə bilərsiniz. Mətn redaktorunuzdakı faylı oxuyun (məsələn, pəncərələrdəki notepad), çox yaxşı sənədləşdirilmişdir və öz -özünə izahlıdır, koddakı qaydalara riayət etməklə ehtiyacınız olan hər şeyi edə bilərsiniz (məsələn, kopyalayıb yapışdırıb yaradın. kiçik dəyişikliklər) ################################################### ########################### …….. QEYD …….. təlimatçıların etdiyi bəzi zəhlətökən avtomatik tənzimləmə səbəbiylə, kod Növbəti səhifə İŞLƏMƏYƏCƏK, bunu kopyalayıb yapışdırmaq əvəzinə əlavə etdiyim Dosyanı YÜKLƏMƏLİSİNİZ. #################################################### ########################

Addım 2: Bu Koddur, KOPYALAMAYIN VƏ YAĞLAMAQ

Bu Koddur, KOPYALAMAYIN VƏ YAPMAYIN
Bu Koddur, KOPYALAMAYIN VƏ YAPMAYIN

#################################################### ####################### …….. QEYD ………. göstəriş verilə bilən bəzi zəhlətökən avtomatik düzəlişlər səbəbindən bu səhifədə göründüyü kimi kod olmayacaq İŞLƏ, bunu kopyalayıb yapışdırmaq əvəzinə əlavə etdiyim faylı yükləməlisən. ################################ ########################################### Bu c ++ dilində leevonk tərəfindən yazılmışdır // bir matlab mex faylı üçün koddur // kod bir ədəd dəyərini alacaq və iki ədəd dəyərini çıxaracaq // iki çıxış nömrəsi giriş nömrəsindən hesablanır // kod da bir simli dəyər çıxaracaq // kod həmçinin "salam dünya" nı yazın#"mex.h" void mexFunction daxil edin (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############# ########################################-"salam dünya" çap et-### ################################################### ### mexPrintf ("Salam dünya"); // ###################################### ##### // #########-Matlab-dan Şeylər Alın-######### // ############### ###########################/ * gələn dəyərləri tutmaq üçün bir sıra dəyişən elan edin*/cüt* InValues;/* matlab -dan göndərilən dəyərləri əldə edin*/InValues = mxGetPr (prhs [0]);/* matlab -dan göndərilən bu dəyərləri istifadə etmək üçün InValues edin. [0], InValue [1] və s. Neçə dəyərə görə. Qiymətlər aşağıda istifadə olunacaq */// ######################################### ## // ########-Nömrələr silsiləsini qaytarın-############################# ######################## * * matlab -a göndəriləcək serialı elan edin (* onu bir sıra halına gətirir) */double * OutValues;/ * Qaytarma arqumenti, qaytarma dizisinin ilk yuvası üçün 1x2 (1 sıra 2 sütun) Matrixi yaradın/ayırın (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Geri qaytarma arqumentinə işarə alın */OutValues = mxGetPr (plhs [0]); / * qaytarma dizisinin ilk yuvasında yerləşəcək OutValues -ə dəyərlər təyin edin, burada InValues -dən OutValues -i kompüterdə istifadə edirik */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ############################################# ###########-Sətri qaytar-############# // ################# ###########################** matlab*/char* str -ə göndəriləcək string dəyişənini elan edin;/* string */str = "byebye";/ *sətri qaytarma dizilərinə ikinci yuvaya qoyun (plhs [1]) */plhs [1] = mxCreateString (str); // ########## ##################################################-dönüş daha çox şey-############# // ################################ ############ * * Daha çox şey qaytarmaq üçün yuxarıdakı ümumi qaydalara riayət edin, ancaq əşyaları digər plhs yuvalarına qoyun, plhs [somenumber] */}

Addım 3: Hansı səbəbdən olursa olsun tərtib etmirsə

Nə səbəbdənsə tərtib etmirsə
Nə səbəbdənsə tərtib etmirsə

Hər hansı bir səbəbdən tərtib etməsə (kompüterimdə yaxşı işləməlidir) bu qaynaqları görsə, öyrəndiyim yerdir. Kiçik qüsurları var (bəzi köhnə, işləməyən qrammatika və s. İstifadə edin), ancaq ikisi arasında irəli və geri dönsəniz, işləyən bir şeyi birləşdirə bilməlisiniz. Sənədlər/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Tövsiyə: