Comparing Vector Elements (of 2 vectors)

조회 수: 2 (최근 30일)
Michael
Michael 2013년 4월 3일
Hello,
I have two vectors (one with random numbers 0-1, and the other which is essentially a set of strictly increasing numbers--up to just above 1)... (Maybe this isn't the best way to explain my problem but what I"ve said is true)
It'll be easier to give an example (for me) than to try to form my question more rigorously, so excuse my rough edges for a sec here..
Imagine two vectors which we'd like to compare the elements of:
P = [1 1.5 3 4 5.5 6 7 8 9 10 ];
R = [0.1014 1.6421 9.0088 5.7822 5.2368 0.3141 8.8437 3.1157 1.8910 2.9378];
I would like a new matrix which gives the index value for each time something like: P(i) <R(Any element)<P(i+1)...
The result for above would be:
comp = [ 1 2 9 5 5 1 8 3 2 2] I picked the index of P where R was ~(just above) P...
If this is unclear (which it totally is, I'm sorry) please ask me to clarify.
Many thanks, Michael
  댓글 수: 3
Michael
Michael 2013년 6월 10일
You're correct! I was typing fast and came up with a bad example that I didn't think through properly!
I decided to use loops over each element in the one vector, and loop over the other vector as well! Is there something easier or quicker than this??
Thanks in advance!
Matt Kindig
Matt Kindig 2013년 6월 10일
Did you see my answer below?

댓글을 달려면 로그인하십시오.

채택된 답변

Matt Kindig
Matt Kindig 2013년 4월 3일
편집: Matt Kindig 2013년 6월 10일
I think this should do what you want:
Rc = mat2cell(R, 1, ones(size(R)));
comp = cellfun(@(x) find(P<x,1,'last'), Rc, 'UniformOutput', false);
tf = cellfun(@isempty, comp, 'UniformOutput', true); %get empties
comp(tf) = {0}; %default value if none found
comp = cell2mat(comp);
Or an even more direct way:
Rc = mat2cell(R, 1, ones(size(R)));
comp = cell2mat(cellfun(@(x) sum(P<x), Rc, 'UniformOutput', false));
Note that both of these assume P is sorted (which is, of course, the only way your question makes sense.).
  댓글 수: 2
Matt Kindig
Matt Kindig 2013년 6월 10일
I can't believe I overlooked the most obvious way!
One liner:
[~, comp]= histc(R, P);
Michael
Michael 2013년 6월 13일
jenyus!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by