2010-05-19 17 views
3

Je voudrais passer un vecteur de chaînes de C++ à matlab. J'ai essayé d'utiliser les fonctions disponibles telles que mxCreateCharMatrixFromStrings mais cela ne me donne pas le bon comportement.Comment créer un tableau de chaînes dans matlab?

Alors, j'ai quelque chose comme ceci:

void mexFunction(
    int nlhs, mxArray *plhs[], 
    int nrhs, const mxArray *prhs[]) 
{ 
    vector<string> stringVector; 
    stringVector.push_back("string 1"); 
    stringVector.push_back("string 2"); 
    //etc... 

Le problème est de savoir comment puis-je obtenir ce vecteur à l'environnement Matlab?

plhs[0] = ??? 

Mon objectif est d'être en mesure d'exécuter:

>> [strings] = MyFunc(...) 
>> strings(1) = 'string 1' 

Répondre

5

Enregistrement d'un vecteur de chaînes comme une matrice char exige que toutes vos chaînes sont de la même longueur et ils sont stockés jointive dans Mémoire. La meilleure façon de stocker un tableau de chaînes dans MATLAB est d'utiliser un tableau de cellules. Essayez d'utiliser mxCreateCellArray, mxSetCell et mxGetCell. Sous le capot, les tableaux de cellules sont essentiellement un tableau de pointeurs vers d'autres objets, tableaux de char, matrices, autres tableaux de cellules, etc.

+0

qui a travaillé ... jusqu'à présent. Merci. – aduric