今天我遇到了一段MATLAB代码,我无法理解。它是
(Dpatch - min(Dpatch(:))) / (max(Dpatch(:)) - min(Dpatch(:)))
Dpatch
这里是一个n * n矩阵。
那么在将n * n矩阵除以1 * n矩阵之后我们会得到什么?
希望得到你的帮助,谢谢你。
答案 0 :(得分:1)
我认为, LuisMendo 在评论中提到的是您理解问题的线索,但值得更多解释,因为它是一种Matlab典型的,优雅但混淆的做事方式。
Normaly min
仅在一个维度上运作。例如。 min(Dpatch)
将返回每列的最小值。或min(Dpatch, [], 2)
每行的最小值。现在Dpatch(:)
将矩阵展平为一维数组,这样min(Dpatch(:))
将返回矩阵中所有值的最小值,该值只是一个数字。同样适用于max
。
虽然这里似乎存在n * n乘1 * n除法,但实际上只有n * n乘1个元素的divsion。 (顺便说一下n * n除以1 * n 定义为类似于A*pinv(B)
的反转,请参阅help slash
)。
因此,正如 AkiSuihkonen 所指出的,您的代码行只是将矩阵Dpatch
从其范围投影到[0, 1]
范围。
答案 1 :(得分:0)
您可以将其翻译为(矩阵 - 数字)/(数字 - 数字),即(矩阵 - 数字)/数字,即矩阵(与原始数字大小相同:)