How to detect given pattern and delete the current row

1 回表示 (過去 30 日間)
Mekala balaji
Mekala balaji 2018 年 10 月 16 日
編集済み: Jan 2018 年 10 月 16 日
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 件のコメント
Jan
Jan 2018 年 10 月 16 日
What have you tried so far? Which problem do you have?

サインインしてコメントする。

採用された回答

Jan
Jan 2018 年 10 月 16 日
編集済み: Jan 2018 年 10 月 16 日
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 件)

カテゴリ

Help Center および File ExchangeSpectral Measurements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by