Systematics
  • EN
  • אודות
    • על סיסטמטיקס
    • הורדת תעודות ISO
    • אירועים בסיסטמטיקס
    • קהילה
    • יצירת קשר
    • דרכי הגעה
    • לזכרו של יואב לבנטר ז"ל, מייסד ומנכ"ל משותף
  • פתרונות ומוצרים
    • תחום GIS
      • אודות
      • מוצרים
      • אירועים
      • קורסים
      • תמיכה
      • סיפורי הצלחה
    • תחום 3D CAD/PLM
      • אודות
      • מוצרים
      • אירועים
      • קורסים
      • תמיכה
      • סיפורי הצלחה
    • תחום MATLAB & Simulink
      • אודות
      • מוצרים
      • אירועים
      • קורסים
      • תמיכה
      • סיפורי הצלחה
    • תחום 3D Printing
      • אודות
      • מוצרים
      • אירועים
      • תמיכה
      • סיפורי הצלחה
      • רכישה 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
  • חיפוש באתר
  • Menu Menu

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

  • ALL
  • GIS Blog
  • MATLAB With Fun
  • PCB Blog
  • Smart 3D Printing
  • SOLIDBlog

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

Hagar Chen
04/02/2020
MATLAB With Fun

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

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

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

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

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

 

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

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

 

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

 

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

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

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

mcc –W 'java:calculatefft,class_fft' class{class_fft:Calcfft.m}

כאשר:

calculatefft – שם ה-Package

class_fft – שם המחלקה

Calcfft.m– שם פונקציית ה-MATLAB אותה אנו מעוניינים לקמפל

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

 

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

הם עושים זאת באמצעות ה"מתווך" MW class, אך לפני שנרחיב עליו – הכינותי מראש קוד שקורא לפונקצית MATLAB המבצעת חישוב FFT ומציגה אותו (אציין כי זמן הריצה של אלגוריתם ה-FFT מהיר בהרבה ב-MATLAB מאשר ב-JAVA לכן שילוב קוד MATLAB יכול להוות יתרון הן מהבחינה של האצת ביצועים והן מבחינת ניצול היכולות המופלאות של ה-MATLAB).

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

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

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

בשלב הבא נשתמש בשם הספרייה, שם המחלקה ושם המתודה שהגדרנו בשלב קימפול הקוד:

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

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

נשים לב שהקלט שמקבלת פונקציית calcfft (שורה 17) הינו מסוג  MWNumericArray.

מאחר והטיפוס שנשלח לפונקציה יכול להישלח גם כ-double, לא היה צורך אמיתי להשתמש ב-MW זאת מהסיבה הפשוטה ש-JAVA ו-MATLAB יודעים להתממשק ביניהם כאשר מדובר בטיפוסים מסויימים (כמו double). עבור טיפוסים אחרים כמו תמונות ומערכים שונים – לוגיים, מספריים, תאים וכו' לא היינו מצליחים לגשר על הפערים בין השפות והיה צורך אמיתי להשתמש ב-MW class. לשם ההדגמה בחרתי להציג את השימוש במשנה מסוג זה.

פירוט על ה- package  השונים, אופן שימושם וה-MW המוכל בכל אחד מה-package ניתן למצוא בלינק הבא, כאשר לחיצה על כל package תציג את רשימת הארגומנטים הכלולה בתוך ה-package.

לאחר כתיבת הקוד, נותר להגדיר את הסביבה:

  • על מנת לפתח יישומי JAVA יש להוריד ערכת JDK מהקישור הבא. את גרסת ה-JDK המתאימה עבור ה-MATLAB שלכם תוכלו לבדוק על ידי הרצת הפקודה: version –java ב-command window.
  • לאחר מכן, יש להגדיר את ה- JAVA_HOME. נגדיר זאת על ידי הרצת הפקודה:

setenv('JAVA_HOME','C:\Program Files\Java\jdk1.7.0_71’);

כאשר בארגומנט השני יש לרשום את הנתיב לתיקיית ה-JDK.

  • צעד נוסף לפני ההרצה כולל הגדרת הספריות הנחוצות להפעלת הקוד בהגדרות מערכת ההפעלה.

-נגדיר את ה-javabuilder.jar (הנמצא תחת matlabroot\toolbox\javabuilder\jar)

-נגדיר את הספרייה שכתבנו ב-MATLAB (קובץ ה-jar) בהגדרות מערכת ההפעלה.

אופן ההגדרה: מקש ימני על המחשב שלי=>מאפיינים=>הגדרות מערכת מתקדמות=>משתני סביבה=>משתני מערכת=>PATH. בתוך ה-PATH נוסיף את קבצי ה-JAR הרלוונטים להרצה.

 

וזהו, כל מה שנותר הוא להריץ את הפקודות המתאימות לקבצים שהגדרתם ב-cmd.exe.

עבור קובץ ההדגמה שורות ההרצה הן:

javac -classpath .;C:\javabuilder.jar;C:\java_fft\calculatefft.jar fftProgram.java

java -classpath .;C:\javabuilder.jar;C:\java_fft\calculatefft.jar fftProgram

ובאופן כללי:

javac -classpath .;javabuilder.jar path;the compiled file path the name of java program

java -classpath .; javabuilder.jar path;the compiled file path the name of java program(without .java)

 

**הערה – יש לוודא שבנתיב בו אתם נמצאים (ב-cmd.exe) קיימת תוכנית ה-JAVA.

בהצלחה!!

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

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

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

מה חדש בתחום עיבוד האותות בסביבת MATLAB בגרסה R2022a?

מה חדש בתחום עיבוד האותות בסביבת MATLAB בגרסה R2022a?

MATLAB With Fun

ינון נוסבאום
23/06/2022
15 קיצורי מקלדת ב-MATLAB אשר ישנו לכם את החיים

15 קיצורי מקלדת ב-MATLAB אשר ישנו לכם את החיים

MATLAB With Fun

מורן גולדמברג
03/08/2022
מה חדש במערכות אוטונומיות בגרסה R2022a

מה חדש במערכות אוטונומיות בגרסה R2022a

MATLAB With Fun

גילי בן מימון
30/06/2022
תגובות | 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
    © 2022 All rights reserved SYSTEMATICS Ltd. | Privacy Policy
    • הישארו מעודכנים
    • כיתבו לנו
    Scroll to top