在 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 ] ]}}