2013-10-10 30 views
3

例如我喜歡做的事情,如:什麼是一些很好的方法來模擬MATLAB中的級聯索引?

A=4:20; 
find(A>5)(2) % want to access the 2nd element of the index array returned by find 
+1

我剛想到一個替代解決方案,並更新了我的答案。無論如何,這絕對不是第一次有類似的問題,但... http://blog.stackoverflow.com/2010/11/dr-strangedupe-or-how-i-learned-to-stop-worrying-和 - 愛情複製/ – chappjc

回答

3

是的,這comes upfairlydifferent contextsfrequently,和一個行的答案是subsref。對於你的情況,那就是:

subsref(find(A>5),struct('type','()','subs',{{2}})) 

更清潔的解決方案使用無證builtin

builtin('_paren',find(A>5),2) 

作爲替代醜陋的語法或無證功能,你可以定義類的小功能下面,

function outarray = nextind(inarray,inds) 
outarray = inarray(inds); 

或內聯函數:

nextind = @(v,ii) v(ii); 

並稱之爲nextind(find(A>5),2)。這比subsref更乾淨,如果你正在進行線性索引(不是下標),那麼它會更好。

+1

沒有幫助,我猜。哦,好吧 – chappjc

+0

嗯是的,我也不明白-1。我希望downvoted的人添加評論。無論如何,謝謝你的回答! –

+0

這可能是因爲重複因素......但這就是爲什麼我添加了所有鏈接和替代解決方案。 – chappjc

相關問題