Finding average value of multiple Y values for a single x value
27 次查看(过去 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!