extract numbers from cell array

hello!
i have this cell array wich may have many cells,and not only three as here.
A = {'jdldi'; 'jdks5.4555h'; 'f67'}
i want to extract only the numbers,and show them as one number
for this example i want the result to be 5.455567
any help please?
Thank you very much!

2 Comments

What about 67?
in the first cell:no numbers
in the second cell:5.4555
in the third cell:67
so,i want to merge all the numbers from every cell and take the number 5.455567

Sign in to comment.

 Accepted Answer

A = {'jdldi'; 'jdks5.4555h'; 'f67'}
b=regexp(A,'\d+(\.)?(\d+)?','match')
out=str2double([b{:}])

3 Comments

alex
alex on 10 May 2014
Edited: alex on 10 May 2014
thank you! do you have any idea of how to merge these numbers to one number?
in the first cell:no numbers
in the second cell:5.4555
in the third cell:67
so,i want to merge all the numbers from every cell and take the number 5.455567
A = {'jdldi'; 'jdks5.4555h'; 'f67'}
b=regexp(A,'\d+(\.)?(\d+)?','match')
out=strjoin([b{:}],'')
thank you very much Azzi! have a nice day!

Sign in to comment.

More Answers (2)

A1 = regexp(A,'[\d*\.]*\d*','match')
A2 = [A1{:}]
out = str2double(strcat(A2{:}))
Jan
Jan on 10 May 2014
Edited: Jan on 18 May 2014
A simple version:
A = {'jdldi'; 'jdks5.4555h'; 'f67'}
S = cat(2, A{:});
S(isletter(S)) = [];
The simpler the code, the less chances to insert a bug.

1 Comment

Thanks Jan! I wasn't aware of the isletter function

Sign in to comment.

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!