תוכן עניינים:

הכנת קובץ MEX של Matlab: 3 שלבים
הכנת קובץ MEX של Matlab: 3 שלבים

וִידֵאוֹ: הכנת קובץ MEX של Matlab: 3 שלבים

וִידֵאוֹ: הכנת קובץ MEX של Matlab: 3 שלבים
וִידֵאוֹ: Сравнение протоколов TCP и UDP 2024, יולי
Anonim
הכנת קובץ MEX של Matlab
הכנת קובץ MEX של Matlab

הוראות כיצד לשלב קוד C מיוצר עם Matlab. MEX מייצג MATLAB Executable. קבצי MEX הם שורות משנה מקושרות באופן דינמי המופק מקוד מקור C או פורטראן, שאפשר להריץ אותן מתוך MATLAB באותו אופן כמו קבצי MATLAB או פונקציות מובנות. פונקציות הממשק החיצוני מספקות פונקציונליות להעברת נתונים בין קבצי MEX ל- MATLAB, והיכולת להתקשר לפונקציות MATLAB מקוד C או קוד Fortran. כאן אראה לך כל מה שאתה צריך כדי ליצור קובץ mex שימושי. מה תעשה צריך: = עורך טקסט = matlab 6.1 ומעלה (גרסאות קודמות יכולות לעשות קבצי mex מדי אבל פורמט מעט שונה) = ל- matlab יש מהדר c משלו שמגיע עם זה, אבל השתמשתי במהדר C ++ חזותי כי היה לי את זה.

שלב 1: הקוד

הקוד
הקוד

הורד את הקובץ שצירפתי: mextest1p0.cpp

cpp מייצג c ++ ……… זה מה שהקוד עושה: ……… צריך מספר שאתה שולח אותו משורת הפקודה matlab. הוא מדפיס "שלום עולם" ב- matlab הוא מחזיר שני ארגומנטים ל- matlab, מערך מספר אלמנטים ומחרוזת האלמנט הראשון של מערך המספרים המוחזר הוא 1 + המספר ששלחת לו האלמנט השני של מערך המספרים המוחזר הוא 2 + המספר ששלחת אותו ………………. קובץ.cpp. אני לא יכול לכתוב את ההוראות האלה כאן מכיוון שהוראות עריכה אוטומטית של הפקודות וגורמות להן להופיע בצורה לא נכונה. בתמונה למטה אתה יכול לראות את הקוד עובד. אל תדאג לגבי "אזהרת שורת הפקודה", נראה שזה לא משפיע על שום דבר. שים לב בצד שמאל, הספרייה הנוכחית מכילה את קובץ.cpp. מימין אתה יכול לראות אותי אוסף את הקוד ולאחר מכן מבצע אותו מ- matlab. קרא את הקובץ בעורך הטקסט שלך (למשל פנקס רשימות בחלונות), הוא מתועד היטב ומסביר את עצמו, תוכל לעשות כמעט כל מה שאתה צריך על ידי ביצוע המוסכמות בקוד (כלומר העתקה והדבקה והכנת שינויים קלים) ################################################ ######################### …….. הערה …….. בגלל כמה עריכות אוטומטיות מעצבנות שניתנות להוראות, הקוד כפי שהוא נראה על הדף הבא לא יעבוד, עליך להוריד את הקובץ שצירפתי במקום להעתיק ולהדביק אותו. ################################################## #######################

שלב 2: זהו הקוד, אין להעתיק ולהדביק

זהו הקוד, אין להעתיק ולהדביק
זהו הקוד, אין להעתיק ולהדביק

################################################## ###################### …….. הערה …….. בגלל כמה עריכות אוטומטיות מעצבנות שניתנות להוראות, הקוד כפי שניתן לראות בדף זה לא עבודה, עליך להוריד את הקובץ שצירפתי במקום להעתיק ולהדביק אותו. ############################## ######################################## זה נכתב ב- c ++ על ידי leevonk // זה קוד לקובץ mex mex // הקוד יקבל ערך מספר אחד ויוציא שני ערכי מספר // שני מספרי הפלט מחושבים ממספר הקלט // הקוד יפיק גם ערך מחרוזת // הקוד יביא הדפס גם "שלום עולם"#כולל "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############# #####################################-הדפס "שלום עולם"-### ######### // ####################################### ### mexPrintf ("שלום עולם"); // ##################################### ##### // #########-קבל דברים מ- Matlab-######### // ################# ########################### * להכריז על משתנה מערך כדי להחזיק את הערכים הנכנסים*/כפול* InValues;/* לקבל את הערכים שנשלחו מ- matlab*/InValues = mxGetPr (prhs [0]);/* כדי להשתמש בערכים אלה שנשלחו מ- matlab, האם InValues [0], InValue [1] וכו 'בהתאם לכמה ערכים יש. InValues ישמשו למטה */// ######################################### ## // ########-החזרת מערך מספרים-######### // #################### #########################/ * הצהיר על המערך שיישלח ל- matlab (ה * הופך אותו למערך) */double * OutValues;/ * צור/הקצה ארגומנט החזרה, מטריצה 1x2 (שורה אחת 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 [מספר מספר] */}

שלב 3: אם מסיבה כלשהי זה לא מתאסף

אם מסיבה כלשהי זה לא מתאסף
אם מסיבה כלשהי זה לא מתאסף

אם מסיבה כלשהי הוא לא מהדר (הוא אמור, עובד מצוין במחשב שלי) ראה את המשאבים האלה, הם המקום ממנו למדתי. יש להם תקלות קטנות (השתמש בדקדוק ישן ולא מתפקד וכו ') אבל אם אתה חוזר הלוך ושוב בין השניים אתה אמור להיות מסוגל לחבר משהו שעובד. Http: //web.ccr.jussieu.fr/ccr/ תיעוד/חשבון/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

מוּמלָץ: