有两个矩阵,A
和 B
,大小为 m
-by-4 和 n
-by -4分别。我的问题是如何在 A 和 B 的每一行上应用函数 f
,它将两个 1x4 向量作为输入。结果将是一个大小为 m
x 的矩阵n
。 result
中的元素 [i, j] 是 f(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
我可以使用 bsxfun
或 arrayfun
来完成这项工作吗?
最佳答案
你可以使用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)).';
您当然可以将 rectint
替换为接受两个向量输入并返回数字的任何其他函数。
关于arrays - 将 bsxfun 或 arrayfun 应用于矩阵的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19896630/