|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用 diff 函数统计向量中连续出现的数字并计数! \: C" j" w& y$ m: i
, e) B# a' v! d0 `
! O, ]8 T x# E; }( J& Mdiff: 求前后两项之差,diff(X)= [X(2)-X(1),X(3)-X(2),...,X(n)-X(n-1)]。$ L& \+ T) Z9 ^0 h" A1 H2 a5 l
: k2 b- p1 J/ i& o8 c1 O
A = [0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1];
8 g+ o4 g. x2 h; G3 L' M# Nk = diff([0 A 0]) %对A前后补0之后再使用diff,补0是为了保证对于A的第一个和最后一个元素是1的情况,也能够通过diff求得1或-1,然后再根据1和-1来寻找连续1的位置和个数
+ D$ K. G% Z/ O0 g* t, [/ E6 kind = find(k==1) %1出现的位置即连续1出现的位置
) w3 l' K* b+ E+ q: j, |num = find(k==-1)-ind %-1和1出现的位置差即连续1出现的个数: t* e. e; H- D0 [+ H7 M1 ~ [# i4 J) p
其中 ind 是出现连续1的首尾的索引,num 是该连续1出现的个数。这里 ind = [4 8 12 18], num = [3 2 3 1],也就是说 A 向量中4这个位置开始出现连续1,连续出现3次。同理8位置开始出现连续1,连续出现2次。 |
|