如果满足某些条件,如何更改矩阵的元素?
How can I change the elements of a matrix if they satisfy some condition?
我正在使用 NetLogo 中的矩阵扩展。如果矩阵的特定元素等于某个数字,我希望能够对其进行修改。
例如,如果值为 0.95,我想对其进行 运行 random 2
,以便它显示为 1 或 0。如果它是 1.75,则显示为 1 或一个 2 random (3 - 1) + 1
这会改变我的矩阵 m:
let m matrix:from-row-list [[1 0.95 0.95] [2 1 1.75] [1 2 1] ]
对此:
[[1 1 0] [.05 1 2] [.05 .25 1] ]
谢谢
我不确定我是否理解你更新的矩阵示例——例如,为什么第二行的 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 ]]
我正在使用 NetLogo 中的矩阵扩展。如果矩阵的特定元素等于某个数字,我希望能够对其进行修改。
例如,如果值为 0.95,我想对其进行 运行 random 2
,以便它显示为 1 或 0。如果它是 1.75,则显示为 1 或一个 2 random (3 - 1) + 1
这会改变我的矩阵 m:
let m matrix:from-row-list [[1 0.95 0.95] [2 1 1.75] [1 2 1] ]
对此:
[[1 1 0] [.05 1 2] [.05 .25 1] ]
谢谢
我不确定我是否理解你更新的矩阵示例——例如,为什么第二行的 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 ]]