Matlab - encontrar un caracter en matlab

   
Vista:

encontrar un caracter en matlab

Publicado por Mari (1 intervención) el 28/05/2009 19:59:51
¡Hola! Estoy haciendo un script en Matlab para procesar una serie de ficheros (muchos), el problema es que en esos ficheros los datos decimales están separados por comas y Matlab sólo entiende el '.' ¿cómo puedo hacer para cambiar las comas por puntos? Se me ocurrió algo así:

a=fread(fichero);
matriz=findstr(a,',');
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:encontrar un caracter en matlab

Publicado por Yppolf (8 intervenciones) el 29/05/2009 13:47:12
Hola!

La verdad es que es un poco complicado... Yo he tomado un ejemplo con este archivo de texto:

Estos son mis datos
5,8 8,9 -8,6 17,0
4,6 9,7 84,6 -89,7
5,4 -3,9 -7,1 0,4

El código quedaría así:

id=fopen('datos.txt','rt');

% Ahora indico que tengo una línea de encabezado ('headerlines',1)
% También indico que tengo 4 variables caracteres separadas por espacios ('%s...','delimiter',' ')

c=textscan(id,'%s %s %s %s','delimiter',' ','headerlines',1);
cr1=','; % Caracter del archivo para sustituir
cr2='.';
D=[];
for i=1:length(c)
for j=1:length(c{1})
A=char(c{i}(j));
B=strrep(A,cr1,cr2);
B=str2double(B);
D(j,i)=B; % Esta va a ser la matriz con tus datos
end
end
fclose(id);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:encontrar un caracter en matlab

Publicado por Yppolf (8 intervenciones) el 02/06/2009 13:42:41
He estado mirándolo otra vez, y hay otra forma un poco más sencilla, pero el archivo que contiene los datos, no puede tener encabezado:

ej El archivo P004.txt contiene:

5,8 8,9 -8,6
4,6 9,7 84,6
5,4 -3,9 -7,1
17,0 -89,7 0,4

El código es:

id=fopen('P004.txt','rt');
a=fread(id);
fclose(id);
A=char(a);
cr1=','; % Caracter del archivo para sustituir
cr2='.';
A=A';
B=strrep(A,cr1,cr2);
C=str2num(B) % Matriz que contiene los datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar