How to detect given pattern and delete the current row

1 vue (au cours des 30 derniers jours)
Mekala balaji
Mekala balaji le 16 Oct 2018
Modifié(e) : Jan le 16 Oct 2018
Hi,
I have below cell array (i am using matlab 2016a),
I want to delete rows if match the below criterion:
For every current row contains: Column1 is : Passed, Column2 is Auto, and column3 is 1 & and if Previous row: column1 is Manual & column2 is Passed. Then Remove current row.
Input:
Strucked Atomatic 23
Passed Mannual 41
Passed Automatic 1
Strucked Atomatic 23
Passed Mannual 41
Passed Mannual 126
Passed Automatic 1
Desired output:
Strucked Atomatic 23
Passed Mannual 41
Strucked Atomatic 23
Passed Mannual 41
Passed Mannual 126
  1 commentaire
Jan
Jan le 16 Oct 2018
What have you tried so far? Which problem do you have?

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 16 Oct 2018
Modifié(e) : Jan le 16 Oct 2018
C = {'Strucked', 'Atomatic', 23; ...
'Passed', 'Mannual', 41; ...
'Passed', 'Automatic', 1; ...
'Strucked', 'Atomatic', 23; ...
'Passed', 'Mannual', 41; ...
'Passed', 'Mannual', 126; ...
'Passed', 'Automatic', 1};
if current row: Column1 is : Passed, Column2 is Auto,
and column3 is 1 & in Previous row:
column1 is "Manual & column2 is Passed. Then Remove current row.
match1 = strcmp(C(:, 1), 'Passed') & ...
strcmp(C(:, 2), 'Automatic') & ...
cat(1, C{:, 3}) == 1;
match2 = strcmp(C(:, 1), 'Manual') & ...
strcmp(C(:, 2), 'Passed');
match = match1 & [false; match2(1:end-1)]; % FALSE: no "previous" for 1st element
Result = C(match, :)

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by