فهرست مطالب:

ساخت فایل MEX متلب: 3 مرحله
ساخت فایل MEX متلب: 3 مرحله

تصویری: ساخت فایل MEX متلب: 3 مرحله

تصویری: ساخت فایل MEX متلب: 3 مرحله
تصویری: شبکه عصبی، درس 13، طراحی و آموزش شبکه عصبی در MATLAB 2024, جولای
Anonim
ساخت فایل MEX متلب
ساخت فایل MEX متلب

دستورالعمل نحوه ادغام کد C کامپایل شده با Matlab. MEX مخفف MATLAB Executable است. فایل های MEX زیر برنامه های پیوندی پویا هستند که از کد منبع C یا Fortran تولید شده اند و هنگامی که کامپایل می شوند ، می توانند از داخل MATLAB به همان شیوه فایل های MATLAB M یا عملکردهای داخلی اجرا شوند. توابع رابط خارجی قابلیت انتقال داده ها بین فایل های MEX و MATLAB و قابلیت فراخوانی توابع MATLAB از کد C یا Fortran را ارائه می دهند. در اینجا همه چیز را که برای ساخت سریع یک فایل مفید mex نیاز دارید به شما نشان خواهم داد. نیاز: = ویرایشگر متن = matlab 6.1 یا بالاتر (نسخه های قبلی می توانند فایل های mex را نیز انجام دهند اما فرمت آنها کمی متفاوت است) =

مرحله 1: کد

کد
کد

فایل پیوست شده را بارگیری کنید: mextest1p0.cpp

cpp مخفف c ++ است ……… کد این کار را می کند: ……… یک شماره لازم است که آن را از خط فرمان matlab ارسال کنید. "hello world" را در matlab چاپ می کند ، دو آرگومان به matlab برمی گرداند ، یک آرایه شماره دو عنصر و یک رشته اولین عنصر آرایه شماره بازگشتی 1 است + شماره ای که برای آن ارسال کرده اید ، دومین عنصر آرایه شماره بازگشتی 2+ است. شماره ای که برای آن ارسال کرده اید ………. نحوه پیاده سازی آن به این صورت است: ………… فایل را در رایانه خود ذخیره کنید start matlab در matlab به دایرکتوری که فایل در آن قرار دارد بروید سپس دستورالعمل های گردآوری و اجرا را در بالای فایل دنبال کنید. فایل cpp. من نمی توانم این دستورالعمل ها را در اینجا بنویسم زیرا دستورالعمل ها دستورات را به صورت خودکار ویرایش می کنند و باعث می شوند که آنها اشتباه ظاهر شوند. در تصویر زیر می توانید عملکرد کد را مشاهده کنید. نگران "هشدار خط فرمان" نباشید ، به نظر می رسد هیچ تاثیری ندارد. توجه داشته باشید در سمت چپ ، فهرست فعلی حاوی فایل.cpp است. در سمت راست می توانید من را در حال جمع آوری کد و سپس اجرای آن از matlab مشاهده کنید. فایل را در ویرایشگر متن خود بخوانید (به عنوان مثال دفترچه یادداشت در ویندوز) ، بسیار مستند است و خود را توضیح می دهد ، شما می توانید تقریباً هر چیزی را که نیاز دارید با رعایت قواعد موجود در کد (یعنی کپی و چسباندن و ساخت آن) انجام دهید. تغییرات جزئی) ############################################### ######################## ……. صفحه بعد کار نمی کند ، شما باید فایل مورد نظر را به جای کپی و چسباندن آن بارگیری کنید. ################################################## #######################

مرحله 2: این کد است ، کپی و چسباندن نکنید

این کد است ، کپی و چسباندن نکنید
این کد است ، کپی و چسباندن نکنید

################################################## #… کار کنید ، باید فایل را که ضمیمه کرده ام به جای کپی و چسباندن آن بارگیری کنید. #################################### ####################################### // این به زبان c ++ توسط leevonk نوشته شده است // این کد برای یک فایل melab mex است // کد یک مقدار عدد را دریافت می کند و دو مقدار عدد را خروجی می دهد // دو عدد خروجی از شماره ورودی محاسبه می شود // کد همچنین یک مقدار رشته خروجی می دهد // کد همچنین چاپ "سلام جهان"#شامل "mex.h" void mexFunction (int nlhs، mxArray *plhs ، int nrhs ، mxArray *prhs ) {// ############# ############################## // #######-چاپ "سلام جهان"-### ######## // // ####################################### ### 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 [somenumber] */}

مرحله 3: اگر به هر دلیلی کامپایل نمی شود

اگر به هر دلیلی کامپایل نمی شود
اگر به هر دلیلی کامپایل نمی شود

اگر به هر دلیلی آن را کامپایل نمی کند (باید در رایانه من خوب کار کند) این منابع را ببینید ، همان جایی است که من از آن یاد گرفته ام. آنها اشکالات کمی دارند (از دستور زبان قدیمی و غیر کاربردی و غیره استفاده کنید) اما اگر بین این دو رفت و آمد کنید ، باید بتوانید چیزی را که با هم کار می کنند ، کنار هم قرار دهید. https://web.ccr.jussieu.fr/ccr/ اسناد/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

توصیه شده: