How do I average a data which runs on a cycle?

I have a data file that goes like -1 0.2 -0.5 0.15 0 0.143 0.5 0.122 1 0.1234 1 0.233 0.5 0.32 0 0.322 -0.5 1.22 -1 1.333 then cycle 2 which has same x values but different y values . the cylce continues for 100 times. i want to have a average of y values for each x values.so finally i have the average y value

 Réponse acceptée

John D'Errico
John D'Errico le 24 Nov 2014

0 votes

You could use my consolidator , found on the file exchange.
It can form the mean y value for each independent x. It could even be used to compute a standard deviation of y within each x.

3 commentaires

DebiPrasad
DebiPrasad le 24 Nov 2014
Thats a really great function. and it works but I need the data to be cylcic . -1 to 1 and then 1 to -1. the function averages all the duplicities and gives me -1 to 1.
DebiPrasad
DebiPrasad le 24 Nov 2014
I should get data from -2 to 2 and then again from 2 to -2. so it gives me a cycle!
Then you need to tell consolidator that there are two types of points. Thus you have an increasing section and a decreasing one. Flag each point with a 1 or -1 that indicates which way the cycle is going. Then use consolidator with the 2 dimensional input to distinguish which elements to average.

Connectez-vous pour commenter.

Plus de réponses (1)

Thorsten
Thorsten le 24 Nov 2014
Modifié(e) : Thorsten le 24 Nov 2014

1 vote

Read your data into one big 100xN matrix D (e.g., using dlmread) and then use mean(D). Voila.

4 commentaires

DebiPrasad
DebiPrasad le 24 Nov 2014
Thanks Thorsten. But I dont want the mean of all y values. But y values of each x values. Since its a cycle, i will get 100 x values of values from -1,5 to 1.5, and corresponding y values. the y data should be the y mean of the each y value in the x value.
Thorsten
Thorsten le 24 Nov 2014
Modifié(e) : Thorsten le 24 Nov 2014
Oh, I see. Is your example one actual line of your file? It does not contain x values -1.5 and 1.5. Are the x values always in the same order -1, -0.5, 0.5, 1, 1, 0.5, -0.5, -1? Then you can construct your Y matrix from the big data matrix D as
Y = [D(:, 2:2:10); D(:, 20:-2:12)];
and compute the mean as
mean(Y)
for values of a = -1:0.5:1;
If you need something else, please provide more information about the file; maybe you should post the file or the first, say, 10 lines.
DebiPrasad
DebiPrasad le 24 Nov 2014
I should get data from -2 to 2 and then again from 2 to -2. so it gives me a cycle!
Thorsten
Thorsten le 26 Nov 2014
But in your example you have only x values that run from -1 to 1 and back from 1 to -1. So what do the real data look like? Could you provide the file?

Connectez-vous pour commenter.

Catégories

En savoir plus sur App Building dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by