Borrar filtros
Borrar filtros

How to search for specific characters within a string.

2 visualizaciones (últimos 30 días)
Alex
Alex el 18 de Sept. de 2013
Comentada: dpb el 1 de Oct. de 2013
Say I have the following files,
foo1.85e-01.mat
foo1.79e+00.mat
foo1.82e+00.mat
foo1.94e+00.mat
foo2.30e+00.mat
How can I select just the files with numbers between 1.8 and 2.0, i.e., the third and fourth files? Together the commands
flist = dir('foo1.8*e+00.mat')
and
flist = dir('foo1.9*e+00.mat')
return all the desired files. But is there a single query that will return the same files?

Respuesta aceptada

dpb
dpb el 18 de Sept. de 2013
The OS wildcard search isn't flexible enough directly; I'd just return them all and then winnow the list while processing it -- sotoo
d=dir('foo*.mat');
for ix=1:length(d)
fn=d(ix).name;
if ~iswithin(sscanf(fn,'foo%f.mat'), 1.8, 2.0), break, end % skip unwanted
...
end
where iswithin is my handy helper function
function flg=iswithin(x,lo,hi)
% returns T for values within range of input
% SYNTAX:
% [log] = iswithin(x,lo,hi)
% returns T for x between lo and hi values, inclusive
flg= (x>=lo) & (x<=hi);
  2 comentarios
Alex
Alex el 1 de Oct. de 2013
Thanks, dpb. I've implemented something similar in my code now. The sscanf function was the thing I was looking for, something that would extract numbers from a string.
dpb
dpb el 1 de Oct. de 2013
Glad it helped...

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by