Using find to compare matrices

Hi
I have a matrix where the first column contains id's and the second some sort of information about thes id's, as an example such as below. What I want to do now, is to be able to say which information belongs to which id, for instance, for the example below, the id 1 has the "values" 5 and 9. So I would like to write code such that I could return for each id it's values. Now I have written that:
Y = [1,2,3,3,1; 5,6,7,8,9]'
U = unique(Y(:,1))
for i= 1:length(U)
[A B] = find(U(i)==Y(:,1))
end
Where the column with the 1,2,3,3,1 is storing these id's. Does that make any sense? What do I actually get returned in the [A B]?
Thanks a lot

 Risposta accettata

Thomas
Thomas il 12 Dic 2012
Modificato: Thomas il 12 Dic 2012
You do not need find
Y = [1,2,3,3,1; 5,6,7,8,9]'
Y((Y(:,1)==1),2) % id =1
Y((Y(:,1)==2),2) % id=2
Y((Y(:,1)==3),2) % id=3

4 Commenti

MiauMiau
MiauMiau il 12 Dic 2012
The matrix given was an example. The matrix I do have indeed, is an 2000 (!) times 2 matrix. So this manual style does not work anyway. And, also, the id's are not like "1,2,..." but 8 digit random numbers, also they are not ordered in the column, so I am not sure your suggesting will work.
This should get all the values
Y = [1001,1010,1011,1011,1001; 5,6,7,8,9]'
U=unique(Y(:,1))
for ii=1:numel(U)
Y((Y(:,1)==U(ii)),2)
end
MiauMiau
MiauMiau il 12 Dic 2012
Is that not almost the same thing, as I did in the very beginning if I may ask? What is returned to [A B] in my case?
Thomas
Thomas il 12 Dic 2012
Modificato: Thomas il 12 Dic 2012
In your case it give the row and column number as answers to the find
eg for id=1
you get
A =
1
5
B =
1
1
i.e. 1 is present in y in row 1 column 1 and row 5 column 1
the generic form of find is
[row,col] = find(X, ...)

Accedi per commentare.

Più risposte (2)

MiauMiau
MiauMiau il 12 Dic 2012

0 voti

hi I have realized it still does not do what I wanted. Here I just get "7 8" as outputs. But I want to be able to get the values of each id. This means:
1001 -> 5 1010 -> 6
etc. etc.

Community Treasure Hunt

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

Start Hunting!

Translated by