Get the numbers of rows where values change

5 ビュー (過去 30 日間)
Maja Zdulska
Maja Zdulska 2020 年 7 月 16 日
コメント済み: Maja Zdulska 2020 年 7 月 16 日
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 件のコメント
Image Analyst
Image Analyst 2020 年 7 月 16 日
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.
Maja Zdulska
Maja Zdulska 2020 年 7 月 16 日
Yes, sorry, you're absolutely correct.

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

採用された回答

Image Analyst
Image Analyst 2020 年 7 月 16 日
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.
  1 件のコメント
Maja Zdulska
Maja Zdulska 2020 年 7 月 16 日
Many thanks.

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

その他の回答 (1 件)

David Hill
David Hill 2020 年 7 月 16 日
b=diff(a);%a being your matrix
c=find(b(:,1)~=0|b(:,2)~=0);%c=3,5,7

Community Treasure Hunt

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

Start Hunting!

Translated by