我知道有替代方案存在。但只是好奇地想知道。当我在两个相同大小的向量之间执行一些二进制运算(例如 *,-,/,+ 时,有时维度不匹配。例如,对于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)
和(:)
一样,将其参数转换为列;但现在该参数可以是操作的结果。