2017-08-15 88 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