3
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);
4

1 回答 1

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])')
于 2014-05-03T11:27:34.683 回答