Daniel@0: function p = find_equiv_posns(vsmall, vlarge) Daniel@0: % FIND_EQUIV_POSNS p[i] = the place where vsmall[i] occurs in vlarge. Daniel@0: % p = find_equiv_posns(vsmall, vlarge) Daniel@0: % THE VECTORS ARE ASSUMED TO BE SORTED. Daniel@0: % Daniel@0: % e.g., vsmall=[2,8], vlarge=[2,7,8,4], p=[1,3] Daniel@0: % Daniel@0: % In R/S, this function is called 'match' Daniel@0: Daniel@0: %if ~mysubset(vsmall, vlarge) Daniel@0: % error('small domain must occur in large domain'); Daniel@0: %end Daniel@0: Daniel@0: if isempty(vsmall) | isempty(vlarge) Daniel@0: p = []; Daniel@0: return; Daniel@0: end Daniel@0: Daniel@0: bitvec = sparse(1, max(vlarge)); Daniel@0: %bitvec = zeros(1, max(vlarge)); Daniel@0: bitvec(vsmall) = 1; Daniel@0: p = find(bitvec(vlarge)); Daniel@0: Daniel@0: %p = find(ismember(vlarge, vsmall)); % slower