Matlab - Multiplicando una matriz con cada matriz de una matriz 3d

Tengo dos preguntas matlab que parecen estrechamente relacionadas.

Quiero encontrar la forma más eficiente (¿sin bucle?) Para multiplicar una matriz (A x A) con cada matriz única de una matriz 3d (A x A x N). Además, me gustaría tomar el rastro de cada uno de esos productos.http://en.wikipedia.org/wiki/Matrix_multiplication#Frobenius_product

Este es el producto interno de Frobenius. En el código de mierda que tengo debajo, estoy usando su definición secundaria que es más eficiente.

Quiero multiplicar cada elemento de un vector (N x 1) con su matriz "correspondiente" de una matriz 3d (A x A x N).

function Y_returned = problem_1(X_matrix, weight_matrix)

% X_matrix is the randn(50, 50, 2000) matrix
% weight_matrix is the randn(50, 50) matrix

[~, ~, number_of_matries] = size(X_matrix);
Y_returned = zeros(number_of_matries, 1);
for i = 1:number_of_matries
%     Y_returned(i) = trace(X_matrix(:,:,i) * weight_matrix');
    temp1 = X_matrix(:,:,i)';
    temp2 = weight_matrix';
    Y_returned(i) =  temp1(:)' * temp2(:);
end
end


function output = problem_2(vector, matrix)

% matrix is the randn(50, 50, 2000) matrix
% vector is the randn(2000, 1) vector

[n1, n2, number_of_matries] = size(matrix);
output = zeros(n1, n2, number_of_matries);
for i = 1:number_of_matries
    output(:, :, i) = vector(i) .* matrix(:, :, i);
end
output = sum(output, 3);

end

Respuestas a la pregunta(1)

Su respuesta a la pregunta