Systematics
  • EN
  • אודות
    • על סיסטמטיקס
    • אירועים בסיסטמטיקס
    • קהילה
    • יצירת קשר
    • דרכי הגעה
  • פתרונות ומוצרים
      • אודות
      • מוצרים
      • אירועים
      • קורסים
      • תמיכה
      • סיפורי הצלחה
      • אודות
      • מוצרים
      • אירועים
      • קורסים
      • תמיכה
      • סיפורי הצלחה
      • אודות
      • מוצרים
      • אירועים
      • קורסים
      • תמיכה
      • סיפורי הצלחה
      • אודות
      • מוצרים
      • אירועים
      • תמיכה
      • סיפורי הצלחה
      • רכישה Online
  • לקוחות
    • לקוחות
      • סיפורי הצלחה
    • תעשיות
      • אקדמיה
      • Start Ups
    • תכניות עבור סטארטאפים
  • קורסים
      • אודות מרכז ההדרכה
    • קורסים GIS
      • אודות הקורסים
      • תאריכים וסילבוס
      • מסלולי הכשרה
    • קורסים SOLIDWORKS
      • אודות הקורסים
      • תאריכים וסילבוס
      • מסלולי הכשרה
      • קורסים CATIA
    • קורסים MATLAB & Simulink
      • אודות הקורסים
      • תאריכים וסילבוס
      • מסלולי הכשרה
    • קורסים 3D Printing
      • תאריכים וסילבוס
    • קורסים ALTIUM
      • תאריכים וסילבוס
  • תמיכה
    • תמיכה ושירותי ייעוץ
    • רישום חומרה / הפעלת אחריות
    • נהלי התקנה ורישוי GIS
    • נהלי התקנה ורישוי MATLAB
    • נהלי התקנה ורישוי SOLIDWORKS
    • פתיחת קריאות שירות
  • דרושים
  • צור קשר
  • בלוג
    • הבלוגים שלנו
    • SOLIDBlog
    • PCB Blog
    • GIS Blog
    • MATLAB With Fun Blog
    • 3D Printing Blog
  • HE
  • Contact Us
  • Support
  • Customers
    • Customers
    • Success Stories
  • Industries
  • Solutions
  • About Us
  • חיפוש באתר

עמוד הבית » בלוג » MATLAB With Fun

שילוב של קוד MATLAB בפרויקט שנכתב ב-NET.

Hagar Chen
04/02/2020
MATLAB With Fun

שילוב של קוד MATLAB בפרויקט שנכתב ב-NET.: רוצים לשלב פרויקט שנכתב ב-NET. עם קוד שכתבתם ב-MATLAB? הגעתם למקום הנכון […]

שתפו את הפוסט
  • שתף בפייסבוק
  • שתף בטוויטר
  • שתף בגוגל+
  • שתף בלינקדאין
  • שתף באימייל
  • שתף בוואטסאפ

שילוב של קוד MATLAB בפרויקט שנכתב ב-NET.: רוצים לשלב פרויקט שנכתב ב-.Net עם קוד שכתבתם ב-MATLAB? הגעתם למקום הנכון 😊

אחרי שתקראו את הפוסט הבא תראו שזה לגמרי אפשרי ואפילו די פשוט, אז בואו נתחיל!

(עבור סביבת JAVA, ניתן לפנות לפוסט "שילוב קוד MATLAB בפרויקט שנכתב ב-JAVA")

 

תחילה, נקמפל את הקוד שכתבנו ב-MATLAB באמצעת ה-MATLAB Compiler SDK, תוך שימוש באחת מהדרכים הבאות:

  1. באמצעות האפליקציה:

 

ניגש אל ה- Library Compiler נבחר ב-type מסוג NET Assembly. בחלון ה- Exported function

 

נטען את הפונקציה הכתובה ב-MATLAB, אותה אנו מעונייים לקמפל ונמלא את הפרטים הדרושים – שם הספרייה, המחלקה והמתודה (נשתמש בפרמטרים הללו בהמשך על מנת להפעיל את הפונקציה מסביבת ה-Visual Studio). הסבר על השימוש באפליקציה ניתן למצוא בלינק הבא.

  1. באמצעות שורות קוד:

