matlab - 在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];
解决方案
快捷方便:
idx=find(diff(V)<0)+1;
计算导数,只得到负值(从 1 到 0 是 -1)并找到位置。由于导数从第二个位置开始,我们需要添加 1
但是,请注意,如果您想要访问这些位置上的数据,最好直接使用逻辑索引,如下所示:
somevals=my_other_data([false;diff(V)<0]);
在此处阅读有关一般变量索引的更多信息
推荐阅读
- python - robotframework rebot --merge 与自定义报告而不是 report.html
- php - 卡夫卡消息重复?
- javascript - 如何在条件语句中添加“如果没有点击”
- python - 读取文件名并用它创建一个列
- ios - 在运行时从模型中获取和插入属性值
- android - 使用 Gson 序列化时忽略主键
- python - 使用 check_correlation 加速 pandas 分析?
- android - 使用cordova构建的Android应用程序在使用该应用程序时不断崩溃
- php - 垃圾收集器是否可以收集属于处于 `sleep()` 条件下的脚本的元素?
- linker - 无法在 BPL 中找到未解析的外部/过程入口点