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

  • 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.

בהצלחה!!

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

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

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

תיוג אותות בצורה נוחה ומהירה לצרכי למידה עמוקה (Deep Learning)

תיוג אותות בצורה נוחה ומהירה לצרכי למידה עמוקה (Deep Learning)

MATLAB With Fun

ינון נוסבאום
15/10/2020
השתלמויות חינמיות Online במגוון כלים בסביבת MATLAB

השתלמויות חינמיות Online במגוון כלים בסביבת MATLAB

MATLAB With Fun

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

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

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