How do I find unique points in an array in a certain context?
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I am trying to find unique points in an array but within a unique context.
Say I have the following arrays consisting of x and y coordinates at spcific time points:
time = [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]';
x_coord = [ 1 1 1 rand(1,6) 1 1 1 rand(1,5) 1 1]';
y_coord = [[ 1 1 1 rand(1,6) 1 1 1 rand(1,5) 1 1]';
mat = [x_coord y_coord];
I want to find the unique x,y coordinates so that the first value of the '1's is preserved. Specifically, the unique X/Y point indices would be:
ia = 1, 4, 5, 6, 7, 8, 9,10,13,14,15,16,17,18; (essentially preserves the 1s that occur later on in the matrix)
when using the unique() function, it removes the 1s later on in the matrix.
is there a way to find the unique points but preserve the same points that occur later in time?
1 commentaire
Walter Roberson
le 28 Avr 2023
Are you sure that you want unique() ? unique() is talking about the global situation -- so for example [x1, y1; x2, y2; x1, y1] the second x1, y1 would be considered duplicate .
It sounds to me as if it is more you are concerned whether you are in a run of duplicate values, which is a different task that can be determined with local information.
Réponse acceptée
Image Analyst
le 28 Avr 2023
Modifié(e) : Image Analyst
le 28 Avr 2023
Try this:
time = [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]';
x_coord = [ 1 1 1 rand(1,6) 1 1 1 rand(1,5) 1 1]';
y_coord = [ 1 1 1 rand(1,6) 1 1 1 rand(1,5) 1 1]';
mat = [x_coord, y_coord]
all1rows = all(mat == 1, 2); % Find out which rows have 1 in every column.
% Throw out row if the prior row is all 1s.
% There is a vectorized way but I think you might find the for loop more intuitive.
rowsToKeep = true(numel(x_coord), 1);
for row = 2 : numel(all1rows)
if (all1rows(row) == 1) && (all1rows(row) == all1rows(row-1))
rowsToKeep(row) = false;
end
end
ia = find(rowsToKeep)'
mat = mat(rowsToKeep, :)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!