EDA365电子论坛网

标题: 一维数列分割问题 [打印本页]

作者: weiweipcb    时间: 2020-5-12 10:45
标题: 一维数列分割问题

) T* I3 q7 a! Z% l- s我有很多类似于a这样的一维数列,我想把它按中间0的部分分割成多列矩阵,保存在B里。在数列中信号出现的位置不确定,在数列中出现信号的数量不确定,比如a中有前后三段信号,中间都是0,则分割成附件B的样子,请教大神,非常感谢!
2 F+ o$ o5 N4 a) g2 W) }
# A: w' S& I4 l1 B4 }# M
作者: Allevi    时间: 2020-5-12 11:16
你这A序列里面有形如'a,b,c,0,d,e...'这种情形中的0怎么算?算分割开'a,b,c'与'd,e'还是直到连续出现多个0才视为分割?& G: q: T2 |/ q
我加了个Limit 数值,连续出现多个零时才会分割) l' m/ c# g! O' N
结果Result 与B数组一致
8 t8 d; O7 B; l( b% X3 a$ [Limit = 10;$ r, d6 x$ z4 K4 k. M
idx = find(A~=0);
  z- B' N1 |, W0 J& u5 M) JIDX = diff(idx);
; N+ G* G; T+ Q" zStarting = idx( [1; find(IDX>Limit) + 1] );
. ~0 V) @6 T  ^( O) U/ VEnding = idx( [find(IDX>Limit); end] );
9 S) J+ z+ h; k2 NLength = max( Ending - Starting + 1 );
- X6 U. Z- c7 f9 s. U3 R3 \temp = arrayfun(@(ii) [A(Starting(ii):1:Ending(ii));zeros(Length + Starting(ii) - Ending(ii) - 1,1)],...
! j6 \/ d, c0 w    [1:1:numel(find(IDX>Limit))+1],'UniformOutput',false);
/ C. _, h, a0 d" nResult = [temp{:}];
. v" |3 y  K& Fdisp( max( max(abs(Result - B)) ) )
作者: weiweipcb    时间: 2020-5-12 14:22
Allevi 发表于 2020-5-12 11:16
" f& U3 k$ j( J3 l/ ]1 S8 T你这A序列里面有形如'a,b,c,0,d,e...'这种情形中的0怎么算?算分割开'a,b,c'与'd,e'还是直到连续出现多个0 ...

# ?! D4 B/ I  I) ^( N感谢大神,是的,直到出现连续多个0的时候才开始分割,之前我就一直被信号中出现的个别0卡住了。
7 M4 I' @6 D; A




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2