Summing two binary vectors
42 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Neeraj Chimwal
am 24 Mär. 2021
Kommentiert: Adam Danz
am 25 Mär. 2021
How can I add two binary vector say a= 1 0 1, b= 1 1 0?
Using simply '+' gives decimal output. I want the summation in binary.
0 Kommentare
Akzeptierte Antwort
Fangjun Jiang
am 24 Mär. 2021
Bearbeitet: Fangjun Jiang
am 24 Mär. 2021
%%
a = [1 0 1];
b = [1 1 0];
s=dec2bin(bin2dec(num2str(a))+bin2dec(num2str(b)))
out=str2num(s(:))
out =
1
0
1
1
Weitere Antworten (1)
Adam Danz
am 24 Mär. 2021
Bearbeitet: Adam Danz
am 24 Mär. 2021
y = sumbin(a,b) adds two binary values a and b represented by boolean row vectors (1/0, true/false) and returns the results y as a boolean row vector.
log2dec(v) is a helper function called by sumbin() and converts the boolean vectors to binary strings and then to the decimal representation.
Demo:
a = [1 0 1]; % = 5
b = [1 1 0]; % = 6
log2dec = @(v)bin2dec(num2str(v));
sumbin = @(a,b)dec2bin(sum([log2dec(a), log2dec(b)]))-'0';
sumbin(a,b) % = 11
If you want to add more than 2 binary numbers in the form of boolean vectors,
y = sumbin(a,b,...,n) receives any number of boolean row vectors (1/0, true/false) and returns the results y as a boolean row vector.
a = [1 0 1]; % = 5
b = [1 1 0]; % = 6
c = [1]; % = 1
d = [1 1 1]; % = 7
log2dec = @(v)bin2dec(num2str(v));
sumbin = @(varargin)dec2bin(sum(cellfun(log2dec, varargin)))-'0';
sumbin(a,b,c,d) % = 19
2 Kommentare
Adam Danz
am 25 Mär. 2021
@Neeraj Chimwal just FYI, the first part of my answer and Fangjun Jiang's answer are practically the same, there's very little difference.
The second part of my answer shows how to extend the summation to more than 2 binary vectors.
All vectors are arrays but not all arrays are vectors. A vector is 2D with one dimention equal to 1.
These are vectors
A = [1 0 1];
size(A)
B = [1;0;1];
size(B)
These are arrays that are not vectors
C = rand(2,3);
size(C)
D = rand(2,3,4);
size(D)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!