WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

mex read_array

 

Kathrin

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2009, 11:46     Titel: mex read_array
  Antworten mit Zitat      
Hallo,
ich habe ein eindimensionales array zum auslesen in meiner mex-Funktion. Innerhalb der mex-Funktion klappt alles wunderbar! Dieses Auslesen möchte ich nun gerne in eine Funktion auslagern. Habe mir hierzu schon folgende Funktion geschrieben:

Code:
void mex_read_array(mxArray *data, int array[10])
{
   int i;
   int *ptr;
   
   ptr = mxGetPr(data);    

   for (i = 0; i < 10; i++)
   {
      array[i] = ptr[i];
   }

   return;
}


Aufgerufen wir die Funktion so:
Code:
int array[10];
mex_read_array((mxArray *)prhs[0], array);


Das Feld wird irgendwie nicht richtig gefüllt? Ich vermute, dass ich die Paremeter fasch übergebe, da der Code innerhalb der Mex-funktion ja funktioniert. Und

Wäre super, wenn mir jemand helfen kann!
Danke schonmal!

LG, Kathrin


Lucia
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 14.05.2009, 12:05     Titel:
  Antworten mit Zitat      
Hallo Kathrin, das könnte an
Code:
double *mxGetPr(const mxArray *pm);
liegen, bei dir ist da ein int. Probier mal
Code:

Viele Grüße, Lucia
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2009, 12:55     Titel:
  Antworten mit Zitat      
Hallo Lucia,

das habe ich auch schon probiert, aber daran liegt es leider auch nicht Sad

LG, Kathrin
 
Lucia
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 14.05.2009, 14:02     Titel:
  Antworten mit Zitat      
hab's ausprobiert, bei mir funktioniert's so:
Code:
#include "mex.h"

void mex_read_array(mxArray *data, int array[10]) {    
    int i;
    double *ptr;    
    ptr = mxGetPr(data);
    for (i = 0; i < 10; i++) {
        array[i] = ptr[i];
    }
    return;
}

void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) {
    int array[10];
    mex_read_array((mxArray *)prhs[0], array);
    for (int i = 0; i < 10; i++) {
        printf("%i\n", array[i]);
    }    
    return ;    
}
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.