【发布时间】:2014-01-09 21:13:23
【问题描述】:
我有两个看似密切相关的 matlab 问题。
-
我想找到最有效的方法(无循环?)将 (A x A) 矩阵与 3d 矩阵 (A x A x N) 的每个单个矩阵相乘。另外,我想追踪每一种产品。 http://en.wikipedia.org/wiki/Matrix_multiplication#Frobenius_product
这是内部 frobenius 产品。在我下面的蹩脚代码上,我使用的是更有效的二级定义。
-
我想将向量 (N x 1) 的每个元素与其对应的 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
【问题讨论】:
标签: matlab matrix multiplication