Get the numbers of rows where values change
5 views (last 30 days)
Show older comments
Maja Zdulska
on 16 Jul 2020
Commented: Maja Zdulska
on 16 Jul 2020
Hi,
I have an array of data, structured like this:
Latitude Longitude Height
23 54 7
23 54 3
23 54 8
23 55 4
23 55 2
24 54 0
24 54 1
24 55 2
24 55 7
How can I get the numbers of the rows where either Latitude or Longitude changes (so from the example above the output would be rows 3, 5 and 7)?
2 Comments
Image Analyst
on 16 Jul 2020
By the time you get down to row 3, nothing has changed yet. Row 3 is still the same as rows 1 and 2. Don't you mean 4, 6, and 8? Those are the actual rows where a change is first encountered.
Accepted Answer
Image Analyst
on 16 Jul 2020
By the time you get down to row 3, nothing has changed yet. Row 3 is still the same as rows 1 and 2. Don't you mean 4, 6, and 8? Those are the actual rows where a change is first encountered.
Try this:
m = [
23 54 7
23 54 3
23 54 8
23 55 4
23 55 2
24 54 0
24 54 1
24 55 2
24 55 7]
latChanged = [0; diff(m(:, 1))] % Logical -- use find() if you want row numbers.
lonChanged = [0; diff(m(:, 2))] % Logical -- use find() if you want row numbers.
eitherChanged = find(latChanged | lonChanged) % Row numbers where either lat OR lon changed.
More Answers (1)
David Hill
on 16 Jul 2020
b=diff(a);%a being your matrix
c=find(b(:,1)~=0|b(:,2)~=0);%c=3,5,7
0 Comments
See Also
Categories
Find more on Cell Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!