Your code doesn't achieve the 'and' function. In the case when both a and b are false, the valid 'and' result should be false, but in your case it is true. You can use the or '|' function:
A = ~(~a|~b);
In matlab you can take advantage of the numerical representation of true and false:
A = logical(a*b);
