Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit:

Excluded Digits from vector

Asked by Harish Maradana on 22 Aug 2014
Latest activity Commented on by Guillaume on 22 Aug 2014

vector=[1 2 5 13 55 23 15],excluded dig=5 then out=[1 2 13 23] ,another example vector=[3 24 7 9 18 55 67 71],excluded dig=7 then out=[3 24 9 18 55]

1 Comment

the cyclist on 22 Aug 2014

I posted this as a Cody problem . As you may know, Cody rewards brevity of code over all other things.

Harish Maradana


No products are associated with this question.

3 Answers

Answer by the cyclist on 22 Aug 2014
Accepted answer

I expect there is a much cleaner method, but here is one that works:

vector = [1 2 5 13 55 23 15];
exDigit = 5;
v = vector;
hasDigit = false(1,numel(v));
while max(v>=1)
    hasDigit = hasDigit | mod(v,10)==exDigit;
    v = floor(v/10);
new_vector = vector(not(hasDigit))


the cyclist
Answer by Guillaume on 22 Aug 2014
str2num(regexprep(num2str(vector), sprintf('\\<\\d*%d\\d*\\>', digit), ''))

Is a neat one liner but may not be faster than the cyclist answer due to the conversion to/from string and the use of regular expression.


Guillaume on 22 Aug 2014

Another potential method, faster than regexp but still slower than the cyclist's:

vector(arrayfun(@(n) all(num2str(n)-'0' ~= digit), vector))
the cyclist on 22 Aug 2014

I stole this solution and posted it to Cody. As I write this, it is the leader.

Guillaume on 22 Aug 2014

What? No fair! I should so rightly be the leader! ;)

Ha! Beaten with a variant on my regexp one-line :)

Answer by the cyclist on 22 Aug 2014

Here is a solution that came out of Cody. The inputs to the function are the vector v and the excluded digit d.

function ans = digitRemove(v,d)
I = [];
for i = 1 : length(v)
    if ~any(ismember( num2str(v(i)) - '0' , d))
        I = [I i];


the cyclist

Contact us