• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 17, 2025, 19:53:29 pm

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 17, 2025, 19:53:29 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Πρακτική Άσκηση ΤΗΜΜΥ 201...
by chris_p30
[Today at 19:46:54]

Ισραήλ - Ιράν: Πόλεμος στ...
by Yamal
[Today at 19:07:04]

[Γραφική] Λυμένα θέματα
by okanpala
[Today at 18:56:22]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[Today at 14:25:00]

Αντικατάστασης πυκνωτή σε...
by george14
[Today at 13:58:20]

Πότε θα βγει το μάθημα; -...
by tzortzis
[Today at 13:19:53]

Αποτελέσματα Εξεταστικής ...
by george14
[Today at 12:08:25]

[ΨEE] Γενικές απορίες και...
by Juror8
[Today at 12:06:57]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by Λαμπτήρας
[June 16, 2025, 15:55:08 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]

Ρυθμίσεις Θεμάτων της Ανώ...
by el mariachi
[June 14, 2025, 11:56:45 am]
Στατιστικά
Members
Total Members: 9961
Latest: Poli
Stats
Total Posts: 1426694
Total Topics: 31710
Online Today: 224
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 72
Guests: 132
Total: 204
Ioannakoliou
Paschalina.S
sosak
George15
rafa98p
akpapako
pantoc
vevi
xristodoulou
nikoskaza
Zoe06
koskyr
MASV
Eleniiii
Bill g
antontsiorvas
ellimoschou
chris_p30
gksp
elias_farhood
pave
bougatsa
hevidis3524
tzortzis
trelogauros7
gpapmtb
chrysa.tsilika
kpapama
Joaakim
kstavroulis
christina02
xarisagraf
kkotsopo
george14
Cersei Tsoulannister
redwolf
dkoukn
Ariadni
Elenit
statiris
kalantzopoulos
bsp
mpournaz
dimitrisif
kokkinosgior
soktas
evangeliaap
gianst
fpapat
lapin
MarakiT
tasos potsakis
Χρήστος Κίτσος
user182
Sofiana
Athinaaz
telhs
anastas1a
makis1941
dem05
GeorgeChri
artemissamaras_
spoun
Sanaia
gianniss
evitzv
gstom
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Για ανανέωση (ή προσθήκη νέου) avatar, πρέπει η μεγαλύτερη διάσταση της εικόνας να είναι 110 pixels.
THMMY.gr > Forum > Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα > Περί Υπολογιστών... > Software > Προγραμματισμός (C, VB, Delphi, PHP, ASP...) > C / C++ / C# (Moderators: chatzikys, PolarBear) > κλήση ρουτίνας σε C μέσα από Matlab
0 Members and 1 Guest are viewing this topic.
Pages: [1] Go Down Print
Author Topic: κλήση ρουτίνας σε C μέσα από Matlab  (Read 1198 times)
snake5
Καταξιωμένος/Καταξιωμένη
***
Posts: 229


just try to COD me...


View Profile
κλήση ρουτίνας σε C μέσα από Matlab
« on: February 12, 2007, 22:45:07 pm »

γεια χαρά,
έχει προσπαθήσει κανενας να καλέσει ρουτίνα σε C μέσα απ το Matlab?
Το πρόβλημά μου είναι ότι γράφω ένα πρόγραμμα σε C,η κλήση του γίνεται κανονικά από περιβάλλον Matlab,μου επιστρέφει κανονικά τις εξόδους που θέλω αλλά αργεί αρκετά.
Ο κώδικάς μου αποτελείται από τρία nested for loops που τρέχουν το εξωτερικό για κάποιες χιλιάδες φορές,το μεσαίο  γύρω στις 200 και το εσωτερικό γύρω στις 500.Ενδιάμεσα γίνονται κάποιοι υπολογισμοί και συγκρίσεις με double τιμές.

Εξαρχής βάζω την C στο παιχνίδι γιατί πολύ απλά αυτό που θέλω να κάνω δεν μπορεί να τρέξει καν στο Matlab (κολλάει ανεπανόρθωτα..).Με προβληματίζει όμως ότι ο αντίστοιχος κώδικας σε Java πχ νομίζω ότι θα έτρεχε άνετα και χωρίς καμία καθυστέρηση.Έχει κανείς καμιά ιδέα τί μπορεί να γίνεται με τη χρήση της μνήμης σε αυτή την περίπτωση?Απ'ότι διάβασα,υπάρχει ένα θέμα χειρισμού της heap περιοχής της μνήμης και της stack όταν πας να συνδέσεις C κώδικα με το interface του Matlab.Μου φαίνεται ότι το τελευταίο είναι που κάνει όλη τη ζημιά γιατί ο απλός κώδικας σε C δε κολώνει με for loops...

Thx
Logged
Netgull
Veteran
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1364


View Profile
Re: κλήση ρουτίνας σε C μέσα από Matlab
« Reply #1 on: February 13, 2007, 01:45:08 am »

Τα loops σου είναι στο Matlab ή στη C;
Αν είναι στο Matlab φρόντισε να αρχικοποιείς όλους τους πίνακες που χρησιμοποιείς πριν το loop.
Logged


Μου λες να βάλω τη ζωή μου σε μια τάξη, μα ποιος στ' αλήθεια ορίζει την τροχιά του; Η αταξία είναι τ' ουρανού η τάξη, και γω ανασταίνομαι στο γύρο του θανάτου...

                        Μην αμφιβάλλεις
