Summing two binary vectors

조회 수: 73 (최근 30일)
Neeraj Chimwal
Neeraj Chimwal 2021년 3월 24일
댓글: Adam Danz 2021년 3월 25일
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.

채택된 답변

Fangjun Jiang
Fangjun Jiang 2021년 3월 24일
편집: Fangjun Jiang 2021년 3월 24일
%%
a = [1 0 1];
b = [1 1 0];
s=dec2bin(bin2dec(num2str(a))+bin2dec(num2str(b)))
out=str2num(s(:))
out =
1
0
1
1
  댓글 수: 1
Neeraj Chimwal
Neeraj Chimwal 2021년 3월 25일
That worked. Thanks

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Adam Danz
Adam Danz 2021년 3월 24일
편집: Adam Danz 2021년 3월 24일
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
ans = 1×4
1 0 1 1
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
ans = 1×5
1 0 0 1 1
  댓글 수: 2
Neeraj Chimwal
Neeraj Chimwal 2021년 3월 25일
Hello Adam. Thanks for answering. Also I want to say sorry coz before I didn't knew the difference between array and vectors (I know that sounds stupid). Your answer is based on vector I think but I wanted to know about array. Sorry I am new to matlab. But anyway, thanks for answering. I got to know something new here
Adam Danz
Adam Danz 2021년 3월 25일
@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)
ans = 1×2
1 3
B = [1;0;1];
size(B)
ans = 1×2
3 1
These are arrays that are not vectors
C = rand(2,3);
size(C)
ans = 1×2
2 3
D = rand(2,3,4);
size(D)
ans = 1×3
2 3 4

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by