How to detect given pattern and delete the current row
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commento
Risposta accettata
Jan
il 16 Ott 2018
Modificato: Jan
il 16 Ott 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, :)
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Spectral Measurements in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!