How to find the loaction of an element in an array

3 views (last 30 days)
Say I have two arrays, one for outside temperature and the other for heat rate. All elements in the array line up and correspond to each other. Is there a way that I could get the location of a certain temperature (from the temperature array) and pull the heat value element (from the heat array) that corresponds to that temperature element location? For example:
T=[0 1 2 3]'; Q=[100 200 300 400]';
I'd want to choose T=2 --> which is in the (3,1) position. How can find out the corresponding Q value? I'm doing this because because the arrays are very large and some of the temperatures are the same values and I want to group the Qs for the same temperature. Thanks

Accepted Answer

Matt Fig
Matt Fig on 27 Apr 2011
T=[0 1 2 3]';
Q=[100 200 300 400]';
Q_T = Q(T==2) % Or, Q(find(T==2)), but not as efficient...
Be aware that if your actual values are not integers, you may need to use a tolerance instead of ==.
If you are grouping using cell arrays, consider:
T = [0 0 1 1 2 2 3 4 5 5].'; % T with some repeats.
Q = [9 6 7 8 8 9 6 6 7 8].';
[J,J,J] = unique(T)
G = accumarray(J(:),Q(:),[],@(x) {x}); % Group Q by unique T...
  4 Comments
Naz
Naz on 28 Oct 2011
Also, check out 'nearest'. That should do it.
Jan
Jan on 28 Oct 2011
@Neev: Please post a new problem to a new question.
Checking existence with a tolerance has been discussed repeatedly here.
Do you want a relative or absolute tolerance?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!