Borrar filtros
Borrar filtros

How can I split measured data in separate vectors, depending on sign value?

1 visualización (últimos 30 días)
Hello! Is it possible to split measured data f.e.v= [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1] in separate vectors, f.e. only the 'growing' values: v1=[1 2 3 4 5], v2=[1 2 3 4 5].
Maybe with a find(sign(diff(v))==1) ?
Thank you!

Respuesta aceptada

Star Strider
Star Strider el 7 de Mzo. de 2022
One approach —
v= [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1];
dv = gradient(v);
sel = v(dv>=0);
dsel = diff([1 find(diff([sel(1) sel])<0) numel(sel)+1]);
C = mat2cell(sel, size(sel,1), dsel)
C = 1×2 cell array
{[1 2 3 4 5]} {[1 2 3 4 5]}
v1 = C{1}
v1 = 1×5
1 2 3 4 5
v2 = C{2}
v2 = 1×5
1 2 3 4 5
.
  2 comentarios
Anna B.
Anna B. el 7 de Mzo. de 2022
Editada: Anna B. el 7 de Mzo. de 2022
Thank you very much for the quiсk response. I have tried both variants and it works perfectly!

Iniciar sesión para comentar.

Más respuestas (1)

Jan
Jan el 7 de Mzo. de 2022
Editada: Jan el 7 de Mzo. de 2022
Start with a simple loop approach:
v = [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1];
dv = [false, diff(v) > 0, false];
ini = strfind(dv, [false, true]);
fin = strfind(dv, [true, false]);
C = cell(1, numel(ini));
for iC = 1:numel(ini)
C{iC} = v(ini(iC):fin(iC));
end
C
C = 1×2 cell array
{[1 2 3 4 5]} {[1 2 3 4 5]}
  1 comentario
Anna B.
Anna B. el 7 de Mzo. de 2022
Editada: Anna B. el 7 de Mzo. de 2022
Thank you very much for the quick response. I have tried both variants and it works perfectly!

Iniciar sesión para comentar.

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