NetLogo:如何获取矩阵中每个元素的功效

时间:2014-02-14 20:07:25

标签: matrix netlogo

我想将矩阵的所有元素都用于特定数字的幂。 我有一个使用矩阵扩展设置的矩阵,如下所示:

let A matrix:make-constant 4 4 5

给出4x4矩阵,其中值为5

现在我想把矩阵中的所有元素都用到相同的幂,所以说我想把它们带到2,然后我想得到一个数字为25的4x4矩阵。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

你可以通过几种方式做到这一点。最简单的可能是matrix:times-element-wise。不幸的是,这只适用于大于或等于1的整数幂:

to-report matrix-power [ mat n ]
  repeat n - 1 [
    set mat matrix:times-element-wise mat mat
  ]
  report mat
end

您还可以将矩阵转换为列表列表,然后使用map将每个元素提升为幂。这具有使用0,分数幂和负数的优点:

to-report matrix-power [ mat n ]
  report matrix:from-row-list map [ map [ ? ^ n ] ? ] matrix:to-row-list mat
end

map [ ? ^ n ] some-list将列表中的每个元素提升为n的幂。 matrix:to-row-list将矩阵转换为列表列表。因此,我们在map [ ? ^ n ]的结果中应用matrix:to-row-list每个列表。然后,我们将结果转换回带有matrix:from-row-list的矩阵。

您可以将其概括为执行任何按元素操作:

to-report matrix-map [ function mat ]
  report matrix:from-row-list map [ map function ? ] matrix:to-row-list mat
end

然后,我们可以将幂函数定义为:

to-report matrix-power [ mat n ]
  report matrix-map task [ ? ^ n ] mat
end

答案 1 :(得分:1)

Seth关于NetLogo矩阵扩展的“map”原语有用的评论让我加了一个。由于它是捆绑式扩展,我不确定如何最好地将其发布到那里,但是目前,让我知道它是否有用,我会发给你一份副本。