Προς το περιεχόμενο

Διασύνδεση Matlab με C ή με java


ann7ita

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

Έχω έναν αλγόριθμο υλοποιημένο σε Matlab..Πρέπει να φτιάξω ένα κατανεμημένο σύστημα με threads ή σε java σε netbeans ή σε C σε περιβάλλον Unix.

Ξέρετε μηπως αν υπάρχει καμια εντολή στη Matlab που αφού τρέχει τον κώδικα να παίρνει κάποια αποτελέσματα και να τα στελνει στα threads για επεξεργασία?Και αυτά μετά να απαντάνε στη Matlab για να συνεχίσει ο αλγόριθμος?

Δηλαδή αν υπάρχει κάποια εντολή για να συνδεθεί κάπως η matlab με java ή C?

Αλλιώς η έσχατη λύση είναι να μεταφράσω τον αλγόριθμο σε java.

 

Είμαι σε περιβάλλον windows..πιστεύετε ότι θα ήταν καλύτερα σε Linux?

Αλλά σε Linux θα είναι δύσκολο να χρησιμοποιήσω Matlab.

Ευχαριστώ για οποιαδήποτε απάντηση

Δημοσ.
Καλησπέρα,

 

Έχω έναν αλγόριθμο υλοποιημένο σε Matlab..Πρέπει να φτιάξω ένα κατανεμημένο σύστημα με threads ή σε java σε netbeans ή σε C σε περιβάλλον Unix.

Ξέρετε μηπως αν υπάρχει καμια εντολή στη Matlab που αφού τρέχει τον κώδικα να παίρνει κάποια αποτελέσματα και να τα στελνει στα threads για επεξεργασία?Και αυτά μετά να απαντάνε στη Matlab για να συνεχίσει ο αλγόριθμος?

Δηλαδή αν υπάρχει κάποια εντολή για να συνδεθεί κάπως η matlab με java ή C?

Αλλιώς η έσχατη λύση είναι να μεταφράσω τον αλγόριθμο σε java.

 

Είμαι σε περιβάλλον windows..πιστεύετε ότι θα ήταν καλύτερα σε Linux?

Αλλά σε Linux θα είναι δύσκολο να χρησιμοποιήσω Matlab.

Ευχαριστώ για οποιαδήποτε απάντηση

 

To MATLAB στο UNIX/LINUX είναι το ίδιο. Προσωπικά τρέχω MATLAB 2010a σε Ubuntu 10.04 και είναι μια χαρά.

 

Φυσικά και γίνεται. Κοίτα εδω http://www.mathworks.com/products/javabuilder/

 

και επίσης για MEX-files

 

:-)

Δημοσ.

Ευχαριστώ πολύ για την απάντηση!!!

Τώρα το ψάχνω για τα MEX files αλλά δεν έχω καταλήξει αν θα με βολέψει περισσότερο η C ή η JAVA και πως γίνεται να εισάγω τον κώδικα του server client μέσα στη Matlab ή να το φτιάξω έξω από τη Matlab και να τα συνδέσω με άλλο τρόπο.

Δημοσ.

Το ΜΑΤLAB υποστηρίζει διασύνδεση με διάφορες γλώσσες όπως C/C++, Java, κ.α..

 

Αυτο που θα μπορούσες να κάνεις είναι να μεταγλωττήσεις την/τις Matlab routine(s) και να δημιουργήσεις μια C/C++ shared library μέσω του Matlab compiler.

 

Περισσότερες πληροφορίες εδώ:

 

http://www.mathworks.com/access/helpdesk/help/toolbox/compiler/f2-9676.html

 

Αυτό θα σου δώσει την δυνατότητα απο το πρόγραμμα σου να μπορείς να καλείς Matlab routine(s).

 

Πάντως ξεκίνα διαβάζοντας σχετικά entries στο Documentation είτε του Matlab, είτε του Matlab compiler.

 

Καλή επιτυχία!

Δημοσ.

Καλησπέρα,

 

Το έψαξα με βάση την απάντηση σου αλλά δεν έχω τον Matlab compiler και θα πρέπει να το αγοράσω.μήπως μπορώ με άλλο τρόπο να χρησιμοποιήσω την εντολή mcc?

Με βάση αυτή την εντολή θα μπορέσω να δημιουργήσω μια C shared library στη matlab.

Καμια γνώμη?

  • 3 εβδομάδες αργότερα...
Δημοσ.

Θα συμφωνησω και εγω για MEX files.

Με την εντολη "MEX" μπορεις να μετατρεψεις κωδικα c,c++ σε Matlab executable και να το τρεξεις κανονικα απο το Matlab πλεον.

 

http://www.mathworks.com/support/tech-notes/1600/1605.html#C_warning

 

Και οσο για το Linux μια χαρα δουλευει και εκει. εγω εχω Suse 11 και δεν ειχα κανενα προβλημα μεχρι τωρα.

Δημοσ.
Καλησπέρα,

 

Το έψαξα με βάση την απάντηση σου αλλά δεν έχω τον Matlab compiler και θα πρέπει να το αγοράσω.μήπως μπορώ με άλλο τρόπο να χρησιμοποιήσω την εντολή mcc?

