i具有n个单元z,其中z的(i,j)分量是有序对(s,t)。
i然后有一些矩阵y。基本上z的每个组件都包含一个坐标,我正在尝试找到y的元素。换句话说,我试图通过n矩阵x返回n n矩阵x,其中x(i,j(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(cat(3,a,b),[3,1,2]),1))从其他两个矩阵A和B创建Z,但是我陷入了我的问题。
fun = @(c) Y(c(1), c(2));
X = cellfun(fun, Z)
rc = vertcat(Z{:});
X = reshape(Y(sub2ind(size(Y), rc(:,1), rc(:,2))), size(Z));
这可能比 @mbschenkel的答案快,因为它避免了cellfun
。