首页 > 解决方案 > 在MATLAB中,每次值从1变为0时如何在向量中查找索引?

问题描述

我有一个由 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];

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

    idx = [10,18,28];

标签: matlabvectorindexing

解决方案


快捷方便:

idx=find(diff(V)<0)+1;

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

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

somevals=my_other_data([false;diff(V)<0]);

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


推荐阅读