A = 100 x 3 matrix
B = 200 x 10 x 100 matrix
A的第2列包含B的第1维的索引。
A的第3列包含2个可能的值:0或1。
根据以下条件,我想提取B中的值。
x = find(A(:, 3) == 0);
y = find(A(:, 3) == 1);
B的第1维的索引是:
x_idx = A(x, 2);
y_idx = A(y, 2);
如何获得二维矩阵,以便:
C = B(x_idx, :, x);
D = B(y_idx, :, y);
答案 0 :(得分:0)
看看这是否适合你 -
ind1 = sub2ind(size(B), x_idx, ones(numel(x),1), x)
C = B(bsxfun(@plus,ind1,size(B,1)*[0:size(B,2)-1])') %%//'
ind2 = sub2ind(size(B), y_idx, ones(numel(y),1), y)
D = B(bsxfun(@plus,ind2,size(B,1)*[0:size(B,2)-1])')