matlab中的中心矩阵

时间:2016-05-22 13:50:37

标签: matlab matrix linear-algebra

我有这个matlab代码,其中: K是方阵矩阵pXp

%center the kernel matrix
K = K - (1/p)*(K*ones(p,1))*ones(1,p) - (1/p)*ones(p,1)*(ones(1,p)*K) + (1/p^2)*sum(sum(K));

从评论(以及对算法的描述)来看,这应该是以K为中心的过程,但由于我找到的矩阵居中的唯一定义是:

enter image description here

我不理解与上述公式相关的代码。你能帮我吗?

1 个答案:

答案 0 :(得分:2)

有关代码段的说明

上面的公式涉及与居中向量相关的居中矩阵(更多信息,请参阅我的答案的第二部分)。

您的代码实现执行矩阵的居中。有几种方法可以做,具体取决于矩阵代表什么。

在您的情况下,代码从每列的平均值和每行的平均值执行矩阵的减法。在最后阶段,添加原始矩阵的平均值以平衡最终结果(由于我们执行了两次减法的事实)。 它可以由以下代码替换:

K = K - repmat(mean(K,1),p,1)-repmat(mean(K,2),1,p) + mean(K(:));

有关详细说明,请参阅以下公式的开发:

enter image description here

关于居中矩阵的说明

居中矩阵应满足以下要求: 当它与向量相乘时,结果将等于向量本身减去其组件的平均值(平均值)。

关于等式: 第一个元素是单位矩阵。对于n = 3:

In = 
 1     0     0
 0     1     0
 0     0     1

等式中的第二个元素只是一个矩阵,乘以1 / n。对于n = 3:

(1/n)*(ones(n,1)*ones(n,1)')

0.3333    0.3333    0.3333
0.3333    0.3333    0.3333
0.3333    0.3333    0.3333

设v是向量。在这种情况下:

formula 1

此等式的第一个元素只是向量v,第二个元素是包含每个坐标处v的平均值的向量。