Finding Values nearest a certain number

1 次查看(过去 30 天)
I am trying to find the values in a set of data points nearest multiples of 1000 i.e 0, 1000, 2000, ..., 10000. I have an excel workbook with 4650 data points and lets say column one is load's (P) ranging from 0 to 10000 and column two are the deflections (d) caused by those loads. I need to find the values in column 1 closest to multiples of 1000 and then also find the corresponding values in column 2 that match the values from colunm 1.
So far I have,
X=[0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000];
y=min(abs(P-x))
This is returning the differences between the closest multiples and the loads. For example if the closest load in column 1 to 1000 is 1001.65 it is giving me the value 1.65 but I need it to give me the 1001.65 value. And then I would need help with another equation that would return the value in column 2 that corresponds to the load of 1001.65.

回答(1 个)

Shubham Gupta
Shubham Gupta 2019-6-19
编辑:Shubham Gupta 2019-6-19
If I understand it clearly your P(and d) is a row/column vector of length 4650 and you need to find 11 points which are closest to X's 11 elements. If that is the case, I think you can try the code below to achieve the desired results. ( I am defining P as a row vector of 21 elements for this example )
X=[0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000];
P = [0,43,532,1046,1583,2043,2543,3095,3294,3794,3809,4130,4690,5021,5420,6043,6901,7800,8100,8900,10000];
d = rand(1,21);
%% Code that I tried
Abs_diff=abs(bsxfun(@minus,meshgrid(X,P),P'));
[mindiff,Corr_ind]=min(Abs_diff);
% Updated Load and deflection
P_updated = P(Corr_ind);
d_corresponding = d(Corr_ind);
I hope it helps !

类别

Help CenterFile Exchange 中查找有关 Data Import from MATLAB 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by