在 NetLogo 中如何将矩阵的 n 个元素乘以一个数字?
How can I multiply n elements of a matrix by a number in NetLogo?
我有一个矩阵 m,我想要一个用户定义的函数,它允许我控制乘以一个值的元素。
函数 matrix:set-and-report
看起来很有前途,但我不确定如何为多个元素实现它。
例如,我想将矩阵的前 3 个元素乘以 -1 以从这里移动:
let m matrix:from-row-list [1 2 3 4 5 6]
print m
对此:
let n matrix:from-row-list [-1 -2 -3 4 5 6]
有了 matrix:set-and-report
,您确实非常接近解决方案。请检查示例,我希望这就是您要找的。报告功能以矩阵作为输入。比起你指定的行,你想要开始乘法的索引,在哪里结束,最后是乘数。
Extensions [
matrix
]
to test
let m matrix:from-row-list [ [1 2 3 4 5 6] [1 2 3 4 5 6] ]
print (word "original matrix " m)
print (word "modified matrix " matrix-row-manipulation m 0 0 3 -1)
end
to-report matrix-row-manipulation [matrix row columen-index-start columen-index-end multiplier]
let index (range columen-index-start columen-index-end 1)
foreach index [ i ->
set matrix matrix:set-and-report matrix row i (matrix:get matrix row i * multiplier )
]
report matrix
end
这将 return 你:
observer> test
original matrix {{matrix: [ [ 1 2 3 4 5 6 ][ 1 2 3 4 5 6 ] ]}}
modified matrix {{matrix: [ [ -1 -2 -3 4 5 6 ][ 1 2 3 4 5 6 ] ]}}
我有一个矩阵 m,我想要一个用户定义的函数,它允许我控制乘以一个值的元素。
函数 matrix:set-and-report
看起来很有前途,但我不确定如何为多个元素实现它。
例如,我想将矩阵的前 3 个元素乘以 -1 以从这里移动:
let m matrix:from-row-list [1 2 3 4 5 6]
print m
对此:
let n matrix:from-row-list [-1 -2 -3 4 5 6]
有了 matrix:set-and-report
,您确实非常接近解决方案。请检查示例,我希望这就是您要找的。报告功能以矩阵作为输入。比起你指定的行,你想要开始乘法的索引,在哪里结束,最后是乘数。
Extensions [
matrix
]
to test
let m matrix:from-row-list [ [1 2 3 4 5 6] [1 2 3 4 5 6] ]
print (word "original matrix " m)
print (word "modified matrix " matrix-row-manipulation m 0 0 3 -1)
end
to-report matrix-row-manipulation [matrix row columen-index-start columen-index-end multiplier]
let index (range columen-index-start columen-index-end 1)
foreach index [ i ->
set matrix matrix:set-and-report matrix row i (matrix:get matrix row i * multiplier )
]
report matrix
end
这将 return 你:
observer> test
original matrix {{matrix: [ [ 1 2 3 4 5 6 ][ 1 2 3 4 5 6 ] ]}}
modified matrix {{matrix: [ [ -1 -2 -3 4 5 6 ][ 1 2 3 4 5 6 ] ]}}