在MATLAB中,如何在每次值从1变为0时在向量中找到索引?

hum*_*ker 3 indexing matlab vector

我有一个1和0的向量,表示何时发生间歇性数据信号.例如:

    V = [0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0];
Run Code Online (Sandbox Code Playgroud)

如何找到从1到0的每个变化的索引值?所以对于上面的矢量V,答案是:

    idx = [10,18,28];
Run Code Online (Sandbox Code Playgroud)

And*_*uri 7

快捷方便:

idx=find(diff(V)<0)+1;
Run Code Online (Sandbox Code Playgroud)

计算导数,只得到负值(从1到0是-1)并找到位置.由于衍生工具从第二个位置开始,我们需要添加1

但请注意,如果您想要访问这些位置上的数据,最好直接使用逻辑索引,如:

somevals=my_other_data([false;diff(V)<0]);
Run Code Online (Sandbox Code Playgroud)

在此处阅读有关常规变量索引的更多信息


Sar*_*ama 6

strfind 不仅仅是字符串,也适合像你这样的情况.

idx = strfind(V,[1 0]) + 1;
Run Code Online (Sandbox Code Playgroud)

  • 我常常忘记多种多样的`strfind`. (2认同)