数组扩展的二元运算,在 MATLAB 里用得顺手的一个工具就是 BAXFUN。嗯,说白了,它就是把 BSXFUN 的功能做得更灵活一些,支持你搞更复杂的数组扩展操作。你只需要传一个函数句柄,比如 @plus@times,两个数组直接上,它会自动帮你维度上的对齐问题。

启用 数组扩展(AX) 的操作也比较简单,加两个参数 SHIFTASHIFTB,你可以控制数组在维度上的“左移”或“右移”。这在高维数据时有用,是矩阵广播不太够用的时候,能省不少 reshape 的麻烦。

这个函数其实是 ArrayLab 工具箱 里的一个小工具,跟 MULTIPROD 和向量代数工具一起搭配用,效果挺不错。要注意的是,它只适用于 MATLAB R2007a 及以上版本。

如果你常常跟多维数组打交道,或者对矩阵操作精度要求比较高,那 BAXFUN 还蛮值得你拿来玩玩的。想更深入理解可以看看这些资料:矩阵逐元素运算教程数组运算详解,都有蛮实用的例子。

小提醒:BAXFUNBSXFUN 类似,但别混用。如果你已经在用后者,迁移其实也不难,语法上兼容性还不错。