Asked by will99
on 11 Apr 2019

basically I have this code to de center the data by shifting it which do the following

find the mean of each vector and substract the mean from the corrsponding data

I want to represent the data in figure how can I do that ?

f = xlsread('data.xlsx');

s= size(f,2);

m = zeros(size(f));

for i = 1:s

m(:,i) = f(:,i)-mean(f(:,i));

end

Answer by Star Strider
on 11 Apr 2019

You are taking the mean of each column of ‘f’, which is what the mean function does by default.

Try this:

m = f - mean(f)

Experiment to get the resullt you want.

Star Strider
on 11 Apr 2019

I am not certain what you intend by ‘decentered’.

If you want to subtract the value that is mid-way in the values of the column vectors in your matrix, use the median function instead of mean. The code is otherwise the same. (The mean and median may be close to being the same values in some situations, however in others they can be quite different. What you do depends on the result you want.)

will99
on 11 Apr 2019

I'm trying to perform PCA without PCA matlab function and the first step was to get the mean of the vector nad substract it from the corrsponding data so it can have mean of zero I want to check if the new data have mean of zero so I want to know how can I plot it like the one in the example

I'm following this tutorial section 3.1 http://www.iro.umontreal.ca/~pift6080/H09/documents/papers/pca_tutorial.pdf

Star Strider
on 11 Apr 2019

Assuming ‘f’ is an (Nx2) matrix, I would do this:

m = f - mean(f);

figure

plot(m(:,1), m(:,2), '+')

You can then use the MATLAB cov and eig functions to get the covariance matrix and its eigenvalues.

Sign in to comment.

Answer by Steven Lord
on 11 Apr 2019

You can 'center' your data using the normalize function.

As for "represent the data in figure" do you mean you want to plot the centered data? If not can you say more about what type of visualization you want to create?

dicerolls = randi(6, 1, 100);

centeredDicerolls = normalize(dicerolls, 'center');

plot(centeredDicerolls)

Although for rolling six-sided dice, you may want to subtract off the theoretical mean of 3.5 instead of the mean of your set of rolls.

dicerollsMinus3p5 = normalize(dicerolls, 'center', 3.5);

plot(dicerollsMinus3p5)

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.