Matlab - guardar un archivo txt a una matriz por columnas

   
Vista:

guardar un archivo txt a una matriz por columnas

Publicado por Jorge (2 intervenciones) el 29/10/2014 20:08:10
Tengo un archivo en txt con los siguientes datos:

13:17:50.551563 IP 192.168.1.16.137 > 192.168.1.255.137: UDP, length 50
13:17:51.301848 IP 192.168.1.16.137 > 192.168.1.255.137: UDP, length 50
13:17:51.611852 arp who-has 192.168.1.52 tell 192.168.1.254
13:17:52.221109 IP 192.168.1.25.49696 > 224.0.0.252.5355: UDP, length 22
13:17:52.321378 IP 192.168.1.25.49696 > 224.0.0.252.5355: UDP, length 22
13:17:52.533686 IP 192.168.1.25.137 > 192.168.1.255.137: UDP, length 50
13:17:52.635613 arp who-has 192.168.1.25 tell 192.168.1.11
13:17:52.650948 IP 192.168.1.25.63882 > 224.0.0.252.5355: UDP, length 22
13:17:52.753877 IP 192.168.1.25.63882 > 224.0.0.252.5355: UDP, length 22
13:17:53.046546 arp who-has 192.168.1.11 tell 192.168.1.25
13:17:57.858547 IP 192.168.1.11.57621 > 192.168.1.255.57621: UDP, length 44
13:17:58.157433 IP 192.168.1.4.61888 > 239.255.255.250.1900: UDP, length 125
13:17:58.159184 IP 192.168.1.4.61888 > 239.255.255.250.1900: UDP, length 123
13:17:58.437663 IP 192.168.1.16.54577 > 193.149.76.137.443: tcp 69
.
.
.
13:18:36.612028 IP 93.184.215.200.80 > 192.168.1.16.54584: tcp 395

Lo que quiero es poder guardarlos en una matriz, separados por columnas, y luego poder ir a una columna especifica como por ejemplo decir M [1:2] y que me muestre si es IP, IP6, arp, etc, al utilizar un código me lo guarda pero en una cell y toda la información me queda en una celda y no la puedo recorrer.

El Código utilizado es este:

clear;clc;
[Nombre_Arch, Dir_Arch] = uigetfile('*.txt', 'Seleccione un archivo de texto');
if isequal(Nombre_Arch,0)
return;
else
Archivo=fullfile(Dir_Arch, Nombre_Arch);
end
Dat = fopen(Archivo,'r');
n=1;
while ~feof(Dat)
leer_linea = fgetl(Dat);
if isempty(leer_linea) || ~ischar(leer_linea), break, end
C(n)= cellstr(leer_linea);
n=n+1;
end
fclose(Dat);
C=C';
disp(C);
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

guardar un archivo txt a una matriz por columnas

Publicado por Jorge De Los Santos (212 intervenciones) el 29/10/2014 21:46:11
Hola Jorge.

Como dato puramente anecdótico te menciono que conozco esa porción de código porque la publiqué hace un tiempo en el blog de MATLAB-TYP (http://matlab-typ.blogspot.mx/2013/08/leer-lineas-de-un-archivo-de-texto-en.html), me da gusto saber que os has dado una vuelta por el blog.

Ahora, respecto a tu problema: la cuestión es que el código anterior está "diseñado" para leer archivos que no tienen patrón alguno, es decir, archivos que contienen cualquier tipo de texto. Para leer archivos de datos, como en tu caso, puedes utilizar la función dlmread, la cual lee un archivo de texto y lo separa en columnas y/o filas y/o vectores dependiendo de un "delimitador" pasado como argumento que en vuestro caso es un espacio. Revisa la documentación de esta función.

Si lo anterior no funciona, tendrás que ir e "improvisar" con textscan o fscanf que son funciones un poco más low-level, pero nada extremo.



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
1
Comentar