matlab规范化码算法

时间:2017-10-31 16:17:53

标签: matlab

以下是用于规范化数据的matlab代码。有人可以解释背后的算法吗?我是matlab的新手,我想了解背后的逻辑。这看起来很复杂。

T是数据矩阵

G = [min(T,[],1);max(T,[],1)]
h = bsxfun(@minus,T,G(1,:));
h = bsxfun(@rdivide,h,diff(G,1,1))

非常感谢。

1 个答案:

答案 0 :(得分:2)

这是一个非常简短但不易读的matlab代码的完美示例。

在第一行中,您将创建变量B,这是一个只有两个输入的数组。第一个输入是第一个维度中变量T的最小值。 (如果要加载图像,可以看到尺寸的示例。第一个尺寸是宽度,第二个是高度,最后一个是颜色通道R,G,B)。第二个输入是变量T的最大值,也是它的第一个维度。 (参见matlab的min doku:https://de.mathworks.com/help/matlab/ref/min.html

第二行适用于T和你的变量G上的元素操作(减号操作)。但是对于G,你只需要第一个ROW,其中包含所有元素。元素意味着你将T(1)-G(1)带到T(n)-G(n)。

在第三行中,您再次使用rdivide(请参阅有关rdivide的官方matlab文档:https://de.mathworks.com/help/matlab/ref/rdivide.html)h变量(之前定义)以及G和1的差异进行元素明智的操作第一个维度。

diff(G,1,1):计算第一维(https://de.mathworks.com/help/matlab/ref/diff.html)中G的第n个差异。因此,如果你有一个像(1,2,3,4)这样的向量,它将计算2-1,3-2,4-3 - > (1,1,1)

rdivide(h, diff(G,1,1))是另一种写作方式:A。/ B.这意味着你通过A的相应元素划分B的每个元素。例如: A =(12,21,16)和B =(2,3,4)你的结果将是(12 / 2,21 / 3,16 / 4) - > (6,7,4)