MATLAB: How to get the corresponding logic value based on the sum of vector elements

arraysort

I have a vector which is [1,1,2,3,5]; I want to loop through all the elements in the vector to check whether the sum of each elements is equal to my input. After that put the corresponfding index of the possible answer as a reference to a new vector which retrun the logic value. For example, if the inout is 6, the corresponding logic value suppose to be [1,0,0,0,1] or anyother combination. The problem is if the value is bigger than 8 it need the sum of 3 elements in vector. How I can get the same answer when the input need three elements add together?

Best Answer

  • A = [1,1,2,3,5];
    my_input = 5;
    out = [];
    n = numel(A);
    ii = 1:n;
    for jj = 1:n
    k = nchoosek(ii,jj);
    r = sum(reshape(A(k),size(k)),2);
    lo = r == my_input;
    if any(lo)
    p = k(lo,:);
    m = size(p,1);
    out = [out;accumarray([repmat(1:m,jj,1),p(:)],1,[m,n])];
    end
    end