我正在使用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] ]
谢谢
答案 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 ]]