Borrar filtros
Borrar filtros

How to extract data from an array

3 visualizaciones (últimos 30 días)
Peter Darrouj
Peter Darrouj el 11 de Mzo. de 2022
Respondida: Benjamin Thompson el 11 de Mzo. de 2022
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

Respuesta aceptada

Benjamin Thompson
Benjamin Thompson el 11 de Mzo. de 2022
Use
signal= sig(i-20000:1:i+50000);
And you probably need checks in case i < 20000 or i > (end - 50000) as special cases.

Más respuestas (1)

KSSV
KSSV el 11 de Mzo. de 2022
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) ;
  1 comentario
Peter Darrouj
Peter Darrouj el 11 de Mzo. de 2022
i changed
signal= (sig(i-20000):1:sig(i+50000));
to:
signal= sig((i-20000):(i+50000));
This seems to have fixed the problem.
I still need to test ur answer because it looks like an easier way, but i dont understand what you did.

Iniciar sesión para comentar.

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by