2014-11-05 17 views
0

从5x5矩阵减去一列矩阵所以说,我有一列矩阵A是5X1和5x5矩阵B.我想B.在MATLAB

[b1,1 - a1 b1,2 - a1 b1,3 - a1  b1,4 - a1 b1,5 - a1] 
[b2,1 - a2 ...................................................] 
[b3,1 - a3 ............ 
[b4,1 - a4 ............ 
[b5,1 - a5 ..... etc 

到subract一个从每列是,这是一个非常可怕的描述,但我希望它能得到重点。我知道在八度中它会自动做到这一点,如果你说B - 答:但在matlab它不会。

回答

4

这里有几个选项:

只是要A成5x5矩阵通过重复列:

B-repmat(A,1,size(B,2)) 

而且强制性bsxfun方法:

bsxfun(@minus,B,A) 
+1

我不会说'bsxfun'是非常强制性的,因为它比'repmat'好。但是,当然,“更好”是一个相对术语。 – TroyHaskin 2014-11-06 00:17:21

+1

@TroyHaskin它有时似乎几乎所有的Matlab问题都可以使用'bsxfun'来回答,所以它有时几乎感觉是必须的! – David 2014-11-06 00:18:48

+0

Gotcha。当然,当尝试对某些东西进行矢量化时,答案几乎总是“bsxfun”。 – TroyHaskin 2014-11-06 00:20:33

0

创建一个具有5个副本的a作为其列的矩阵,然后从B减去它:

C = B - repmat(a, 1, 5)