1

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

4

1 回答 1

7

一个简单的方法是使用

a(:)-b(:)

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

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

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

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

于 2013-11-12T16:56:23.310 回答