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.

Kategorien

Mehr zu App Building finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by