דוגמה לקימפול הפונקציה על ידי שורות קוד:

mcc -B 'dotnet:Calcfft,class_fft,4.0,Private,local' Calcfft.m

כאשר:

Calcfft – שם התוכנית

class_fft – שם המחלקה

4.0 – גרסת ה-.Net Framework

Calcfft.m– שם המתודה

 

לאחר קימפול הקוד – נוצר קובץ dll. ששמו הוא כשם התוכנית שהגדרנו. זוהי הספרייה המשמשת כמעטפת לפונקציה אותה יצרנו ב-MATLAB.

אז איך MATLAB ו-NET. מתקשרים ביניהם?

הם עושים זאת באמצעות ה"מתווך" MW class, אך לפני שנרחיב עליו, נפתח תחילה פרויקט ב-Visual Studio ונתחיל לכתוב את הקוד שלנו.

הכינותי מראש קוד שקורא לפונקציית MATLAB המבצעת חישוב FFT ומציגה אותו

(אציין כי זמן הריצה של אלגוריתם ה-FFT מהיר בהרבה ב-MATLAB מאשר ב-NET. לכן שילוב קוד MATLAB יכול להוות יתרון הן מהבחינה של האצת ביצועים והן מבחינת ניצול היכולות המופלאות של ה-MATLAB).

השחקן הראשי בסיפור הוא ה-MW class. שחקן זה מאפשר להעביר ארגומנטים מ-NET. ל-MATLAB וגם לקבלם חזרה.

ועכשיו לקוד עצמו:

ישנם סוגים שונים של ארגומנטים שאותם MW class יודעת לתווך –  מערכים, תאים, מבנים. על מנת להשתמש ביכולת התיווך הזאת יש להגדיר את ה-Namespace  כפי שמופיע בשורה מספר 2. בשלב הבא נשתמש בשם הספרייה, שם המחלקה ושם המתודה שהגדרנו בשלב קימפול הקוד:

  • הספרייה שהגדרנו תיכנס לספריות בהם נשתמש בתוכנית (ראו שורה מספר 3).
  • המחלקה שהגדרנו תשמש אותנו בקריאה לפונקציה שיצרנו ב-MATLAB והגדרת אובייקט מסוג מחלקה (ראו שורה מספר 15)
  • הקריאה לפונקצייה מוגדרת בעזרת שם המחלקה שהגדרנו ושם המתודה שהגדרנו בזמן הקימפול (ראו שורה מספר 17).

ומה לגבי הגדרת משתני ה-MW?

נשים לב שהקלט המתקבל לאחר השליחה לפונקציה (שורה 17) הינו מסוג  MWArray. ללא ממשק ה-MW, לא היינו מצליחים לגשר על הפערים בין השפות, לכן זכרו לבדוק מהו סוג הטיפוס שנשלח ומה סוג הטיפוס שמתקבל ובהתאם לכך להגדיר את הספריות בהם אתם משתמשים ואת המשתנים השונים בתוכנית.

לכל ארגומנט הגדרה שונה ובסוף הפוסט תמצאו טבלה המציגה ההמרה שיש לבצע במעבר בין ה- MATLAB ל-NET.

עברנו את שלב כתיבת הקוד, עכשיו נגדיר את הסביבה – וסיימנו!

הגדרת הסביבה היא פשוטה ביותר וכוללת כמה פעולות:

  • הגדרת ספריות ה-MW הנמצאת תחת הנתיב –

matlabroot\toolbox\dotnetbuilder\bin\architecture\framework_version\mwarray.dll

 

  • הגדרת הספריות שכתבנו ב-MATLAB (קבצי ה-dll.)

אז שני קליקים וגם הסיפור הזה מאחורינו:

בסביבת Visual Studio, מקש ימני על שם ה-references (שנמצא תחת שם הפרויקט)-> add reference, נלך ל-Browse ונוסיף את קבצי ה-dll הנחוצים.

 

