自动转置二进制操作的向量



我知道有替代方案存在。但只是好奇地想知道。当我在两个相同大小的向量之间执行一些二进制运算(例如 *,-,/,+ 时,有时维度不匹配。例如,对于a*b,a的大小为(m,1),b的大小也是(m,1)。或者对于 a-b,a,b 的大小分别为 (m,1) 和 (1,m)。有没有办法让 matlab 自动匹配向量的维度并执行操作。

一个简单的方法是使用

a(:)-b(:)

而不是a-b.线性索引(:)将所有内容转换为列向量。

如果其中一个操作数反过来是操作的结果,例如b+c,则不能直接在 Matlab 中写入a(:)-(b+c)(:)。在这种情况下,您可以使用 reshape ,如下所示:

reshape(a,[],1) - reshape(b+c,[],1)

这是有效的,因为reshape(...,[],1)(:)一样,将其参数转换为列;但现在该参数可以是操作的结果。

最新更新