Matriz 3d: como usar pares (linha, coluna) com curinga de terceira dimensão no MATLAB?

Eu tenho uma matriz tridimensional e uma lista de pares (linha, coluna). Eu gostaria de extrair a matriz bidimensional que corresponde aos elementos nessas posições, projetados através da profundidade da matriz. Por exemplo, suponha,

>> a = rand(4, 3, 2)
a(:,:,1) =
    0.5234    0.7057    0.0282
    0.6173    0.2980    0.9041
    0.7337    0.9380    0.9639
    0.0591    0.8765    0.1693
a(:,:,2) =
    0.8803    0.2094    0.5841
    0.7151    0.9174    0.6203
    0.7914    0.7674    0.6194
    0.2009    0.2542    0.3600
>> rows = [1 4 2 1];
>> cols = [1 2 1 3];

O que eu gostaria de receber é,

0.5234    0.8765    0.6173    0.0282
0.8803    0.2542    0.7151    0.5841

talvez com alguma permutação de dimensões. Além disso, embora este exemplo tenha o curinga na última dimensão, também tenho casos em que ele está na primeira ou na segunda.

Eu tentei ingenuamentea(rows, cols, :) e tenho uma matriz 3d onde o plano diagonal é o que eu quero. Eu também encontreisub2ind, que extrairá os elementos desejados doa(:,:,1) avião. Eu poderia trabalhar com um deles para obter o que eu quero, mas estou me perguntando se existe algum método mais canônico, elegante ou eficiente que eu esteja perdendo?

Atualizar

Esta foi a solução que usei, com base na resposta postada abaixo,

sz = size(a);
subs = [repmat(rows, [1, sz(3)]);
     repmat(cols, [1, sz(3)]);
     repelem([1:sz(3)], length(rows))];
result = a(sub2ind(sz, subs(1,:), subs(2,:), subs(3,:)));

questionAnswers(1)

yourAnswerToTheQuestion