3

私はこのようなベクトルを持っています:

>> v = [1 1 1 2 2 3 4 4 4 4 4 5 5]'

v =

     1
     1
     1
     2
     2
     3
     4
     4
     4
     4
     4
     5
     5

ベクトルがソートされます。各値はいくつでもかまいません。各値の最後の出現のインデックスを見つける必要があります。この場合、これを返します:

answer =

     3    % index of the last occurence of "1"
     5    % index of the last occurence of "2"
     6    % index of the last occurence of "3"
    11    % index of the last occurence of "4"
    13    % index of the last occurence of "5"
4

3 に答える 3

5

@trumpetlicksのおかげで、答えはuniqueです。

>> v = [1 1 1 2 2 3 4 4 4 4 4 5 5 6]'

v =

     1
     1
     1
     2
     2
     3
     4
     4
     4
     4
     4
     5
     5
     6

>> [~, answer] = unique(v)

answer =

     3
     5
     6
    11
    13
    14

[編集]MCRの最近のバージョン(R2013?)では、の動作uniqueが変更されました。同じ結果を得るには、次を使用する必要がありますunique(v, 'legacy');

于 2012-07-06T16:16:28.460 に答える
5
v = [1 1 1 2 2 3 4 4 4 4 4 5 5];
find(v==1,1,'last')
 % returns ans = 3
find(v==2,1,'last')
 % returns ans = 5

1は、返したいオカレンスの数を示します。'first'または、'last'指定することもできます。

于 2012-07-06T18:20:10.303 に答える
1

これを試して

[find(diff(v')) length(v)]

あなたはそれを自分で理解できるはずです。

于 2012-07-06T15:18:32.457 に答える