【问题标题】:Subtracting a single column matrix from a 5x5 matrix in matlab从matlab中的5x5矩阵中减去单列矩阵
【发布时间】:2014-11-05 23:56:12
【问题描述】:

假设我有一个 5x1 的列矩阵 A 和一个 5x5 的矩阵 B。我想从 B 中的每一列中减去 A。

[b1,1 - a1   b1,2 - a1    b1,3 - a1     b1,4 - a1    b1,5 - a1]
[b2,1 - a2 ...................................................]
[b3,1 - a3 ............ 
[b4,1 - a4 ............
[b5,1 - a5 ..... etc

是的,这是一个非常糟糕的描述,但我希望它能够传达重点。我知道如果你说 B - A,在八度音程中它会自动执行此操作。但在 matlab 中它不会。

【问题讨论】:

    标签: matlab matrix subtraction


    【解决方案1】:

    这里有几个选项:

    只需通过重复列将A 变成一个 5x5 矩阵:

    B-repmat(A,1,size(B,2))
    

    以及强制的bsxfun 方法:

    bsxfun(@minus,B,A)
    

    【讨论】:

    • 我不会说bsxfunrepmat 更好。但当然,“更好”是一个相对术语。
    • @TroyHaskin 有时似乎几乎所有的 Matlab 问题都可以使用bsxfun 来回答,所以有时这几乎是强制性的!
    • 明白了。当然,当尝试向量化某些东西时,答案几乎总是bsxfun
    • @David 同意最后一条评论!! ;)
    【解决方案2】:

    创建一个矩阵,将a 的5 个副本作为其列,然后从B 中减去它:

    C = B - repmat(a, 1, 5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多