# Removing values from two different variables

1 view (last 30 days)
Uerm on 10 Feb 2020
Commented: the cyclist on 13 Feb 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?

the cyclist on 10 Feb 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);
the cyclist on 13 Feb 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.

R2019b

### Community Treasure Hunt

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

Start Hunting!