作者Evenni (乐而不淫哀而不伤)
看板MATLAB
标题Re: [问题] 将连续数字分群
时间Mon Jan 14 17:12:13 2013
找连续0个数
a=[0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0];
b= find([1 a 1]==1); % 找到所有的"1" 1 7 8 9 10 11 12 13 14 16 17 18 23
step1 = diff(b); % "1"的间隔-1就是连续0的个数 6 1 1 1 1 1 1 1 2 1 1 5
step1(step1==1) = []; % 把1提掉
RST = step1 -1; % 答案 5 1 4
※ 引述《tomjin (眯~)》之铭言:
: ※ 引述《aaa51902 (五楼好帅)》之铭言:
: : 我的问题有点复杂@@"
: : 资料如果是 a=[0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0];
: : "1和0不确定会连续出现几个"
: : 我现在想知道:一次连续出现 5个以上的1或0 是在a的 ?~??点
: : 该怎麽写才好
: : 目前我卡在
: : b=diff(a);
: : c=find(b==0); %找出b=0的点就是连续数字
: : d=diff(c); %卡在这里@@"
: : 有请各位帮帮我 谢谢
: a=[0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0];
: b=zeros(1,length(a));
: for i=1:length(a)
: if i+4<=length(a)
: if a(1,i)==1 & a(1,i+1)==1 & a(1,i+2)==1 & a(1,i+3)==1 & a(1,i+4)==1 %当=1
: b(1,i:i+4)='x';end
: if a(1,i)==0 & a(1,i+1)==0 & a(1,i+2)==0 & a(1,i+3)==0 & a(1,i+4)==0 %当=0
: b(1,i:i+4)='y';end
: end
: end
: m=find(b=='x');%找出x,y位置
: n=find(b=='y');
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.78.64.34
1F:推 wesson:GOOD 01/15 02:36
2F:→ YoursEver:把向量当成N-by-1的image, 用bwlabel + find 01/15 12:42