Info
La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.
Removing repeating data points but keeping the first and last ones
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Hello, say I have matrix with repeating parts in the frist and second row and all zeros in the third
A=1,2,3,4,5,6,7,8,9,1,1,1,1,1,1,1,1,1,3,4,5,6
9,9,9,9,9,9,9,9,9,2,3,4,5,6,7,8,9,8,2,2,2,2
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
I want to keep the columns where there is no repeating in the column before and after. Additonally, I want to keep the columns where the repeating starts and ends. The resulting matrix would look like this in the end
A=1,9,1,1,3,6
9,9,2,8,2,2
0,0,0,0,0,0
How would I get this
thank you
2 comentarios
Image Analyst
el 20 de Mayo de 2019
What if your criteria would result in the first and second row having different numbers of elements?
Adam Danz
el 20 de Mayo de 2019
I wondered that, too. For example,
A=[ 1,2,3,4,5,6,7,1,1,1,1,1,1,1,1,1,1,1,3,4,5,6;
9,9,9,9,9,9,9,9,9,9,9,4,5,6,7,8,9,8,2,2,2,2;
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
% ^ ^ ^ ^
My answer removes columns in any of the rows have repeats (but keeps the first and last ones).
so,
Ap = 1 1 3 6
9 8 2 2
0 0 0 0
Respuestas (1)
Adam Danz
el 20 de Mayo de 2019
Editada: Adam Danz
el 11 de Jun. de 2019
A is your input matrix, Ap is the trimmed matrix.
isUnq = find(~any(diff(A([1,2],:),[],2)==0, 1))+1;
keepColIdx = unique([1,isUnq, isUnq-1, size(A,2)]);
Ap = A(:,keepColIdx);
Result
Ap =
1 9 1 1 3 6
9 9 2 8 2 2
0 0 0 0 0 0
0 comentarios
La pregunta está cerrada.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!