MATLAB实现矩阵中每一行乘以不同数的方法

额,这个题目修改了几次,还是显得拗口,还是用一个小例子来说明吧:

两个矩阵:

A=[ 3 4 6

6 5 4

6 8 6

]

B=[ 2.3 5.4 9.1]

目标是要实现:第一行,3,4,6乘以2.3;第二行的6,5,4乘以5.4;第三行的6,8,6乘以9.1。

【方法】由于每行都乘以不同的数,所以呢并不能简单的A*B,首先需要对B进行一下处理,即用repmat函数,MATLAB中给出的解释如下:

repmat - Replicate and tile array

This MATLAB function returns an n-by-n tiling of A.

B = repmat(A,n)

B = repmat(A,sz1,sz2,...,szN)

B = repmat(A,sz)

函数的用途,就是可以把一个现有的矩阵进行扩展,帮助中有许多例子,拿一个最好理解的来看:

2016-03-08_074934

对于我们的例子呢,要做的就是先将B,这个一行三列的行向量进行扩展:

B=repmat(B',1,3);
B =

2.3000 2.3000 2.3000
5.4000 5.4000 5.4000
9.1000 9.1000 9.1000

解释一下上面这句的意思,repmat(B',1,3); 就是将原来的一行三列向量变成三行一列向量后,横向不复制,竖向复制三次,就变成三行三列的矩阵了

然后呢,

C=A.*B

进行A与更新后的B点乘即可实现咱们最开始要达到的目的了

C =

6.9000   9.2000   13.8000
32.4000 27.0000 21.6000
54.6000 72.8000 54.6000

 

 

*欢迎转载,转载请标明来源:十千牛,文章地址: http://10kn.com/matlab-repmat/

欢迎关注十千牛微信公众号

说不定我这一生涓滴意念,侥幸汇成河,而且是一条大长河

2 条评论

Leave a Reply

Your email address will not be published. Required fields are marked *