Reading numbers from alphanumeric strings in a cell matrix
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Matt Fig
el 13 de Oct. de 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 comentarios
Matt Fig
el 13 de Oct. de 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'))
Más respuestas (1)
Azzi Abdelmalek
el 13 de Oct. de 2012
Editada: Azzi Abdelmalek
el 13 de Oct. de 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 comentarios
Azzi Abdelmalek
el 13 de Oct. de 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))
Ver también
Categorías
Más información sobre Characters and Strings en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!