使用矩阵评估单元阵列

时间:2014-03-08 15:40:49

标签: matlab matrix

我有一个n乘n的单元格Z,其中Z的(i,j)分量是有序对(s,t)。

然后我有一些矩阵Y.基本上Z的每个组件都包含一个坐标,我试图找到Y的元素。换句话说,我试图返回一个由n矩阵X,其中X(i,j) )= Y(s,t)。

这是一个具体的例子:

假设n = 3,

Z = {[1 1] [2 1] [2 2];
     [1 1] [1 3] [3 3];
     [3 2] [3 1] [2 4]}

Y = [1 2 3 5;
     2 3 5 7;
     1 0 4 6]

我试图得到一个3乘3的矩阵,在这个例子中给出

[1 2 3; 
 1 3 4; 
 0 1 7]

我尝试使用Z = squeeze(num2cell(permute(cat(3,A,B),[3,1,2]),1))从另外两个矩阵A和B创建Z,但是我坚持自己的问题。

2 个答案:

答案 0 :(得分:5)

 fun = @(c) Y(c(1), c(2));
 X = cellfun(fun, Z)

答案 1 :(得分:3)

rc = vertcat(Z{:});
X = reshape(Y(sub2ind(size(Y), rc(:,1), rc(:,2))), size(Z));

这可能比@mbschenkel's answer更快,因为它可以避免cellfun