# PCA in Matlab reduce dimensionality

100 views (last 30 days)
Matlaber on 19 Feb 2019
Commented: Matlaber on 21 Feb 2019
I just want to have a simple PCA to reduce my dimensionality of let say 400 * 5000 to 400 * 4
meaning reduce from 5000 to 4.
I am not sure where can i set the value of reduction.
coeff = pca(X)
I am trying to follow:
Then:
The dataset of ingredient is 13 * 4
coeff = pca(ingredients)
Output:
coeff = 4×4
-0.0678 -0.6460 0.5673 0.5062
-0.6785 -0.0200 -0.5440 0.4933
0.0290 0.7553 0.4036 0.5156
0.7309 -0.1085 -0.4684 0.4844
I am wondering can i change it to output of 13 *2
Matlaber on 21 Feb 2019
Yes, I checked the file of the PCA output, you are correct, usually large number for the first row and progressively smaller number.
Thanks once again.
Do you have any idea how can we use Linear Discriminant Analysis (LDA) aka. Fisher Discriminant Analysis (FDA) in matlab? It seemed do not have this function.

Elysi Cochin on 20 Feb 2019
[coeff, score] = pca(ingr);
requiredResult = score(:,1:2);
or if you want to change coeff to 13 x 2 matrix, you'll have to use reshape function, but to use reshape your variable coeff must have atleast 13 x 2 elements
or you can use repmat, it will repeat copies of the array coeff
##### 2 CommentsShow 1 older commentHide 1 older comment
Matlaber on 20 Feb 2019
The original dataset which is 'ingredient' is 13 * 4 matrix.
>> ingredients
ingredients =
7 26 6 60
1 29 15 52
11 56 8 20
11 31 8 47
7 52 6 33
11 55 9 22
3 71 17 6
1 31 22 44
2 54 18 22
21 47 4 26
1 40 23 34
11 66 9 12
10 68 8 12
After PCA:
coeff = pca(ingredients)
The output is of coeff is 4 * 4 matrix.
>> coeff
coeff =
-0.0678 -0.6460 0.5673 0.5062
-0.6785 -0.0200 -0.5440 0.4933
0.0290 0.7553 0.4036 0.5156
0.7309 -0.1085 -0.4684 0.4844
I am wondering how can I get a 13 * 2 matrix as output.
In your question "to use reshape your variable coeff must have atleast 13 x 2 elements". How can I get at least 13 * 2 elements.
Thanks