Სარჩევი:

Matlab MEX ფაილის შექმნა: 3 ნაბიჯი
Matlab MEX ფაილის შექმნა: 3 ნაბიჯი

ვიდეო: Matlab MEX ფაილის შექმნა: 3 ნაბიჯი

ვიდეო: Matlab MEX ფაილის შექმნა: 3 ნაბიჯი
ვიდეო: Statistical Programming with R by Connor Harris 2024, ნოემბერი
Anonim
Matlab MEX ფაილის შექმნა
Matlab MEX ფაილის შექმნა

ინსტრუქცია, თუ როგორ უნდა მოხდეს ინტეგრირებული C კოდის Matlab– თან ინტეგრირება. MEX ნიშნავს MATLAB შესრულებადი. MEX ფაილები არის დინამიურად დაკავშირებული ქვეგადამცემები C ან Fortran კოდისგან, რომლებიც შედგენისას შეიძლება გაშვებული იქნას MATLAB– დან ისევე, როგორც MATLAB M– ფაილები ან ჩაშენებული ფუნქციები. გარე ინტერფეისის ფუნქციები უზრუნველყოფს 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– დან. წაიკითხეთ ფაილი თქვენს ტექსტურ რედაქტორში (მაგალითად, ნოუთბუქის ფანჯრები), ის ძალიან კარგად არის დოკუმენტირებული და გასაგები, თქვენ შეძლებთ გააკეთოთ თითქმის ყველაფერი, რაც გჭირდებათ კოდის პირობების დაცვით (ანუ მისი კოპირება და ჩასმა და დამზადება) უმნიშვნელო ცვლილებები) ################################################# ######################## ……. მომდევნო გვერდი არ იმუშავებს, თქვენ უნდა გადმოწეროთ ფაილი, რომელიც მე დავამატე ამის კოპირებისა და ჩასმის ნაცვლად. #################################################### #######################

ნაბიჯი 2: ეს არის კოდი, ნუ დააკოპირებ და პასტა

ეს არის კოდი, ნუ დააკოპირებ და პასტა
ეს არის კოდი, ნუ დააკოპირებ და პასტა

#################################################### … იმუშავეთ, თქვენ უნდა გადმოწეროთ ფაილი, რომელიც მე დავამატე ამის კოპირებისა და ჩასმის ნაცვლად. #################################### ####################################### // ეს დაწერილია c ++ - ით leevonk // ეს არის კოდი matlab mex ფაილისთვის // კოდი მიიღებს ერთ რიცხვით მნიშვნელობას და გამოაქვს ორი რიცხვის მნიშვნელობა // ორი გამომავალი რიცხვი გამოითვლება შეყვანის ნომრიდან // კოდი ასევე გამოაქვს სიმებიანი მნიშვნელობა // კოდი იქნება ასევე დაბეჭდე "გამარჯობა სამყარო"#მოიცავს "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############# ############################## // #######-დაბეჭდე "გამარჯობა სამყარო"-### ######### // ######################################### ### mexPrintf ("გამარჯობა სამყარო"); // ####################################### ##### // ########-მიიღეთ ნივთები Matlab– დან-######### // ################# ##########################/ * გამოაცხადეთ მასივის ცვლადი, რომ შეინარჩუნოს შემომავალი vales*/double* InValues;/* მიიღოთ matlab– დან გამოგზავნილი მნიშვნელობები*/InValues = mxGetPr (prhs [0]);/* გამოვიყენოთ ეს მნიშვნელობები, რომლებიც გამოგზავნილია matlab– დან, გააკეთეთ InValues [0], InValue [1] და ა.შ. იმის მიხედვით, თუ რამდენი მნიშვნელობა არსებობს. InValues გამოიყენება ქვემოთ */// ######################################## ## // #######-რიცხვითი მასივის დაბრუნება-######### // #################### #######################/ * გამოაცხადეთ მასივი, რომელიც გაიგზავნება matlab- ში (* მას მასივად აქცევს) */ორმაგი * 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 = "bybyye";/ *ჩადეთ სტრიქონი დაბრუნების მასივების მეორე სლოტში (plhs [1]) */plhs [1] = mxCreateString (str); // ########### ##################################//###########--დაბრუნების მეტი პერსონალი-############ // ################################# ############/ * მეტი ნივთების დასაბრუნებლად, დაიცავით ზემოთ მოყვანილი ზოგადი წესები, მაგრამ ჩაყარეთ სხვა plhs slots, plhs [somenumber] */}

ნაბიჯი 3: თუ რა მიზეზითაც არ არის შედგენილი

თუ რა მიზეზითაც არ არის შედგენილი
თუ რა მიზეზითაც არ არის შედგენილი

თუ რაიმე მიზეზით ის არ არის შედგენილი (ეს უნდა იყოს, კარგად მუშაობს ჩემს კომპიუტერში) ნახეთ ეს რესურსები, ისინი იქ არიან, საიდანაც ვისწავლე. მათ აქვთ მცირე ხარვეზები (გამოიყენეთ ძველი, არაფუნქციური გრამატიკა და ა. დოკუმენტაცია/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

გირჩევთ: