在MATLAB中将函数应用于两个矩阵中的每对列

sru*_*bin 3 matlab

在MATLAB中,我想将函数应用于矩阵A和中的每对列向量B.我知道必须有一种有效的(非for)方式来做到这一点,但我无法弄明白.该函数将输出标量.

小智 7

尝试

na = size(A,1);
nb = size(B,1);
newvector = bsxfun(@(j,k)(func(A(j,:),B(k,:))),1:na,(1:nb)');
Run Code Online (Sandbox Code Playgroud)

bsxfun在1:na和(1:nb)'上执行单例扩展.在这种情况下,最终结果是func将应用于从A和B绘制的每对列向量.

请注意,bsxfun可能很棘手:它可能要求应用的函数本身支持单例扩展.在这种情况下,它可以完成你想要的工作.