代码之家  ›  专栏  ›  技术社区  ›  packetie

oactve:根据简单条件修改每个元素

  •  0
  • packetie  · 技术社区  · 7 年前

    新的八度音阶。

    我有一个矩阵X,希望将所有元素(作为数字)更改如下:如果元素的值大于10,请将其更改为10,否则,请保持相同的值。

    理论上,我可以做两个循环并遍历每个元素。想知道是否有一种简单的方法可以做到这一点。

    2 回复  |  直到 7 年前
        1
  •  6
  •   horchler    7 年前

    这可以通过 logical indexing :

    A(A>10) = 10;
    

    另一种选择是使用 min 功能:

    A = min(A,10);
    
        2
  •  0
  •   syntagma    7 年前

    编辑:

    我想惯用的方法是 logical indexing :

    A(A>10)=10
    

    使用 Function Application ( @arrayfun ) :

    > A=[10, 20, 30; 9, 13, 8]
    > arrayfun (@(x) ifelse (x>10, 10, x), A)
    ans =
    
       10   10   10
        9   10    8