Removing values from two different variables

2 visualizaciones (últimos 30 días)
Uerm
Uerm el 10 de Feb. de 2020
Comentada: the cyclist el 13 de Feb. de 2020
Hi,
I have attached two variables, AL.mat and QRS.mat. AL.mat is a 1x48 cell containing labels 0, 1 and 2. QRS.mat is also a 1x48 cell and it contains peak indices.
Basically, I want to remove all the 2's from the AL variable. Simultaneously, I want to remove the peak indices that correspond to these 2's in the QRS variable. How can I do that?

Respuesta aceptada

the cyclist
the cyclist el 10 de Feb. de 2020
% For each cell of AL, find the non-2's
keepIndices = cellfun(@(x)x~=2,AL,'UniformOutput',false);
% Keep the elements of AL that are non-2's
AL_no_2 = cellfun(@(x,y)x(y),AL, keepIndices,'UniformOutput',false);
% Keep the elements of QRS that are non-2's
QRS_no_2 = cellfun(@(x,y)x(y),QRS,keepIndices,'UniformOutput',false);
  7 comentarios
Uerm
Uerm el 11 de Feb. de 2020
I was thinking about shifting the samples. For instance, if we say that
QRS_no_2{i} = [50 100 240 390 500 1000 1100 1250]
we can see that there is a large gap between 500 and 1000. As you said this could be the area where the 2's are removed.
I was thinking about "shifting" the samples such that the sample 1000 will be something like the mean difference between 50 100 240 390 and 500 added to 500. If we say that the mean difference between these 5 points is 110, then instead of calling the next sample 1000, we will call it 610. The sample after this will be 710 (since 1100-1000 = 100) and so on.
Will this be possible to implement? It should be everywhere in all the relevant cells and no matter if the 2' were sorrounded by 0's or 1's.
the cyclist
the cyclist el 13 de Feb. de 2020
Sure, it is possible to implement. But it won't be a few simple lines of code like your original question. And I don't think you can do the entire cell array at once. The steps will be something like
  • Define a for loop that processes each element of the cell array in turn
  • For each element of the cell array AL, find the indices of the 2's. (You could use the find command.)
  • Use those to determine the indices just before and after that stretch of 2's
  • Do the math on QRS that you describe above
In a manner of speaking, it is much more of an algorithm, than a couple slick MATLAB command.

Iniciar sesión para comentar.

Más respuestas (0)

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by