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

 Akzeptierte Antwort

John D'Errico
John D'Errico am 24 Nov. 2014

0 Stimmen

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 Kommentare

DebiPrasad
DebiPrasad am 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 am 24 Nov. 2014
I should get data from -2 to 2 and then again from 2 to -2. so it gives me a cycle!
John D'Errico
John D'Errico am 25 Nov. 2014
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Thorsten
Thorsten am 24 Nov. 2014
Bearbeitet: Thorsten am 24 Nov. 2014

1 Stimme

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

4 Kommentare

DebiPrasad
DebiPrasad am 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 am 24 Nov. 2014
Bearbeitet: Thorsten am 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 am 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 am 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?

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by