Matlab 获取向量更改值的索引位置

Matlab 获取向量更改值的索引位置,matlab,Matlab,我有一个向量,它包含一系列按顺序排列的字符串。我想知道向量变化的地方的索引号。下面希望是一个明确的例子。我真的不怎么使用MATLAB。在我的脑海里,我只是在考虑使用一个循环。我想知道是否有更好的方法使用MATLAB来实现这一点 Vector ABC ABC ABC ABC MNK MNK MNK PLO PLO 所以我想知道ABC是从1:4开始的,MNK是从5:7开始的,PLO是从8:9开始的- %%// Input a1 = { 'ABC' 'ABC'

我有一个向量,它包含一系列按顺序排列的字符串。我想知道向量变化的地方的索引号。下面希望是一个明确的例子。我真的不怎么使用MATLAB。在我的脑海里,我只是在考虑使用一个循环。我想知道是否有更好的方法使用MATLAB来实现这一点

 Vector
 ABC
 ABC
 ABC
 ABC
 MNK
 MNK
 MNK
 PLO
 PLO
所以我想知道ABC是从1:4开始的,MNK是从5:7开始的,PLO是从8:9开始的-

%%// Input
a1 = {
    'ABC'
    'ABC'
    'ABC'
    'ABC'
    'MNK'
    'MNK'
    'MNK'
    'PLO'
    'PLO'};

[val,x2] = unique(a1,'first');
[~,x12] = unique(a1); %%// By default takes the last unique value
out = [val num2cell(x2) num2cell(x12)]
输出-

out = 

    'ABC'    [1]    [4]
    'MNK'    [5]    [7]
    'PLO'    [8]    [9]

如果你不太使用MATLAB-为什么是现在?公司决定,所以学习要慢!你能假设字符串总是被排序的吗?是的,字符串总是被排序的。这太完美了!欢呼“默认情况下接受最后一个唯一值”:这是一个很好的应用!