这是我的问题:
假设接下来的2个数组:
Z = [1 2; 3 6; 2 4]; Y = [1 2 3 5 2 3 5 7 1 0 4 6]
现在我想得到这样的东西:
X = {[1 2]; [3 5 2 3]; [2 3 5]}
正如你所看到的,变量“X”具有矢量“Y”的相应值,这些位置由变量Z包含。我在考虑这样的事情:
有趣= @(c)Y(c(1,1):c(1,2)); X = arrayfun(fun,Z)
但它不起作用:(,任何想法?
答案 0 :(得分:2)
X = arrayfun(@(n) Y(Z(n,1):Z(n,2)), 1:size(Z,1), 'uni', 0);
答案 1 :(得分:1)
bsxfun
方法 -
t1 = bsxfun(@times,1:numel(Y),ones(size(Z,1),1))
t2 = bsxfun(@ge,t1,Z(:,1)) & bsxfun(@le,t1,Z(:,2))
t3 = bsxfun(@times,t2,Y)
X = cellfun(@nonzeros,mat2cell(t3,ones(1,size(Z,1)),numel(Y)),'uni',0)