MATLAB: How to grab Numbers within a string

functionsphysicsregexpsciencesplitting

Hi, I'll try to be as concise as possible.
So I have a document full of files, where the filename denotes the coordinates of the dataset.
As an example, one file is called "Dx(005_50);Dy(095_25)" so it is 5.5mm on the x-axis and 95.25mm on the y axis. I have Matlab reading in the files and plotting the data in the correct coordinates when the naming convention used to just be "005_50_095_25" as I just used regexp and 'split' to seperate the numbers into different matrix positions.
I basically want to have Matlab do the same thing with the new naming conventions although I haven't had loads of experience with regexp and have tried using 'tokens' to no avail.
I basically want a result of;
ans = [005 , 50, 095, 25]
if that makes sense.
Cheers.

Best Answer

There are two different outputs. The first preserves the leading 0s by keeping the numbers in string format. The second puts the numbers into numerical format.
s = 'Dx(005_50);Dy(095_25)';
numStr = regexp(s, '\d+', 'match');
numStr =
1×4 cell array
{'005'} {'50'} {'095'} {'25'}
numVec = str2double(numStr);
numVec =
5 50 95 25
Related Question