# How to detect given pattern and delete the current row

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

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

### 採用された回答

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, :)

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

### カテゴリ

Help Center および File ExchangeNational Instruments Frame Grabbers についてさらに検索

### Community Treasure Hunt

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

Start Hunting!

Translated by