用于二进制运算的向量的自动转置

时间:2013-11-12 16:51:20

标签: matlab

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

1 个答案:

答案 0 :(得分:7)

一种简单的方法是使用

a(:)-b(:)

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

如果其中一个操作数依次是操作的结果,例如b+c,则无法在Matlab中直接编写a(:)-(b+c)(:)。在这种情况下,您可以使用reshape,如下所示:

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

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