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

 

 

长河

在曾经的博客时代,是“首个桥隧工程领域独立博主”,目前是一名默默耕耘的普通高校教师。一家之言,仅供参考,未必成熟、绝不权威。

相关推荐

2 条评论

  1. mm

    错了吧,应该是 C = A*B 吧,

    • @mm 没错的,计算结果刚好就是想要达到的目标

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。