How to extract data from an array
    6 次查看(过去 30 天)
  
       显示 更早的评论
    
Hello. I have a signal with over 10mil data points. Whenever my signal crosses a certain threshhold i want to extract x numbers of point before and x numbers of point after it hit the threshhold. 
IsEvent = true;    
peakthreshhold = 120; 
for i = 1:1:length(sig)         
    if (sig(i) >= peakthreshhold && IsEvent)   
       signal= (sig(i-20000):1:sig(i+50000));  
       disp(signal)
       IsEvent = false;
    end
end 
so basically i wanted to extract 20000 points before it hit sig(i) to 50000 after it hit sig(i), so i get a new array with 70000 points extracted from sig(i). 
If i run it now, i get 15 points 
0 个评论
采纳的回答
  Benjamin Thompson
      
 2022-3-11
        Use
signal= sig(i-20000:1:i+50000);  
And you probably need checks in case i < 20000 or i > (end - 50000) as special cases.
0 个评论
更多回答(1 个)
  KSSV
      
      
 2022-3-11
        Let x be your signal and val be yout threshold. 
val = 50000 ;
tol = 10^-3 ; 
idx = find(abs(sig-val)<=tol) ; % this gives the index of your threshold 
v1 = sig(1:idx) ;
v2 = sig(idx+1:end) ; 
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!