Reading numbers from alphanumeric strings in a cell matrix
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi ppl, i am reading a text file consisting of various lines of alpha-numeric strings...
N010 G00 X0 Y0 Z0 N020 G01 X-10 Y10 Z-1 N030 G01 X20 Y40 Z-1 N040 G04 X3 Y3 Z10 M03
Now I need all numerical values of X, i.e. -10,20,3. The problem I am facing is that the strings are read from text file as 'cell' vector and i have to convert them to 'char' to use 'regexp' using '\w*X\w*'....this works, but does not allow the negative number to be read because it starts with a '-'. What to do now??? can anybody help?? I am using MATLAB 2010
3 Kommentare
Akzeptierte Antwort
Matt Fig
am 13 Okt. 2012
X = {'N010' 'G00' 'X0' 'Y0' 'Z0' 'N020' 'G01'...
'X-10' 'Y10' 'Z-1' 'N030' 'G01' 'X20' 'Y40'...
'Z-1' 'N040' 'G04' 'X3' 'Y3' 'Z10' 'M03'};
N = cellfun(@str2double,regexp([X{:}],'(?<=X)-*\d+','match'))
3 Kommentare
Matt Fig
am 13 Okt. 2012
If you have:
X = ['N010 G00 X0 Y0 Z0 N020 G01 X-10 Y10',...
'Z-1 N030 G01 X20 Y40 Z-1 N040 G04 X3 Y3 Z10 M03']
Then simply use:
N = cellfun(@str2double,regexp(X,'(?<=X)-*\d+','match'))
Weitere Antworten (1)
Azzi Abdelmalek
am 13 Okt. 2012
Bearbeitet: Azzi Abdelmalek
am 13 Okt. 2012
A={'N010' 'G00' 'X0' 'Y0' 'Z0' 'N020' 'G01' 'X-10' 'Y10' 'Z-1' 'N030'}
y=cell2mat(cellfun(@(x) str2num(cell2mat(regexp(x,'-?[0-9]','match'))),A,'un',0))
3 Kommentare
Azzi Abdelmalek
am 13 Okt. 2012
A={' N010 G00 X0 Y0 Z0 N020 G01 X-10 Y10 Z-1 N030 G01 X20 Y40 Z-1 N040 G04 X3 Y3 Z10 M03'}
y=regexp(x,'-?[0-9,.]','match')
out=cell2mat(cellfun(@(x) str2num(cell2mat(x)),y,'un',0))
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!