2017-08-15 5 views
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 

Répondre

2

Voulez-vous dire:

[~,firstParent] = fileparts ('D:\TRAIN_DATA\OBSTACLES\DOF') 
+0

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}; ' –

+2

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

+2

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