Truncated SVD returns unexpected 1*1 result
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Christopher McCausland
am 28 Jan. 2022
Kommentiert: Christopher McCausland
am 30 Jan. 2022
Hi,
I am currently prefoming SVD on six channels varying in time of the same type of biometric data. The recorded channels are similar as therefore they feature high correlation.
I want to take these six channels and reduce them to a single channel using SVD, I take my data, rescale it and then preform the svd, so far so good. Where I run into problems is the reconstruction. If I want the orignal data X = U*S*V '.Instead I am trying to preform a truncation by only taking the first PC as this accounts for over 95% of the information anyways.
Instead of PC1 returning a vector (1 channel * given number of samples) I am returned a single value (1*1). I am assuming I have a matrix the wrong way around but I can't see how I am getting this result (Though I know that I am the likely problem). I will attach some open source data too.
data = rescale(data(1:6,:),0,1); % Rescale the data for reobustness between patients
[U,S,V] = svd(data(:,:),'econ'); % Preform SVD
PC1 = V(:,1)'*data(1,:)'; % Atempt to eqivilent single channel
I also know I can compute something similar with the code below, but I would just really like to know where I am going wrong now!
[coeff,score,latent] = pca(data');
new_matrix_for_classification = score(:,1);
Thank you,
Christopher
0 Kommentare
Akzeptierte Antwort
Matt J
am 28 Jan. 2022
Bearbeitet: Matt J
am 28 Jan. 2022
Well, you're multiplying a row vector by a column vector, so a scalar is the only result that is possible.
Shouldn't a 1-component reconstruction be,
PC1=data*V(:,1);
5 Kommentare
Matt J
am 29 Jan. 2022
I have tried to move around the order of the data and V array and transpose them too but am still left with a 1*6 output
If you did, you should have gotten a 10000x1 output, as below.
data=rand(1e4,6);
[U,S,V] = svd(data,'econ'); % Preform SVD
PC1=data*V(:,1);
whos PC1
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Eigenvalues finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!