2017-08-15 45 views
0

我有一个路径(最后没有文件名)作为一个字符串在Matlab中,我想接收第一个父目录(最后一个文件分隔符字符后的目录)。
目前,我正在做这样的:如何使用从函数直接返回的单元格数组?

>>filePath = 'D:\TRAIN_DATA\OBSTACLES\DOF'; 
>>firstParent = strsplit(filePath , filesep); 
>>firstParent = firstParent{end}; 
>>disp(firstParent); 
DOF 


有什么办法,我可以使用strsplit的返回值(一个单元阵列),而它assinging给一个变量第一?
喜欢的东西:

>>filePath = 'D:\TRAIN_DATA\OBSTACLES\DOF'; 
>>firstParent = (strsplit(filePath , filesep)){end}; 
>>disp(firstParent); 
DOF 

回答

2

你的意思是:

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

是的,这解决了具体的例子我给我的问题。我可以用这个语句接收第一个父目录。 但在我的代码中还有其他这个问题的例子,我实际上试图得到答案。 我可以得到n。 'nThElement = aFunctionThatReturnsACellArray();:;' 不像 'nThElement = aFunctionThatReturnsACellArray(){N}:一个单元阵列的元件从函数返回等 nThElement = nThElement {n};' –

+2

对于一般情况,我不知道有什么_elegant_方法可以在不使用中间变量的情况下做到这一点,但有[很多丑陋或未公开的方式](https:/ /stackoverflow.com/questions/3627107/how-can-i-index-a-matlab-array-returned-by-a-function-without-first-assigning-it)例如使用'subsref','getfield'或中间功能。 – Tom

+2

没有优雅的方法,它不是MATLAB语言的一个特性,如果使用的话,括号'()'必须在语句的结尾。这在Octave中是可以实现的,但这是另一种蠕虫。 – Wolfie