假设我有一个AxBxC矩阵X 和一个BxD矩阵Y.
是否有一种非循环方法,通过它我可以将每个C AxB矩阵与Y?
我是MATLAB的新手.M×K矩阵乘以K×N矩阵的正规矩阵乘法C = A * B- 具有c_ij = sum(a_ik * b_kj, k = 1:K).如果我希望将其替换c_ij = sum(op(a_ik, b_kj), k = 1:K)为一些简单的二进制操作,该op怎么办?有没有什么好的方法可以在MATLAB(或者甚至是内置函数)中对它进行矢量化?
编辑:这是我能做的最好的.
% A is M x K, B is K x N
% op is min
C = zeros(M, N);
for i = 1:M:
C(i, :) = sum(bsxfun(@min, A(i, :)', B));
end
Run Code Online (Sandbox Code Playgroud) 我有n组,每组有m个维数为d的向量.这些由ad*m*n矩阵A表示.
我有n个维数为d的向量,由ad*n矩阵B表示.
现在我想通过B中相应的向量i减去组i中的所有m个向量(我对所有i = 1,...,n都这样做).
这可以简单地完成:
C = zeros(size(A));
for i = 1:n
for j = 1:m
C(:,j,i) = A(:,j,i) - B(:,i);
end
end
Run Code Online (Sandbox Code Playgroud)
但是,由于循环,这非常慢.有人可以建议我这么快的方法吗?
预先感谢您的帮助.
matlab matrix linear-algebra vectorization multidimensional-array