Info

此问题已关闭。 请重新打开它进行编辑或回答。

Short question: Using the find command

1 次查看(过去 30 天)
MiauMiau
MiauMiau 2012-12-28
关闭: MATLAB Answer Bot 2021-8-20
Hi
I have a matrix X with three columns, say column 1 stores attribute a, column 2 sotres attribute b, and column 3 stores attribute c. Attribute c is not unique (same value might appear in different lines). What I want to do is to create a matrix, such that for each specific value of c, it would show me in which lines of X it is to be find. Why can I not use the following line:
G = find(X(:,3) == unique(X(:,3)))
to do so? Thanks

回答(2 个)

Andrei Bobrov
Andrei Bobrov 2012-12-28
[~,g1] = unique(X(:,3),'first');
G = sort(g1);

Jan
Jan 2012-12-28
You cannot use
find(X(:,3) == unique(X(:,3))), % !!! wrong
because X(:,3) and unique(X(:, 3)) have a different number of elements in general. The result of
[1,2,3] == [1,2,3,4]
cannot be defined easily.
As Andrei has suggested already, the 2nd output of unique() will help you to solve the problem.

此问题已关闭。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by