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

Ram*_*nan 1 matlab

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

Lui*_*ndo 7

一种简单的方法是使用

a(:)-b(:)
Run Code Online (Sandbox Code Playgroud)

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

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

reshape(a,[],1) - reshape(b+c,[],1)
Run Code Online (Sandbox Code Playgroud)

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