我想将矩阵的所有元素都用于特定数字的幂。 我有一个使用矩阵扩展设置的矩阵,如下所示:
let A matrix:make-constant 4 4 5
给出4x4矩阵,其中值为5
现在我想把矩阵中的所有元素都用到相同的幂,所以说我想把它们带到2,然后我想得到一个数字为25的4x4矩阵。
我该怎么做?
答案 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”原语有用的评论让我加了一个。由于它是捆绑式扩展,我不确定如何最好地将其发布到那里,但是目前,让我知道它是否有用,我会发给你一份副本。