וזהו, כל מה שנותר הוא ללחוץ על start.

בהצלחה!!

 

אם הסתבכתם, מוזמנים לפתוח קריאת תמיכה דרך הקישור הבא

טבלת המרה בין ה- MATLAB ל-NET.

שתפו את הפוסט
  • שתף בפייסבוק
  • שתף בטוויטר
  • שתף בגוגל+
  • שתף בלינקדאין
  • שתף באימייל
  • שתף בוואטסאפ

פוסטים נוספים מאותה קטגוריה

כיצד מהנדס מערכת יכול לקשר ולנהל את מפרט דרישות המערכת מתוך סביבת הפיתוח?

כיצד מהנדס מערכת יכול לקשר ולנהל את מפרט דרישות המערכת מתוך סביבת הפיתוח?

MATLAB With Fun

שלומי שרגא
03/12/2020
תכנון ובניית אב טיפוס של מערכות (Software Defined Radio (SDR בצורה קלה ומהירה עם MATLAB ו-Simulink

תכנון ובניית אב טיפוס של מערכות (Software Defined Radio (SDR בצורה קלה ומהירה עם MATLAB ו-Simulink

MATLAB With Fun

שלומי שרגא
03/09/2020
כיצד התעשייה האווירית ניצחה בתחרות בינלאומית לשינוע מזוודות ומטענים אחרים בשדה התעופה הטוב בעולם?

כיצד התעשייה האווירית ניצחה בתחרות בינלאומית לשינוע מזוודות ומטענים אחרים בשדה התעופה הטוב בעולם?

MATLAB With Fun

רועי פן
10/09/2020
תגובות | 0 תגובות

השאירו תגובה

כתיבת תגובה לבטל

האימייל לא יוצג באתר. שדות החובה מסומנים *

הרשמו לקבלת עדכונים

MATLAB With Fun

קבלו עדכונים על תכנים חדשים ישירות לתיבת המייל שלכם!

ההרשמה בוצעה בהצלחה. בדוק בתיבת הדואר שלך, הודעה המכילה קישור לאישור ההרשמה ואשר את הרשמתך.

social-media-youtubesocial-media-linkedin

קהילה

  • קהילת סיסטמטיקס
  • SOLIDWORKS Blog
  • PCB Blog
  • MATLAB with Fun Blog
  • GIS Blog
  • Smart 3D Printing Blog
  • ESRI Israel FB
  • SOLIDWORKS Israel FB
  • MATLAB and Simulink LI
  • MATLAB and Simulink FB

צור קשר

  • בקשת יצירת קשר
  • בקשת קשר טלפוני

רכישה

  • בקשת הצעת מחיר
  • מכירות ESRI
  • מכירות SOLIDWORKS
  • מכירות ALTIUM
  • מכירות CATIA
  • מכירות ENOVIA
  • מכירות MATLAB & Simulink
  • מכירת מדפסות תלת מימד

קורסים

  • קורסים GIS
  • קורסים SOLIDWORKS
  • קורסים MATLAB & Simulink
  • קורסים CATIA
  • קורסים ALTIUM
  • יצירת קשר מרכז ההדרכה

תמיכה

  • מדיניות תמיכה
  • שירותי ייעוץ
  • פתיחת קריאות שירות

פתרונות ומוצרים

  • תחום GIS
  • תחום 3D CAD/PLM
  • SOLIDWORKS
  • ALTIUM PCB
  • CATIA
  • ENOVIA
  • MATLAB & Simulink
  • תחום 3D Printing
  • 3D EXPERIENCE
  • תעשיות
  • אקדמיה
  • Start Ups

אודות סיסטמטיקס

  • מי אנחנו?
  • דרושים
  • אירועים
  • דרכי גישה ומפה
  • יצירת קשר

לקוחות

  • לקוחות סיסטמטיקס
  • סיפורי לקוח SOLIDWORKS
  • סיפורי לקוח MathWorks
  • סיפורי הצלחה GIS
© 2021 All rights reserved SYSTEMATICS Ltd. | Privacy Policy
Scroll to top