MATLAB如何确定数据序列中非零数据段的起始和结束位置

在使用MATLAB进行数据处理时,经常遇到数据不全,在整个数据中存在多个不连续的数据段,中间空白位置则为0。在编程处理时,可以采用以下方法确定非零数据段的位置:

%假设有数据序列Series,长度为n

%找出数据序列中0元素,返回的Sign是一列长度相同的logical数据列
%与Series数据中0元素位置对应的元素为1,非0元素位置则为0
Sign = (Series == 0);
temp = diff(Sign);%计算Sign数据列中后一个元素与前一个元素的差,temp长度为n-1
StartPoint = find( temp == -1 ) + 1;%找出非零数据段起始位置
EndPoint = find( temp == 1 );%找出非零数据段结束位置
%上面的算法存在一个问题,就是当非零数据段在Series起始位置开始,或在Series末尾结束时
%则第一个StartPoint和最后一个EndPoint无法找出,需要额外确定一下
if Series(1)~=0
    StartPoint=[1;StartPoint];
end
if Series(end)~=0
    EndPoint=[EndPoint;length(Series)];
end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容