I have sequence
a=[17 56 42 12 12 99 102 45 76 76 41 99 12 45 56 17 76 86 125 160 36]
I want to do that give numbering to sequence starting from 1 i.e.minimum value is 12 so give it 1 then next value greater than 12 is 17 so give it 2 likewise so
a = [17 56 42 12 12 99 102 45 76 76 41 99 12 45 56 17 76 86 125 160 36]
a1 = [2 7 5 1 1 10 11 6 8 8 4 10 1 5 7 2 8 9 12 13 3]
how to do this.

 採用された回答

Image Analyst
Image Analyst 2016 年 12 月 30 日

1 投票

Here's one semi-vectorized way:
a=[17 56 42 12 12 99 102 45 76 76 41 99 12 45 56 17 76 86 125 160 36]
uniquea = unique(a)
labels = 1 : length(uniquea)
for k = 1 : length(a)
index = find(a(k) == uniquea);
a1(k) = labels(index);
end

3 件のコメント

Jay Hanuman
Jay Hanuman 2016 年 12 月 30 日
but i don't want to disturb original sequence so in original sequence way numbering should be display. in above solution original sequence displays in increasing order numbers.
Image Analyst
Image Analyst 2016 年 12 月 30 日
My code gives
a1 =
Columns 1 through 17
2 7 5 1 1 10 11 6 8 8 4 10 1 6 7 2 8
Columns 18 through 21
9 12 13 3
Tell me which elements are not in the same order as the a1 you gave, which is a1 = [2 7 5 1 1 10 11 6 8 8 4 10 1 5 7 2 8 9 12 13 3]
I'm just not seeing any difference between my output and yours so I need you to point it out to me. Which indexes are bad?
Jay Hanuman
Jay Hanuman 2016 年 12 月 30 日
編集済み: Jay Hanuman 2016 年 12 月 30 日
sorry, it gives right result, I didn't saw clearly, Thank You.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMathematics についてさらに検索

質問済み:

2016 年 12 月 30 日

編集済み:

2016 年 12 月 30 日

Community Treasure Hunt

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

Start Hunting!

Translated by