Με βάση αυτή την εντολή θα μπορέσω να δημιουργήσω μια C shared library στη matlab.

Καμια γνώμη?

 

Εννοείς ότι το license product που έχεις δεν σου δίνει τον MATLAB compiler; Μήπως στο installation απλά δεν τον έκανες check;

Δημοσ.
Καλησπέρα,

 

Έχω έναν αλγόριθμο υλοποιημένο σε Matlab..Πρέπει να φτιάξω ένα κατανεμημένο σύστημα με threads ή σε java σε netbeans ή σε C σε περιβάλλον Unix.

Ξέρετε μηπως αν υπάρχει καμια εντολή στη Matlab που αφού τρέχει τον κώδικα να παίρνει κάποια αποτελέσματα και να τα στελνει στα threads για επεξεργασία?Και αυτά μετά να απαντάνε στη Matlab για να συνεχίσει ο αλγόριθμος?

Δηλαδή αν υπάρχει κάποια εντολή για να συνδεθεί κάπως η matlab με java ή C?

Αλλιώς η έσχατη λύση είναι να μεταφράσω τον αλγόριθμο σε java.

 

Είμαι σε περιβάλλον windows..πιστεύετε ότι θα ήταν καλύτερα σε Linux?

Αλλά σε Linux θα είναι δύσκολο να χρησιμοποιήσω Matlab.

Ευχαριστώ για οποιαδήποτε απάντηση

 

 

Πριν λίγες ημέρες το το δοκίμασα και εν τέλει κατάφερα να πραγματοποιήσαω μία διασύνδεση του Matlab με τη C# και δούλεψε άψογα τόσο σε παραθυρικό περιβάλλον όσο και σε command line! Φαντάζομαι ότι και για τη C κάτι παρόμοιο θα είναι...

Δημοσ.

θα υπερθεματίσω με τα σχόλια των παιδιών σχετικά με mex. Εξαιρετικά βολικό και ελαφρώς πιο γρήγορα. Το μόνο πρόβλημα είναι μερικές φορές, πως πετάει warning κατά την εκτέλεση, όταν έχουν γίνει compile σε διαφορετικό σύστημα, αλλά και πάλι δεν υπάρχουν λάθη.

  • 3 εβδομάδες αργότερα...
Δημοσ.

Christos75 πως το καταφερές?Εγω ακόμα να μπω στο νόημα...

Έχω κώδικεσ server-client σε C και θα πρέπει να τους μετατρέψω σε mex-files έτσι ώστε να τους τρέξω σε matlab..compiler δεν εχς βρει ακόμα..βρήκα έναν MCRinstaller που δεν νομίζω να είναι αυτό που ζητάω..σκέφτομαι μήπως να μετατρέψω τον αλγόριθμο της matlab σε C να τα τρέξω όλα σε C να τελειώνει η υπόθεση....ουφ...

Δημοσ.
Christos75 πως το καταφερές?Εγω ακόμα να μπω στο νόημα...

Έχω κώδικεσ server-client σε C και θα πρέπει να τους μετατρέψω σε mex-files έτσι ώστε να τους τρέξω σε matlab..compiler δεν εχς βρει ακόμα..βρήκα έναν MCRinstaller που δεν νομίζω να είναι αυτό που ζητάω..σκέφτομαι μήπως να μετατρέψω τον αλγόριθμο της matlab σε C να τα τρέξω όλα σε C να τελειώνει η υπόθεση....ουφ...

 

http://www.mathworks.com/access/helpdesk/help/techdoc/apiref/bqoqnz0.html

http://cnx.org/content/m12348/latest/

http://www.mathworks.com/support/tech-notes/1600/1622.html#Call_MATLAB_from_C

http://tomopt.com/docs/standalone/tomlab_sal008.php

http://www.karenkopecky.net/Teaching/Cclass/MatlabCallsC.pdf

http://www.mathworks.com/support/tech-notes/1800/1819.html

 

Αυτά ήταν μερικά απο τα links που χρησιμοποίησα για να κάνω την δουλεια...

Δυστυχώς δεν έχω χρονο να σε βοηθήσω παραπάνω, αλλα ειμαι σιγουρος οτι στο forum του MATLAB θα βρεις αρκετά άτομα που θα σου απαντήσουν άμεσα σε ότι θες αν τα βρεις σκούρα.

 

Λίγο διάβασμα και εξάσκηση θέλει στην αρχή, αλλα δεν ειναι και τίποτα ακατόρθωτο :-D

Δημοσ.
Christos75 πως το καταφερές?Εγω ακόμα να μπω στο νόημα...

Έχω κώδικεσ server-client σε C και θα πρέπει να τους μετατρέψω σε mex-files έτσι ώστε να τους τρέξω σε matlab..compiler δεν εχς βρει ακόμα..βρήκα έναν MCRinstaller που δεν νομίζω να είναι αυτό που ζητάω..σκέφτομαι μήπως να μετατρέψω τον αλγόριθμο της matlab σε C να τα τρέξω όλα σε C να τελειώνει η υπόθεση....ουφ...

 

Δες πως μπορείς μέσα από Visual Studio ας πούμε και με C# να καλέσεις MAtlab από εδώ:

http://www.ehow.com/how_4937250_use-matlab-method-net.html

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...