
Ένας ερευνητής έχει δημιουργήσει μια μικρή προσομοίωση σε MATLAB και θέλουμε να γίνει προσιτό σε άλλους. Το σχέδιό μου είναι να πάρει την προσομοίωση, να καθαρίσει μερικά πράγματα και να το μετατρέψει σε ένα σύνολο λειτουργιών. Στη συνέχεια σκοπεύω να το υπολογίσουν σε μια βιβλιοθήκη C και χρησιμοποιήστε SWIG για να δημιουργήσετε ένα περιτύλιγμα Python. Σε αυτό το σημείο θα πρέπει να είναι σε θέση να καλέσει την προσομοίωση από ένα μικρό app Django. Τουλάχιστον έτσι ελπίζω.


Έχω το σωστό σχέδιο; Έχει κάποιος άλλος κάνει κάτι παρόμοιο; Μπορείτε να μου πείτε αν υπάρχουν σοβαρές παγίδες που δεν γνωρίζω αυτή τη στιγμή;

 
Υπάρχει κάποιος που έχει εμπειρία δημιουργώντας μια κοινή βιβλιοθήκη σε MATLAB;
===============================================================================



Δεν θα βοηθήσει πολύ, αλλά θυμάμαι ότι ήμουν σε θέση να τυλίξετε μια προσομοίωση MATLAB σε DLL και στη συνέχεια να το ονομάσουμε από την εφαρμογή τους Δελφούς. Δούλεψε πολύ καλά.

 

Ίσως να δοκιμάσετε [ctypes](http://python.net/crew/theller/ctypes/) αντί SWIG. Αν έχει συμπεριληφθεί ως μέρος της Python 2.5, τότε θα πρέπει να είναι καλό :-)

 

Θα ήθελα επίσης να δοκιμάσετε πρώτα ctypes. 


1. Χρησιμοποιήστε το μεταγλωττιστή Matlab για τη σύνταξη του κώδικα σε C.
2. Μεταγλωττίστε τον κώδικα C σε ένα DLL.
3. Χρησιμοποιήστε ctypes να φορτώσει και να καλέσει τον κωδικό από αυτό το DLL


Το πιο δύσκολο βήμα είναι πιθανώς 1, αλλά αν ήδη γνωρίζετε Matlab και έχουν χρησιμοποιήσει τον compiler Matlab, δεν πρέπει να έχετε σοβαρά προβλήματα με αυτό.

 

Ένα πράγμα που πρέπει να θυμόμαστε είναι ότι ο compiler Matlab δεν συγκεντρώνει στην πραγματικότητα τον κωδικό Matlab στη μητρική οδηγίες της μηχανής. Είναι απλά τυλίγει σε ένα αυτόνομο εκτελέσιμο ή μια βιβλιοθήκη με τη δική του μηχανή χρόνου εκτέλεσης του που τρέχει. Θα είναι σε θέση να εκτελέσει κώδικα σας χωρίς Matlab εγκατασταθεί, και θα είναι σε θέση να το διασυνδέσει με άλλες γλώσσες, αλλά θα εξακολουθεί να ερμηνευθεί κώδικα Matlab, οπότε δεν θα υπάρχει επιτάχυνση.

 