【Matlab学习手记】bsxfun的使用

bsxfun函数功能:矩阵A的每个元素针对矩阵B的运算。

  • 调用格式
C = bsxfun(fun,A,B)

     fun为以下函数:

  • 实例1:矩阵A的每列元素减去该列的平均值。

    一般做法,先求A的平均值,得到的结果是1*3的矩阵(按列求平均值),然后将得到的结果进行扩充,即将一行复制成三行使得维度和A保持一致,最后做减法运算。

A = [1 2 10; 1 4 20; 1 6 15]
B = A - repmat(mean(A), 3, 1)

B =
     0    -2    -5
     0     0     5
     0     2     0

    使用bsxfun函数也能得到相同的结果。

C = bsxfun(@minus, A, mean(A))

C =
     0    -2    -5
     0     0     5
     0     2     0
  • 实例2:矩阵A和矩阵B之间的减法运算(至少保证B的行数或者列数有一个和A相同)

    A的列=B的列,则A的每列元素减去B的该列元素值;

    A的行=B的行,则A的每行元素减去B的该行元素值;

    A和B维度一致,则按照A-B进行运算。

A = [1 2 10; 1 4 20;1 6 15]
B = mean(A)
C = [0 -2 -5; 0 0 5; 0 2 0]
bsxfun(@minus, A, B)
bsxfun(@minus, A, B')
bsxfun(@minus, A, C)

A =
     1     2    10
     1     4    20
     1     6    15
B =
     1     4    15
C =
     0    -2    -5
     0     0     5
     0     2     0
ans =
     0    -2    -5
     0     0     5
     0     2     0
ans =
     0     1     9
    -3     0    16
   -14    -9     0
ans =
     1     4    15
     1     4    15
     1     4    15

 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值