考虑一维数组:y(1:20)和矩阵形式的索引集合:indx = [1,3; 7,12; 16,19]
是否有一种巧妙的方法来获得一个单元格阵列:{y(1:3),y(7:12),y(16:19)}?
使用循环很容易完成,但我很想知道一种简单而清晰的方法将索引集合传递给1D数组。
答案 0 :(得分: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