extract numbers from cell array

148 Ansichten (letzte 30 Tage)
alex
alex am 10 Mai 2014
Kommentiert: Sebastian Lopez am 19 Apr. 2023
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 Kommentare
Azzi Abdelmalek
Azzi Abdelmalek am 10 Mai 2014
What about 67?
alex
alex am 10 Mai 2014
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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 10 Mai 2014
A = {'jdldi'; 'jdks5.4555h'; 'f67'}
b=regexp(A,'\d+(\.)?(\d+)?','match')
out=str2double([b{:}])
  3 Kommentare
Azzi Abdelmalek
Azzi Abdelmalek am 10 Mai 2014
Bearbeitet: Azzi Abdelmalek am 10 Mai 2014
A = {'jdldi'; 'jdks5.4555h'; 'f67'}
b=regexp(A,'\d+(\.)?(\d+)?','match')
out=strjoin([b{:}],'')
alex
alex am 10 Mai 2014
thank you very much Azzi! have a nice day!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Andrei Bobrov
Andrei Bobrov am 10 Mai 2014
A1 = regexp(A,'[\d*\.]*\d*','match')
A2 = [A1{:}]
out = str2double(strcat(A2{:}))

Jan
Jan am 10 Mai 2014
Bearbeitet: Jan am 18 Mai 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 Kommentar
Sebastian Lopez
Sebastian Lopez am 19 Apr. 2023
Thanks Jan! I wasn't aware of the isletter function

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by