MATLAB: How can I generate a code based on specific value selection in a matrix

compare value to an arraygenerate code

I want to make a function that search for a value of y in x, either one element or sum of many elements, and return 1 or 0 to matrix Z, which is the same size as X, based on the elements chosen from X.
Example:
y=7;
x=[10 -1 -2 -3];
solution will be:
1) 10-1-2=7 ==> Z=[1 1 1 0];
2) 10-3=7 ==> Z=[1 0 0 1];
Any hints?

Best Answer

Here is one way as long as x is not too large. This technique will use too much memory if x is too large.
b = dec2bin(0:2^numel(x)-1)=='1'; % Intermediate step of producing all possible patterns
z = b(b*x'==y,:); % Pick off the rows of b that produce the desired sum
The rows of z contain the patterns that produce the desired sum.