Finding average value of multiple Y values for a single x value
조회 수: 28 (최근 30일)
이전 댓글 표시
Hi all
I am doing some work with suspension dampers and trying to model them. To do this i have put a damper on a suspension dynamometer to measure the displacement, velocity and force against time.
When plotting Velocity against force you end up with a hysteresis loop, which i need to find the average values for each velocity. What i mean by this is that for every x value, there are multiple corresponding y values. I need to find the average of those multiple y values, to give me a single line (or two lines if you prefer, one for the positive y values, one for the negative.
For example,
x = 0.582 & y = [2 7 5 13 4] average of y at x = 0.582 is 6.2.
I have also attached pictures to visually illustrate what i am trying to achieve.
Many Thanks Ross
댓글 수: 3
David Fletcher
2018년 2월 27일
편집: David Fletcher
2018년 2월 27일
If you have a matrix where each column represents the x value and each row is the Y value then applying the mean function to that matrix will give you the columnwise mean of the Y values for each X value. Though using a matrix assumes each x value is associated with the same number of Y values
답변 (2개)
KL
2018년 2월 27일
편집: KL
2018년 2월 27일
A lot depend on how you have stored your data. I can think of something with table. You could either sort your data into a table or work with tables right from the beginning.
x = 0.582;
y = [2 7 5 13 4];
%now create table
T = table(x, [y, -y],'v',{'x','y'})
%add new columns calculating mean
T.y_mean_p = mean(T.y(T.x==0.582&T.y>=0));
T.y_mean_n = mean(T.y(T.x==0.582&T.y<=0))
T =
x y y_mean_p y_mean_n
_____ _____________ ________ ________
0.582 [1x10 double] 6.2 -6.2
keep in mind, comparing x==some_floating_point_value could be problematic. Do it within some tolerance.
댓글 수: 0
Daniel Bridges
2018년 2월 27일
편집: Daniel Bridges
2018년 2월 27일
Sounds to me that what you want to do is have vectors of data x and y, same length.
Then -- sorry, talking off the top of my head so specific commands or syntax may be wrong, but to give you an idea -- something like
indices = find(x==givenvalue);
to index only those portions of y that correspond to your given value for x,
result = mean(y(indices))
Of course you'll need to repeat x values in the x vector for each of the multiple y(x) values.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Vibration Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!