5

有两个矩阵,A大小B分别为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

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

4

2 回答 2

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)).';

您当然可以rectint用任何其他接受两个向量输入并返回一个数字的函数来替代。

于 2013-11-10T23:42:06.153 回答
2

此功能内置于rectint. 对于语法rectint(A,B)

AB可以是矩阵,其中每一行是一个位置向量。 AREA然后是一个矩阵,给出由 指定的所有矩形与 指定的所有矩形的A交集B。也就是说,如果AM-by-4BN-by-4,那么AREA是一个M-by-N矩阵...

所以,你可以做得到result = rectint(A,B);你所追求的矩阵。

于 2013-11-11T09:36:08.603 回答