我想找到一种方法来定位中间部分的开始和结束。
我所做的是,0.5以上和以下的值是常数==> 1,如果我发现连续多次1次意味着它是我的信号......但我认为这不是一个好方法!首先我的"门槛"不会每次都是0.5,我相信它存在一些更好的方法。
如果你们有一些文件或想法......
非常感谢。
答案 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的门槛理念。