将bsxfun或arrayfun应用于矩阵的每一行

Fih*_*hop 5 arrays matlab matrix bsxfun

有两个矩阵,AB用尺寸m-by-4和n分别-by-4.我的问题是如何在fA和B的每一行上应用一个函数,它将两个1x4向量作为输入.结果将是一个大小为mx 的矩阵n.元素[I,J]中resultf(A(i, :), B(j, :)).

例如:

A = rand(3, 4);
B = rand(5, 4);
for i = 1 : 3
    for j = 1 : 5
        result(i, j) = rectint(A(i, :), B(j, :));
    end
end
Run Code Online (Sandbox Code Playgroud)

我可以使用bsxfunarrayfun做这项工作吗?

Lui*_*ndo 7

arrayfun如果您第一次使用meshgrid生成所有行组合,则可以使用:

[ii jj] = meshgrid(1:size(A,1),1:size(B,1));
result = arrayfun(@(n) rectint( A(ii(n),:), B(jj(n),:) ), 1:numel(ii) );
result = reshape(result, size(B,1), size(A,1)).';
Run Code Online (Sandbox Code Playgroud)

您当然可以rectint通过接受两个向量输入并返回数字的任何其他函数替换.