Truncated SVD returns unexpected 1*1 result
1 view (last 30 days)
Show older comments
Christopher McCausland
on 28 Jan 2022
Commented: Christopher McCausland
on 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 Comments
Accepted Answer
Matt J
on 28 Jan 2022
Edited: Matt J
on 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 Comments
Matt J
on 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
More Answers (0)
See Also
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!