How to ignore letters in a numeric cell?

8 views (last 30 days)
Daniel Tanner on 28 Jan 2020
Commented: Daniel Tanner on 29 Jan 2020
I have imported a vector into MatLab from excel which was originally imported from ANSYS. I would like to plot this vector against another one, however each entry has a 'mm' after it, like so:
Is there a way in MatLab to ignore the letters and just read the numbers so I can produce a plot? I know I could manually do this but I have over 200+ entries.
Any help is greatly appreciated, thanks!
2 CommentsShowHide 1 older comment
Daniel Tanner on 28 Jan 2020
It is in a cell array. They go from 0.01mm to 2.9mm.

Adam on 28 Jan 2020
Edited: Adam on 28 Jan 2020
cellfun( @(x) str2double( erase( x, 'mm' ) ), pin_radius )
should convert them to an array of doubles.
If you are using pre R2016b you would have to use something like this instead:
cellfun( @(x) str2double( strrep( x, 'mm', '' ) ), pin_radius )
(Note in that version the 3rd argument to strrep is two consecutive single quotes, not a double quote)
Daniel Tanner on 28 Jan 2020
Perfect, thank you!

Stephen23 on 28 Jan 2020
Simpler and much more efficient with sscanf:
>> C = {'0.01mm';'0.02mm';'0.03mm';'0.04mm'};
>> V = sscanf([C{:}],'%fmm')
V =
0.010000
0.020000
0.030000
0.040000
Daniel Tanner on 29 Jan 2020
Thank you!