Using find to compare matrices

1 回表示 (過去 30 日間)
MiauMiau
MiauMiau 2012 年 12 月 12 日
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

採用された回答

Thomas
Thomas 2012 年 12 月 12 日
編集済み: Thomas 2012 年 12 月 12 日
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 件のコメント
MiauMiau
MiauMiau 2012 年 12 月 12 日
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 2012 年 12 月 12 日
編集済み: Thomas 2012 年 12 月 12 日
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, ...)

サインインしてコメントする。

その他の回答 (2 件)

MiauMiau
MiauMiau 2012 年 12 月 12 日
Thanks very much!

MiauMiau
MiauMiau 2012 年 12 月 12 日
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.

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by