Effacer les filtres
Effacer les filtres

Compare two tables with different length

3 vues (au cours des 30 derniers jours)
Dixi
Dixi le 27 Juin 2019
Hey MatLab users,
i need help to compare different columns from two tables (T1 and T2) with different length for various conditions (date, time, timestep, A, B, C) to cause a result (T2.res).
T2.res should be = 1 for every timestep in T2.timestep if date and time are equal and if the value T1.A (row-1) is not equal or greater than T1.A (row) when T1.B (row) = 1.
T1.date = [20190101; 20190101; 20190101; 20190101; 20190101; 20190101; 20190102; 20190102; 20190102; 20190102; 20190102; 20190102; 20190102; 20190102]
T1.time = [0; 0; 0; 12; 12; 12; 0; 0; 0; 0; 6; 6; 6; 6] % sorted time (0,1,2...)
T1.A = [20; 30; 35; 10; 30; 45; 28; 42; 60; 65; 20; 45; 50; 60] % cumulative value per T1.time
T1.B = [1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 1; 0; 0; 0] % max. one value "1" in T1.B per T1.time value
T2.date = [20190101; 20190101; 20190101; 20190101; 20190101; 20190101; 20190101; 20190102; 20190102; 20190102; 20190102; 20190102; 20190102; 20190102]
T2.time = [0; 0; 0; 12; 12; 12; 12; 0; 0; 0; 6; 6; 6; 6] % sorted time (0,1,2...)
T2.timestep = [1; 2; 3; 1; 2; 3; 4; 1; 2; 3; 1; 2; 3; 4] % sorted timesteps (1,2,3,4...)
T2.C = [15; 5; 25; 10; 20; 40; 5; 13; 39; 55; 8; 1; 24; 20] % different positive values
% Conditions might be like:
% % if T1.date == T2.date && T1.time == T2.time && T1.B == 1 && % "first row in T1" && T1.B
% T2.res = 1;
Result should be:
T2.res = [1; % date: ok, time: ok, T1.B == 1 is the first value in T1.time == 0: ok
1; % date: ok, time: ok, T1.B == 1 is the first value in T1.time == 0: ok
1; % date: ok, time: ok, T1.B == 1 is the first value in T1.time == 0: ok
0; % date: ok, time: ok, T1.B == 1 (row) and T1.A == 30 (row) but T1.A (row-1) == 10 >= T2.C == 10: false
1; % date: ok, time: ok, T1.B == 1 (row) and T1.A == 30 (row) and T1.A (row-1) == 10 < T2.C == 20: ok
1; % date: ok, time: ok, T1.B == 1 (row) and T1.A == 30 (row) and T1.A (row-1) == 10 < T2.C == 40: ok
0; % date: ok, time: ok, T1.B == 1 (row) and T1.A == 30 (row) but T1.A (row-1) == 10 >= T2.C == 5: false
0; % date: ok, time: ok, T1.B == 1 (row) and T1.A == 60 (row) but T1.A (row-1) == 42 >= T2.C == 13: false
0; % date: ok, time: ok, T1.B == 1 (row) and T1.A == 60 (row) but T1.A (row-1) == 42 >= T2.C == 39: false
1; % date: ok, time: ok, T1.B == 1 (row) and T1.A == 60 (row) and T1.A (row-1) == 42 < T2.C == 55: ok
1; % date: ok, time: ok, T1.B == 1 is the first value in T1.time == 12: ok
1; % date: ok, time: ok, T1.B == 1 is the first value in T1.time == 12: ok
1; % date: ok, time: ok, T1.B == 1 is the first value in T1.time == 12: ok
1] % date: ok, time: ok, T1.B == 1 is the first value in T1.time == 12: ok
Thanks!!

Réponses (0)

Catégories

En savoir plus sur Data Type Identification 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!

Translated by