To remove the repeated number

i have a matrix [1 2 2 2 3 4 5] and i want to get the result has [1 2 3 4] by replacing the repeated 2 by the single number.

1 件のコメント

Jos (10584)
Jos (10584) 2013 年 2 月 7 日
and get rid of the 5 as well?

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

回答 (3 件)

Brian B
Brian B 2013 年 2 月 7 日

1 投票

Use
unique([1 2 2 2 3 4 5])
Note that this will also sort the elements.
-B
Andrei Bobrov
Andrei Bobrov 2013 年 2 月 7 日

1 投票

% without sorting array
m = randi(5,1,10);
[~,ii] = sort(m); % for Jan's solution
jj = [true,diff(m(ii))~=0];
out1 = m(sort(ii(jj)));
out2 = unique(m,'stable'); % in R2012a and later
[u,b] = unique(m,'first'); % old releases
[~,ii] = sort(b);
out3 = u(ii);

1 件のコメント

Jan
Jan 2013 年 2 月 7 日
Very old releases do not know the 'first' flag in the unique() command.

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

Jan
Jan 2013 年 2 月 7 日

0 投票

No sorting, considering only neighboring elements such that e.g. [1,2,1] is not altered:
m = [1 2 2 2 3 4 5];
u = m([true, diff(m) ~= 0]);
You see, there are many different solutions, because your problem is not defined exactly: Sorting, not neighboring repetitions, ...

カテゴリ

ヘルプ センター および File ExchangeShifting and Sorting Matrices についてさらに検索

質問済み:

2013 年 2 月 7 日

Community Treasure Hunt

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

Start Hunting!

Translated by