首页/文章/ 详情

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

1年前浏览591

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

两个矩阵:

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)

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

对于我们的例子呢,要做的就是先将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


来源:十千牛
MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-02-25
最近编辑:1年前
长河
博士 | 黑龙江科技大... 签名征集中
获赞 8粉丝 14文章 194课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