Round towards specific values in an array
Mostra commenti meno recenti
Hi, when I have 2 vectors, one vector has a larger length than the other. But they both have values that are approximately the same. Now I want to round and locate each element of the large vector in the short vector. So, for example:
A = [2000 1999 1998 1996 1993 .... 0] (dim=1 x a)
B = [2000 1995 1990 1985 1980 .... 0] (dim=1 x b)
I would now like to see that for example {2000 1999 1998} of A are rounded to {2000} in B and {1996 1993} in A to {1995} in B so that I can find the index of an element in B that corresponds to one (or more) rounded values in A.
I can imagine that you can do this with some kind of for-loop, but preferably I do not use that since it will become a nested loop and will cost a lot of computation time.
THanks a lot
Risposte (4)
Tom Gaudette
il 29 Mar 2011
% This solutions currently does it with loops just to get a picture of the problem.
A = [2000 1999 1998 1996 1993 1990];
B = [2000 1995 1990 1985 1980];
for idx1=1:length(A);
for idx2=1:length(B);
C(idx2,idx1)=A(idx1)-B(idx2);
end;
end
% Now find the index of the min values
[v,i]=min(abs(C));
% 'i' now contants the list of locations in B that corespond to the nearest
% A value
B(i)
1 Commento
Adnane Youcef
il 8 Ago 2022
Modificato: Adnane Youcef
il 8 Ago 2022
it works thnx
Teja Muppirala
il 29 Mar 2011
This is one possible solution. If your vectors are very long though, this might be inefficient because it temporarily makes a big matrix to calculate all the differences.
A = -5 + 35*rand(1,100);
B = 0:5:25;
[~,I] = min(abs(bsxfun(@minus,A,B')));
Anew = B(I);
[A; Anew]
Tom R
il 31 Lug 2012
1 voto
Check this function out.
A = [2000 1999 1998 1996 1993].';
B = [2000 1995 1990 1985 1980].';
Assuming all the elements of B are unique, interpolate to 'nearest'.
C = interp1(B, B, A, 'nearest');
result = table(A, C, 'VariableNames', ["Original data", "Rounded data"])
Categorie
Scopri di più su Logical in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!