Matlab - mover lineas de un fichero de texto

   
Vista:

mover lineas de un fichero de texto

Publicado por rafa (1 intervención) el 15/08/2013 01:05:04
Buenos dias:

Supongamos que tengo un fichero de texto tal que asi:

2.5 1.2 7.8 2.0 -1.9 2.4
-1.97 2.5 25
2.5 1.17 7.5 2.01 -1
-1.98 2.41 25
..
..
..

Me gustaria que la segunda linea se moviese justo a continuacion de la primera, la cuarta sobre la tercera y asi sucesivamente (por asi decirlo, la linea par se coloca a continuacion de la impar), quedando tal que asi:

2.5 1.2 7.8 2.0 -1.9 2.4 -1.97 2.5 25
2.5 1.17 7.5 2.01 -1 -1.98 2.41 25


Como podria realizar esto con matlab??

Saludos y buen foro
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
Imágen de perfil de Jorge De Los Santos

mover lineas de un fichero de texto

Publicado por Jorge De Los Santos (212 intervenciones) el 15/08/2013 19:26:34
Hola Rafa...

Te adjunto el siguiente código que podrías utilizar...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear all;clc;
datos = fopen('texto.txt','r');
n=1;
while ~feof(datos)
   leer_linea = fgetl(datos);
   if isempty(leer_linea) || ~ischar(leer_linea), break, end
   C(n)= cellstr(leer_linea);
   n=n+1;
end
C=C';
C=str2num(cell2mat(C));
tam=size(C);
nfilas=tam(1);
k=1;
for n=1:2:nfilas-1
    N(k,:)=horzcat(C(n,:),C(n+1,:));
    k=k+1;
end
fclose(datos);
dlmwrite('texto1.txt',N,'delimiter','\t');


Evidentemente habrás de sustituir el nombre correspondiente de tu fichero de datos... Ejecutalo y prueba los resultados... Cualquier duda podéis preguntar y en medida de lo posible os responderé...

Saludos

Jorge De Los Santos
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

mover lineas de un fichero de texto

Publicado por rafa (1 intervención) el 15/08/2013 19:58:27
Muchisimas gracias Jorge:

Te comento un problemilla que tengo.

Cuando ejecuto el codigo, me pone todo en una misma linea.

Yo quisiera que la segunda linea se colocase a continuacion de la primera, la cuarta linea a continuacion de la tercera y asi sucesivamente

Saludos y gracias nuevamente!
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
Imágen de perfil de Jorge De Los Santos

mover lineas de un fichero de texto

Publicado por Jorge De Los Santos (212 intervenciones) el 15/08/2013 21:44:44
Hola de nuevo xD...

Creo entender donde está el problema... Supongo que cuando lo abres fuera del entorno de MATLAB todo queda en una sola linea... vale, haremos lo siguiente:

En la última línea de código (dlmwrite), agrega un propiedad más, tal como te lo muestro enseguida:

1
dlmwrite('texto1.txt',N,'delimiter','\t','newline','pc');


Con ello debería corregirse ese detalle.

Saludos y mucho éxito...

Jorge De Los Santos
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

mover lineas de un fichero de texto

Publicado por rafa (1 intervención) el 15/08/2013 22:15:32
Jorge, eres un crack, funciona tal y como pedia, con el cambio que has hecho.

Disculpa las molestias pero te dejo otra duda:

cuando utilizo numeros con letras en medio(2.500e-12 por ejemplo) me sale este error:

1
2
3
4
5
6
7
8
??? Error using ==> cat
CAT arguments dimensions are not consistent.
 
Error in ==> cell2mat at 89
            m{n} = cat(1,c{:,n});
 
Error in ==> prueba_borrar>pushbutton2_Callback at 118
C=str2num(cell2mat(C));
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

mover lineas de un fichero de texto

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 16/08/2013 08:47:51
1
2
3
4
5
6
7
8
9
clear all
fid1=fopen('convertir_dos_lineas_en_una_linea.txt','r');
fid2=fopen('convertir_dos_lineas_en_una_linea1.txt','w');
while ~feof(fid1)
        fprintf(fid2,'%s %s \n',fgetl(fid1), fgetl(fid1));
end
fclose(fid1);
fclose(fid2);
open('convertir_dos_lineas_en_una_linea1.txt')




1
>>convertir_dos_lineas_en_una_linea1


1
2
2.5 1.2 7.8 2.0 -1.9 2.4  -1.97 2.5 25
 2.5 1.17 7.5 2.01 -1   -1.98 2.41 25





Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

mover lineas de un fichero de texto

Publicado por rafa (1 intervención) el 16/08/2013 21:25:03
Gracias Jose Jeremias.

El caso es que estoy teniendo un problemilla con dicho codigo.

Cuando lo ejecuto, me coloca todo en una unica linea en vez de unir la 1 con la 2 y la 3 con la 4.
El fichero final me queda tal que asi:

1
2.5 1.2 7.8 2.0 -1.9 2.4 -1.97 2.5 25 2.5 1.17 7.5 2.01 -1 -1.98 2.41 25



¿A que puede deberse?

EDITADO: ya esta solucionado, le he añadido un \r antes del \n y ya funciona.

MUCHISIMAS GRACIAS A AMBOS!
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

mover lineas de un fichero de texto

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 16/08/2013 23:29:24
El código que he puesto en el foro es correcto. No necesitas modificar. Pues antes de poner en el foro lo he probado con una cantidad suficiente de líneas( mayor a 50 líneas) si es que la data es tal como mencionas al inicio de tu pregunta.
Salvo excepción que de repente estés trabajando con una versión de matlab muy antiguo, de repente allí podría haber algún problema.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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