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

标签 arrays matlab matrix bsxfun

有两个矩阵,AB,大小为 m-by-4 和 n-by -4分别。我的问题是如何在 A 和 B 的每一行上应用函数 f,它将两个 1x4 向量作为输入。结果将是一个大小为 mx 的矩阵nresult 中的元素 [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

我可以使用 bsxfunarrayfun 来完成这项工作吗?

最佳答案

你可以使用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/

相关文章:

Matlab warning ('error' ) produces not enough arguments 错误

matlab - 如何将Matlab命令的输出重定向到文件?

c++ - 获取白色像素的坐标(OpenCV)

C# 进阶 String.Split

javascript - foo in bar - 'in' 运算符 javascript?

image - 如何获取旋转图像的四个角?

c++逐列构造矩阵读取列

c++ - 如何在 C++ header 中声明数组?

C编程: Initialize Array of Unions

java - 查找二维数组相对于任意位置的对角线边缘 - Java