γι αυτόν
που σου λέει
πως φοβάται

               να φοβάσαι όμως
αυτόν
που σου λέει
πως δεν αμφιβάλλει.

Aime moi moins, mais aime moi longtemps
snake5
Καταξιωμένος/Καταξιωμένη
***
Posts: 229


just try to COD me...


View Profile
Re: κλήση ρουτίνας σε C μέσα από Matlab
« Reply #2 on: February 13, 2007, 02:30:00 am »

Όχι,όλα σε C εκτελούνται
Logged
TheDoctor
Νεούλης/Νεούλα
*
Posts: 39


View Profile
Re: κλήση ρουτίνας σε C μέσα από Matlab
« Reply #3 on: February 17, 2007, 13:10:59 pm »

Ελπίζω να χρειάζεσαι ακόμα αυτή τη λύση γιατί είναι μακροσκελής και θα είναι κρίμα να την γράφω τζάμπα...

Για να τρέξεις από το matlab κώδικα C χρειάζεται να βάλεις τον κώδικά σου σε ένα DLL. Το Dll αυτό θα πρέπει να κάνει export μια μόνο συναρτηση που θα λέγεται mexFunction και θα συντάσσεται ως εξής:

void mexFunction(int nlhs, mxArray *plhs[], int nrhs,const mxArray *prhs[]);

   η παράμετρος nlhs σημαίνει number of left hand side arguments, και είναι το πόσα αποτελέσματα περιμένει το matlab από εσένα. Τα αποτελέσματα θα πρέπει να τα βάλεις στον πίνακα *plhs[] όπως θα φανεί στο παρακάτω παράδειγμα.
   Η παράμετρος nrhs σημαίνει number of right hand side arguments και είναι το πόσες παραμέτρους έδωσε ο χρήστης. Οι παράμετροι αυτοί υπάρχουν στον πίνακα *prhs[]

   Εσύ τώρα πρέπει να δείς άν τα δεδομένα είναι όσα θέλεις και του τύπου που θέλεις, να δείς αν τα αποτελέσματα είναι αυτά που θέλεις, και μετά να κάνεις τις πράξεις σου.
   Για να αποκτήσεις πρόσβαση στα δεδομένα που σου έρχονται από το matlab χρησιμοποιείς τη συνάρτηση mxGetPr που σου δίνει έναν double pointer στα δεδομένα. Για να δείς τις διαστάσεις του πίνακα χρησιμοποιείς τις συναρτήσεις mxGetΜ και mxGetN.

Ένα παράδειγμα συνάρτησης φαίνεται παρακάτω :

void
mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
    int        i;
       
    /* Βλέπει πόσες παράμετρους έδωσε ο χρήστης. */
    mexPrintf("\n Yparxoun %d parametroi ", nrhs);
   
    /* Βλέπει πόσα αποτελέσματα ζήτησε ο χρήστης */
    mexPrintf("\n\nYparxoun %d apotelesmata\n", nlhs);
   
    for (i=0; i<nlhs; i++)  {
   plhs=mxCreateDoubleMatrix(1,1,mxREAL);
   *mxGetPr(plhs)=42;
/* Βάζει σε όλες τις εξόδους το 42 (Douglas Adams, Hitchhiker's Guide to the galaxy, Η απάντηση στο πιο σύνθετο ερώτημα του σύμπαντος*/
    }
}

στο C αρχείο κάνεις include to "mex.h" που σου δίνει πρόσβαση στις συναρτήσεις αυτές.
Το compile πρέπει να γίνει μέσω της εντολής mex του matlab η οποία κανονίζει τα σύνθετα πράγματα του να κάνεις dll exports και λοιπά γράφοντας απλά

mex myFile.c

enjoy!

Κώστας Πανούλας
Logged
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
Re: κλήση ρουτίνας σε C μέσα από Matlab
« Reply #4 on: February 17, 2007, 13:48:15 pm »

Μην ανησυχείς γιατρέ.
Ακόμη και εάν το Φίδι5 έλυσε το πρόβλημά του,
σίγουρα το ποστ σου δεν θα πάει χαμένο
γιατί θα το χρησιμοποιήσει κάποιος άλλος που θα έχει
το συγκεκριμένο πρόβλημα.
Αυτή ειναι η δύναμη του γραπτου (και δημοσιευμένου) λόγου
Logged

http://www.mozilla.org/en-US/firefox/new/
snake5
Καταξιωμένος/Καταξιωμένη
***
Posts: 229


just try to COD me...


View Profile
Re: κλήση ρουτίνας σε C μέσα από Matlab
« Reply #5 on: February 17, 2007, 16:58:23 pm »

Πανούλα,όντως μπράβο,καλή δουλειά αλλά τη δουλειά την έκανα...
είχα υπερεκτιμήσει τις δυνατότητες της C.Έδιωξα ένα for και από τριπλό το έκανα διπλό και πάει
σφαίρα.Πάντως νομίζω είναι πολύ χρήσιμη φάση τα mex files γιατί άμα θες να κάνεις
χοντρές δουλειές και θες να είσαι σε περιβάλλον Matlab,είναι ο μόνος τρόπος να ξεφύγεις
από τον interpreted χαρακτήρα του τελευταίου και να μην περιμένεις με τις μέρες για
να δεις έξοδο από τη δυνάρτησή σου...

Μπράβο once more
Logged
Pages: [1] Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...