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?

5 Ansichten (letzte 30 Tage)
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 Kommentar
Walter Roberson
Walter Roberson am 25 Apr. 2020
Bearbeitet: Walter Roberson am 25 Apr. 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?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Peter Perkins
Peter Perkins am 27 Apr. 2020
Bearbeitet: Peter Perkins am 27 Apr. 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

Weitere Antworten (1)

Sindar
Sindar am 25 Apr. 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);

Kategorien

Mehr zu Tables finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by