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.

 Akzeptierte Antwort

Adam Danz
Adam Danz am 11 Dez. 2018

1 Stimme

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

2 Kommentare

Ryan Shone
Ryan Shone am 11 Dez. 2018
This has given me what I wanted and taken it a step further, really appreciate the quick response, didn't think to use 'match' rather than 'split' cannot thank you enough!
Adam Danz
Adam Danz am 11 Dez. 2018
Glad it worked out!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by