mxArray in Schleife mit Werten füllen
-
Hallo.
Ich möchte gerne mein mxArraymxArray *result[1];
in einer Schleife mit Werten füllen. Ich verstehe jetzt aber nicht ganz, wie ich die Werte übergeben soll. Durch
result[0]
erhalte ich ja Zugriff auf ein ganzes Array, welches im mxArray gespeichert ist, quasi ein Array im Array? Wenn ich einen einzelnen Wert (einen 2x1-Vektor) übergebe klappt das. In jeder Schleifenfolge soll aber immer wieder ein neu berechneter 2x1-Vektor angehängt werden. Muss man da mit der Klasse "vector" arbeiten?
Und, ich möchte nicht das mxArray erweitern, also nichtmxArray *result[Gewünschte Länge]
Dann gäbs doch Schwierigkeiten, wenn man mehrere Outputs hat.
Vielen Dank schonmal.
#include <math.h> #include "mex.h" #include <string.h> void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { // Fange Fehler ab if (nrhs == 0) mexErrMsgTxt("Fehler: Keine Eingabeparameter"); // Makros für vereinfachte Eingabe #define DS_OUT plhs[0] #define p_IN prhs[0] #define t_IN prhs[1] // Definiere Zaehler, Variablen und Arrays int i; // Zähler double p_M, p_N, t_M, t_N, T_M, T_N; // Variablen mxArray *result[1]; // Arrays mxArray *arguments[3]; // Ermittle Dimensionen p_M = mxGetM(p_IN); p_N = mxGetN(p_IN); t_M = mxGetM(t_IN); t_N = mxGetN(t_IN); // Erstelle Arrays und lese Daten ein arguments[0] = mxCreateDoubleMatrix(p_M, p_N, mxREAL); arguments[1] = mxCreateDoubleMatrix(t_M, t_N, mxREAL); // result[0] = mxCreateDoubleMatrix(2, t_N, mxREAL); memcpy(mxGetPr(arguments[0]), mxGetPr(p_IN), sizeof(double)*p_M*p_N); memcpy(mxGetPr(arguments[1]), mxGetPr(t_IN), sizeof(double)*t_M*t_N); for (i = 0; i < t_N; i++) { arguments[2] = mxCreateDoubleScalar(i+1); mexCallMATLAB(1,result,3,arguments,"SchwerpunktDreieck"); // HIER MÖCHTE ICH AN RESULT IMMER WIEDER DAS NEU BERECHNETE ERGEBNIS ANHÄNGEN } // Übergebe Ergebnis DS_OUT = result[0]; return; }