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

1 Stimme

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
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

0 Stimmen

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

0 Stimmen

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

Produkte

Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by