2016-04-07 133 views
1

考慮一維數組:y(1:20)和矩陣形式索引的集合:indx = [1,3; 7,12; 16,19]基於另一個開始和結束索引矩陣的索引矩陣

是否有一個整潔的方式來獲得單元格數組:{y(1:3),y(7:12),y(16:19)}?

它很容易完成循環,但我很好奇知道一個簡單和更簡潔的方式來傳遞索引集合到1D數組。

回答

1

我不認爲有使用循環的方法。您可以使用arrayfun作爲簡寫,但:

arrayfun(@(from,to) y(from:to), indx(:,1), indx(:,2), 'uni', 0) 

在你的數據結果運行這

y = (1:20)*10; 
indx = [1,3;7,12;16,19]; 

celldisp(arrayfun(@(from,to) y(from:to), indx(:,1), indx(:,2), 'uni', 0)) 

ans{1} = 

    10 20 30 



ans{2} = 

    70 80 90 100 110 120 



ans{3} = 

    160 170 180 190 
+1

也許更具可讀性:'arrayfun(@(從,到)Y(來自:到),INDX (:,1),indx(:,2),'uni',0)' –

+0

@丹,它看起來不錯。我會試一試。非常感謝! –

+0

@ O'Neil是的,看起來更好。我會編輯它。 – Dan