Nic*_*ick 8 matlab vectorization matrix-multiplication bsxfun
我是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)
您始终可以自己编写循环:
A = rand(2,3);
B = rand(3,4);
op = @times; %# use your own function here
C = zeros(size(A,1),size(B,2));
for i=1:size(A,1)
for j=1:size(B,2)
for k=1:size(A,2)
C(i,j) = C(i,j) + op(A(i,k),B(k,j));
end
end
end
isequal(C,A*B)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |