I have a timetable with 10 columns that are all binary and I want to add them together so I get a sum of those binary numbers for each row. Is there an easy way to do this?

6 vues (au cours des 30 derniers jours)
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
this is a copy and paste of the timetable, but it has nearly 2 million rows so I want to find an easy way to do this! Thanks in advance.
  1 commentaire
Walter Roberson
Walter Roberson le 25 Avr 2020
Modifié(e) : Walter Roberson le 25 Avr 2020
By "sum" do you mean that you want to know the number of non-zero elements in each row?
Or do you want "sum" to mean according to boolean logic where addition corresponds to "or", and so the result would be 1 if any bit was set and 0 otherwise?
Or do you want "sum" to mean according to xor logic, 0+0 -> 0, 0+1 -> 1, 1+0 -> 1, 1+1 -> 0, and so the result would be 1 if an odd number of bits was set and 0 otherwise?

Connectez-vous pour commenter.

Réponse acceptée

Peter Perkins
Peter Perkins le 27 Avr 2020
Modifié(e) : Peter Perkins le 27 Avr 2020
There are several ways to do this, here's one particularly simple one. Assuming you are starting with something like this ...
>> tt1 = array2timetable(randi([0 1],5,3),'rowTimes',seconds(1:5))
tt1 =
5×3 timetable
Time Var1 Var2 Var3
_____ ____ ____ ____
1 sec 1 1 1
2 sec 0 1 0
3 sec 1 0 1
4 sec 1 0 0
5 sec 1 0 1
... then combine the vars into one, and sum across rows.
>> tt2 = mergevars(tt1,1:3)
tt2 =
5×1 timetable
Time Var1
_____ ___________
1 sec 1 1 1
2 sec 0 1 0
3 sec 1 0 1
4 sec 1 0 0
5 sec 1 0 1
>> tt2.Var1 = sum(tt2.Var1,2)
tt2 =
5×1 timetable
Time Var1
_____ ____
1 sec 3
2 sec 1
3 sec 2
4 sec 1
5 sec 2
Or maybe you want to keep the individual vars around:
>> tt1.Var4 = sum(tt1{:,:},2)
tt1 =
5×4 timetable
Time Var1 Var2 Var3 Var4
_____ ____ ____ ____ ____
1 sec 1 1 1 3
2 sec 0 1 0 1
3 sec 1 0 1 2
4 sec 1 0 0 1
5 sec 1 0 1 2

Plus de réponses (1)

Sindar
Sindar le 25 Avr 2020
% example table
mytable=array2table(randi([0 1],20,10));
% create column variable with sum
sum_all = sum(mytable{:,1:10},2);
% add sum column to table
mytable.sum_all = sum(mytable{:,1:10},2);

Catégories

En savoir plus sur Tables 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