Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

# Delete Lines if there are three e qual lines

1 visualizzazione (ultimi 30 giorni)
Giuseppe Antonacci il 29 Ott 2018
Chiuso: MATLAB Answer Bot il 20 Ago 2021
Hi, i have this problem. I have a matrix A(m ; 8). I would have new Matrix B where are delete the Lines Whith this idea: if in matrix A There are three Numbers that are the same in Colomn 3 and 5, in the new Matrix delete this three Lines.
##### 7 CommentiMostra 5 commenti meno recentiNascondi 5 commenti meno recenti
jonas il 29 Ott 2018
Modificato: jonas il 29 Ott 2018
Let me guess
A =
1 3 7 8 9 7 2 8
9 0 3 5 2 1 4 9
0 2 3 6 2 7 7 7
3 2 3 5 2 2 5 7
Delete rows where three or more (consecutive???) columns share the same value? Clarify:
• consecutive duplicates only?
• limit the check to columns 3 & 5?
• exactly three duplicates or more than three?
• is the matrix always 4 rows?
• What if only column 3 has consecutive duplicates? Or only column 5?
To summarize: I don't think you have thought this through.
Giuseppe Antonacci il 29 Ott 2018
this matrix in an example. the matrix is (m;8). the first three point in correct.

### Risposte (1)

Stephen23 il 29 Ott 2018
Modificato: Stephen23 il 29 Ott 2018
This should get you started:
>> A = [1,3,7,8,9,7,2,8;9,0,3,5,2,1,4,9;0,2,3,6,2,7,7,7;3,2,3,5,2,2,5,7]
A =
1 3 7 8 9 7 2 8
9 0 3 5 2 1 4 9
0 2 3 6 2 7 7 7
3 2 3 5 2 2 5 7
>> B = [1,3,7,8,9,7,2,8] % expected output
B =
1 3 7 8 9 7 2 8
>> X = diff(A(:,[3,5]),1,1)==0;
>> Y = X(1:end-1,:) & X(2:end,:);
>> Z = any(conv2(Y,[1;1;1])>0,2); % either column 3 OR 5
>> B = A(~Z,:)
B =
1 3 7 8 9 7 2 8
If you want both columns to fit the condition:
Z = all(conv2(Y,[1;1;1])>0,2)
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
madhan ravi il 29 Ott 2018
Cool @ Stephen was struggling to figure it out thanks

Questa domanda è chiusa.

### Community Treasure Hunt

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

Start Hunting!

Translated by