如果满足某些条件,如何更改矩阵的元素?

时间:2019-02-14 16:08:10

标签: netlogo

我正在使用NetLogo中的矩阵扩展。我希望能够修改矩阵中的特定元素(如果它们等于某个数字)。

例如,如果值是0.95,我想在其上运行random 2,使其以1或0表示。如果是1.75,则以{或1表示为1或2。 }}

这将改变我的矩阵m:

random (3 - 1) + 1

对此:

  let m matrix:from-row-list [[1 0.95 0.95] [2 1 1.75] [1 2 1] ]

谢谢

1 个答案:

答案 0 :(得分:3)

我不确定是否理解您更新的矩阵示例,例如,为什么第二行中的2在输出中变为0.05?我假设您还有其他处理这些数字的规则。无论如何,我认为您可以使用matrix:map来完成您所追求的目标-您可能只需要在匿名报告者中设置规则即可反映您所追求的目标。以下是使用您提供的0.95和1.75值规则的示例:

extensions [ matrix ]

to matrix-manipulation
  let m matrix:from-row-list [[1 0.95 0.95] [2 1 1.75] [1 2 1] ]

  let m2 matrix:map [ i -> val-change i ] m

  print matrix:pretty-print-text m2
end

to-report val-change [ val ]
  if val = 0.95 [
    report random 2
  ]
  if val = 1.75 [
    report 1 + random 2
  ]
  report val
end

输出变为:

[[ 1  0  1 ]
 [ 2  1  2 ]
 [ 1  2  1 ]]