How to map Boolean functions

1 view (last 30 days)
hi I have elements from 0 to 15 in binary form named as tab1, f is the boolean function
s=[0,1,2,3,4,5,6,7,8,9,..15] %% binary values are stored in tab1
tab1 = [0 0 0 0;0 0 0 1;0 0 1 0;0 0 1 1 ; 0 1 0 0;0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 0;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1];
f = [0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0]';
%% I want to get the corresponding values of tab1 such as
% f(0 0 1 1) = 1 % this 1 is the 4th value in f
f(1 0 0 0) = 0 % this 0 is 8th place in f

Accepted Answer

Walter Roberson
Walter Roberson on 7 May 2021
tab1 = [0 0 0 0;0 0 0 1;0 0 1 0;0 0 1 1 ; 0 1 0 0;0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 0;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1];
f = [0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0]';
f(ismember(tab1, [0 0 1 1], 'rows'))
ans = 1
f(ismember(tab1, [1 0 0 0], 'rows'))
ans = 0
Or just use binary
f([0 0 1 1; 1 0 0 0] * [8;4;2;1] + 1)
ans = 2×1
1 0
  3 Comments
lilly lord
lilly lord on 7 May 2021
I have used this in my code
fx1=[];
for i=1:16
out1(i)=f(fx1(i,:) * [8;4;2;1] + 1);
out_1=xor(out1(i),f');
end
error
Unable to perform assignment because the left and right sides have a different number of elements.
can anyone guide me
Walter Roberson
Walter Roberson on 7 May 2021
You initialize fx1 as empty, so when you index it you get empty and empty cannot be assigned to non-empty

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!