有 bsxfun 之类的功能:http: //www.mathworks.com/help/techdoc/ref/bsxfun.html但是它在逐个元素模式下工作。我想要在逐个向量模式下(以及标量输出)工作的类似函数。
作为说明,我会尝试以这种方式在这里使用 bsxfun。作为内部函数,我将使用(这只是一个示例)向量的点积。
function f = foo(a,b), f=a'*b; printf("called\n");, end
上面的虚拟函数foo
需要 2 个向量,结果是标量。每次调用它时,我们都会看到一条消息。
bsxfun(@foo,[2;3],[1 5;4 3])
结果是:
called
called
ans =
14 19
0 0
所以,两个调用(很好),但是我们得到了一个矩阵,而不是一个向量(一对 2 个标量)。可以说,在这种情况下只获得第一行就足够了,因为矩阵是由 bsxfun 预先创建的,其余的将始终为零。
但情况并非总是如此——有时我得到了一些实际值,而不仅仅是零——而且恐怕会涉及到一些副作用(上面的点积是最简单的例子)。
问题
那么,是否有一个类似于 bsxfun 的函数,但它获取向量并期望每个向量的每个操作都有一个标量?