Matriz 3d: ¿cómo usar pares (fila, columna) con comodín de tercera dimensión en MATLAB?

Tengo una matriz tridimensional y una lista de pares (fila, columna). Me gustaría extraer la matriz bidimensional que corresponde a los elementos en esas posiciones, proyectados a través de la profundidad de la matriz. Por ejemplo, supongamos que

>> 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];

Lo que me gustaría obtener es

0.5234    0.8765    0.6173    0.0282
0.8803    0.2542    0.7151    0.5841

quizás con alguna permutación de dimensiones. Además, aunque este ejemplo tiene el comodín en la última dimensión, también tengo casos en los que está en la primera o segunda.

Intenté ingenuamentea(rows, cols, :) y obtuve una matriz 3d donde el plano diagonal es lo que quiero. Yo tambien encontresub2ind, que extraerá los elementos deseados dela(:,:,1) avión. Podría trabajar con uno de estos para obtener lo que quiero, pero me pregunto si hay un método más canónico, elegante o eficiente que me falta.

Actualizar

Esta fue la solución que utilicé, según la respuesta publicada a continuación,

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,:)));

Respuestas a la pregunta(1)

Su respuesta a la pregunta