如何在矩阵数组MATLAB中评估多个限制

时间:2014-05-29 16:23:34

标签: arrays matlab

这是我的问题:

假设接下来的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)

但它不起作用:(,任何想法?

2 个答案:

答案 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)