Apply function to every pair of columns in two matrices in MATLAB

后端 未结 2 1670
走了就别回头了
走了就别回头了 2021-01-06 20:30

In MATLAB, I\'d like to apply a function to every pair of column vectors in matrices A and B. I know there must be an efficient (non for

2条回答
  •  长发绾君心
    2021-01-06 20:57

    Try

    na = size(A,1);
    nb = size(B,1);
    newvector = bsxfun(@(j,k)(func(A(j,:),B(k,:))),1:na,(1:nb)');
    

    bsxfun performs singleton expansion on 1:na and (1:nb)'. The end result, in this case, is that func will be applied to every pair of column vectors drawn from A and B.

    Note that bsxfun can be tricky: it can require that the applied function support singleton expansion itself. In this case it will work to do the job you want.

提交回复
热议问题