0
J'ai un chemin (sans nom de fichier à la fin) sous forme de chaîne dans Matlab et je veux recevoir le premier répertoire parent (le répertoire après le dernier caractère séparateur de fichiers).
Au moment que je fais comme ça:Comment utiliser une matrice de cellules renvoyée directement à partir d'une fonction?
>>filePath = 'D:\TRAIN_DATA\OBSTACLES\DOF';
>>firstParent = strsplit(filePath , filesep);
>>firstParent = firstParent{end};
>>disp(firstParent);
DOF
Est-il possible que je peux utiliser la valeur de retour de StrSplit (un réseau de cellules) sans assinging à une variable d'abord?
Quelque chose comme:
>>filePath = 'D:\TRAIN_DATA\OBSTACLES\DOF';
>>firstParent = (strsplit(filePath , filesep)){end};
>>disp(firstParent);
DOF
Oui cela résout l'exemple spécifique j'ai donné à ma question. Je peux recevoir le premier répertoire parent avec cette instruction. Mais il y a d'autres exemples de ce problème dans mon code que j'essaie d'obtenir la réponse. Puis-je obtenir le n. élément d'un réseau de cellules de retour d'une fonction telle que: 'nThElement = aFunctionThatReturnsACellArray() {n};' Pas comme: 'nThElement = aFunctionThatReturnsACellArray(); nThElement = nThElement {n}; ' –
Pour le cas général, je ne connais aucun moyen _elegant_ de le faire sans utiliser une variable intermédiaire, mais il existe [un certain nombre de façons laides ou non documentées] (https://stackoverflow.com/questions/3627107/how-can-i-index-a-matlab-array-returned-by-a-function-without-first-assigning-it) comme en utilisant 'subsref',' getfield' ou fonctions intermédiaires. – Tom
Il n'y a pas de manière élégante, ce n'est pas une caractéristique du langage MATLAB, les parenthèses '()' doivent être à la fin d'une instruction si elles sont utilisées. C'est possible dans Octave, mais c'est une autre boîte de Pandore. – Wolfie