matlab - 找到有趣信号的开始和停止

时间:2016-07-27 06:45:31

标签: matlab signal-processing

我有一个看起来像这样的信号: enter image description here

我想找到一种方法来定位中间部分的开始和结束。

我所做的是,0.5以上和以下的值是常数==> 1,如果我发现连续多次1次意味着它是我的信号......但我认为这不是一个好方法!首先我的"门槛"不会每次都是0.5,我相信它存在一些更好的方法。

如果你们有一些文件或想法......

非常感谢。

1 个答案:

答案 0 :(得分:1)

正如其他人所提到的那样,它更像是一个DSP问题而且dsp.stackexchange.com会给你一个更好的答案,但在此之前这可能有所帮助:

data=csvread('acceleration.txt',1)

threshold_y=max(data)*0.5; %Thanks to GameOfThrows
thershold_x=101; %how many zeros can be between to ones to still count as continuous 
addframe=50; %if you want a little bit of data before and after the active area
logic_index=data>threshold_y; 
num_index=find(logic_index);
distance=diff(num_index);

gaps=[1 ; find(distance>thershold_x)]; %find the gaps bigger than your threshold 
final_index=false(length(data),1); 

for i=1:length(gaps)-1 %add ones between 
    final_index(num_index(gaps(i)+1)-addframe:num_index(gaps(i+1))+addframe)=true;
end
plot(x,data,x,final_index);

它基本上是你在你的问题中所描述的,但是在一个区域之间增加了处理零。感谢@GameofThrows的门槛理念。