我知道存在替代方案。但只是好奇才知道。当我在两个相同大小的向量之间执行某些二元运算(如*, - ,/,+)时,有些维度不匹配。例如,a * b a的大小为(m,1),b的大小(m,1)。或者对于a-b,a,b的大小分别为(m,1)和(1,m)。有没有一种方法可以让matlab自动匹配向量的维度并执行操作。
答案 0 :(得分:7)
一种简单的方法是使用
a(:)-b(:)
而不是a-b
。线性索引(:)
将所有内容都转换为列向量。
如果其中一个操作数依次是操作的结果,例如b+c
,则无法在Matlab中直接编写a(:)-(b+c)(:)
。在这种情况下,您可以使用reshape
,如下所示:
reshape(a,[],1) - reshape(b+c,[],1)
这是有效的,因为reshape(...,[],1)
与(:)
一样,将其参数转换为列;但现在这个论点可能是一个操作的结果。