2015-05-26 25 views
0

我:如何在SVD函數之後從主矩陣中移除行和列?

A = 
1  2  3 
2  4  5 
5  5  5 

[U S V]=svd(A) 

我怎樣才能把SVD功能的矩陣的尺寸是多少?

+0

所以你想找到一個簡化矩陣'A'的SVD? –

+0

是的。我需要在SVD(A)之後找到A矩陣和S矩陣之間的關係。 –

+0

在SVD之後從矩陣中移除行和列對我來說沒有任何意義。你是否想在去除奇異值後找到一個**較低的**近似值? – rayryeng

回答

1

我假設你想得到矩陣A的簡化版本。

這是通過使用PCA,搜索它來完成的。例如,如果你想簡化的矩陣AK尺寸:

[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

+0

我有很多數據集相關(社交網絡系統)。我喜歡用戶數據集減少的用戶和列。我在matlab中使用這個代碼但不工作,K變量中的錯誤 –

+1

K是維數。如果你的數據最初有10個維度,而你想把它減少到2,那麼K = 2。我認爲你對PCA一無所知,最好研究它而不是僅僅使用代碼。 – SamuelNLP

+0

你可以打電話給我skype幫我嗎,skypeid = tarraharshad –