如何在SVD功能后从主矩阵中删除行和列?

时间:2015-05-26 08:02:25

标签: c# matlab mathnet

我有:

[U S V]=svd(A)  

@ORM\Table()

如何从SVD函数中删除A矩阵的维度?

1 个答案:

答案 0 :(得分:1)

我假设您想要获得矩阵A的简化版本。

这是通过使用PCA完成的,搜索它。例如,如果您希望简化矩阵A具有K维度:

[m, ~] = size(A);

Sigma = 1.0/m .* A' * A;
[U, S, ~] = svd(Sigma);

newA = zeros(size(A, 1), K);

for i = 1:size(A, 1),
    for j = 1:K,
        x = A(i, :)';
        projection_k = x' * U(:, j);
        newA(i, j) = projection_k;
    end
end
end

因此矩阵newA将是A缩小版,尺寸为K

您最好搜索PCA