Find differences between 2 tables

70 Ansichten (letzte 30 Tage)
Dion Theunissen
Dion Theunissen am 26 Aug. 2022
Kommentiert: Adam Danz am 13 Jan. 2026 um 15:07
I have to tables, an old one and a new one.
Is there a function or a way to check what the differences are between 2 tables based on checking rows?
So in this example, my output needs to be row 2 cause the other rows are identical.

Akzeptierte Antwort

Cris LaPierre
Cris LaPierre am 26 Aug. 2022
You could try using setdiff.
If A and B are tables or timetables, then setdiff returns the rows from A that are not in B.
  1 Kommentar
Adam Danz
Adam Danz am 13 Jan. 2026 um 15:07
See also setxor which will list rows rows from table1 and table2 that differ.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Voss
Voss am 26 Aug. 2022
If your tables are the same size and both contain all numeric data, then this would work:
% create some tables:
t1 = table([1;2;3],[4;5;6],[7;8;9])
t1 = 3×3 table
Var1 Var2 Var3 ____ ____ ____ 1 4 7 2 5 8 3 6 9
t2 = table([1;2;3],[4;15;6],[7;8;9])
t2 = 3×3 table
Var1 Var2 Var3 ____ ____ ____ 1 4 7 2 15 8 3 6 9
% find rows that are different:
row_different = find(~all(t1{:,:} == t2{:,:},2))
row_different = 2

dpb
dpb am 26 Aug. 2022
Bearbeitet: dpb am 26 Aug. 2022
ix=(any(A{:,:}~=B{:,:},2)&all(isfinite([A{:,:} B{:,:}]),2))|(all(isnan(A{:,:})~=isnan(B{:,:}),2));
This is somewhat tricky because NaN compares as isequal() to nothing, including itself so it will always show up.

Kategorien

Mehr zu Tables finden Sie in Help Center und File Exchange

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by