MATLAB中一个矩阵与另一个矩阵的相加

MATLAB中一个矩阵与另一个矩阵的相加,matlab,matrix,Matlab,Matrix,我试图在MATLAB中添加一个矩阵和另一个矩阵 第一个矩阵如下所示: 0.0963928845397177 1.30250820960714 -0.830468497619261 1.40991150001902 -0.352252185662263 -1.66254297035808 -0.174775039544099 1.94368447839214 -0.480653419481013 -1.08469845223762 0.836836711417678 0.226818

我试图在MATLAB中添加一个矩阵和另一个矩阵

第一个矩阵如下所示:

0.0963928845397177  1.30250820960714
-0.830468497619261  1.40991150001902
-0.352252185662263  -1.66254297035808
-0.174775039544099  1.94368447839214
-0.480653419481013  -1.08469845223762
0.836836711417678   0.226818975021420
2.53834934138902    1.09892920248474
-1.32333425148040   0.147188752472257
0.128340263343307   2.29566581301284
-1.44237915336114   2.75255787759549
[1 2]
第二个矩阵如下所示:

0.0963928845397177  1.30250820960714
-0.830468497619261  1.40991150001902
-0.352252185662263  -1.66254297035808
-0.174775039544099  1.94368447839214
-0.480653419481013  -1.08469845223762
0.836836711417678   0.226818975021420
2.53834934138902    1.09892920248474
-1.32333425148040   0.147188752472257
0.128340263343307   2.29566581301284
-1.44237915336114   2.75255787759549
[1 2]
我想添加第二个矩阵,第一个矩阵=>表示0.0963928845397177+1和1.30250820960714+2。我想在第一列中添加1,在第二列中添加2

我所尝试的:

secondmatrix .+ firstmatrix
但是它不起作用


需要一些指导。

如果
A
是大矩阵,
B
是小矩阵,您可以编写

C = [A(:,1)+B(1) A(:,2)+B(2)];
另一种可能性是

C = A + repmat(B, [length(A) 1]);
或者,您可以复制较小的矩阵,使其大小相同,然后添加如下内容:

C = A + repmat(B,[size(A,1),1]);
试试这个

 sum_ = first_matrix + repmat(second_matrix,size(first_matrix,1),1);
你可以做任何一件事

A = ones(5,2)
B=[1,2]
C = A+repmat(B,size(A,1),1)


Matlab为您提供了一个函数,可以“对启用单例扩展的两个数组应用逐元素二进制操作”

示例代码:

result_matrix = bsxfun(@plus, firstmatrix, secondmatrix);

如果您打算在大型矩阵中使用它,为了提高效率,最好避免使用repmat。类似于
[A(:,1)+b(1)A(:,2)+b(2)]
方法。我是
bsxfun
的粉丝:

bsxfun(@plus, A, b)

将变量命名为
sum
是一种不好的做法,因为这是MATLAB中的一个函数名……感谢您在使用
length()
时指出它,因为它在
a
中的列多于行的类似情况下不起作用。我从未注意到这种行为。非常感谢。在
第二个矩阵中仅包含两个元素可能是一种过度杀伤力。对于小矩阵,它所需的时间与repmat或类似的方法相同。不管矩阵大小,它都是更干净的代码。同意更干净的代码的想法+我也是。我同意这是更干净的代码,我自己也是一个
bsxfun
粉丝。我要感谢@Divakar!在
第二个矩阵中只有两个元素可能是一种过度杀伤力。很高兴看到一个
bsxfun
风扇没错。不过,我的直觉是在任何适用的地方抛出
bsxfun
和类似的方法:)。快速测试表明,
bsxfun
对小型
A
的作用与
repmat
相同;作为
size(A,1)>1000英寸左右的
bsxfun
当然
bsxfun
会击败
repmat
获得合适大小的输入,但我的意思是它可能仍然比
C=[A(:,1)+B(1,1)A(:,2)+B(1,2)]
解决方案对我来说也是+1。我自己是一个
bsxfun
粉丝,但我不能成为
bsxfun
?:-)