Matlab - procesado de datos de varios txt para ponerlos en una matriz

 
Vista:

procesado de datos de varios txt para ponerlos en una matriz

Publicado por pedro (3 intervenciones) el 30/08/2012 19:11:36
Buenas tardes.

Estoy realizando el Trabajo Fin de Máster y estoy atascado en una parte del procesado de datos con Matlab.

El problema es que obtuve los datos de 39 posiciones de micrófono mediante un programa que me daba la opción de guardarlos en txt. Ahora necesito leer los datos de esos 39 txt y colocarlos en una sola matriz. Cada txt tiene 3 columnas y 16385 filas. La primera columna de todos es la misma, ya que sólo es el tiempo en el que llega el sonido al micrófono. La segunda de cada archivo es la que me interesa, puesto que en ella tengo registrada la presión con la que llega el sonido a dicho micrófono en ese instante de tiempo. El caso es que he utilizado una de las soluciones propuestas en este foro, pero no me guarda en la matriz los datos que realmente tengo en los txt.

% Lectura masiva de archivos
clc,clear all

cd dif_bid
cd time

% Numero de archivos a leer
nfile=39;

var=[]; %inicializo la matriz donde se guardan datos
for n=1:nfile
% Forma el nombre del archivo
namefile=([num2str(n),'.txt']);
disp(['Procesando el archivo ',namefile])
% Numero de lineas de cabecera
%HEADERLINES = 1; %quita el texto de cabecera
% Importar contenido de archivos
newData = importdata(namefile,'');%,HEADERLINES);
% Guarda temporalmente los datos en tmp
tmp=newData.data;
% Acumula los datos de cada archivo en una matriz var
var(:,n)=tmp;
end

disp('Los datos se encuentran en la variable var')
% disp(var)

Estoy intentando probar con otras sentencias que realicé el año pasado con la ayuda de un profesor, que leen los archivos también, pero no sé cómo colocar los datos en una matriz y no entiendo muy bien que hace a partir del for ii=1:2000. Es el siguiente:

cd dif_bid
cd fft

for jj=1:39
[num2str(jj) '.txt']
fid =fopen([ num2str(jj) '.txt']); %para abrir los archivos
tline = fgetl(fid);
for ii=1:2000;
tline = fgetl(fid);
tline(find(tline==','))='.';
x=str2num(tline);
y(ii,jj)=x(1);
end
fclose(fid);
end

cd ..
cd ..

Necesito ayuda urgente, puesto que es lo último por procesar y me queda una semanilla.

Mil gracias de antemano!!!!!
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

procesado de datos de varios txt para ponerlos en una matriz

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 30/08/2012 21:37:44
Cuales son los nombres de archivos de texto.
Esa parte no lo mencionas en tu pregunta.
Ademas si deseas me puedes mandar tus archivos de texto a mi correo para ver de que forma son exactamente.
Recuerda que para hacer un programa hay que tener una idea clara de como son los archivos exactamente.


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
[email protected]

http://matlabcaballero.blogspot.com
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

procesado de datos de varios txt para ponerlos en una matriz

Publicado por pedro (3 intervenciones) el 30/08/2012 21:50:09
Los archivos están en el directorio especificado arriba, y los nombres son números del 1 al 39 correspondientes a las 39 posiciones de micro. En cada uno de los archivos hay 3 columnas, de las cuales la primera indica el tiempo, la segunda indica la parte real de la presión que llega al micro, medida en Pascales y la tercera la parte imaginaria de esa presión.

Tengo que conseguir realizar una sola matriz que contenga en la primera columna el tiempo (igual para todos los puntos), en la segunda la parte real que llega al micro de la primera posición, en la tercera la parte real que llega al micro de la segunda posición y así sucesivamente.

Una vez obtenga dicha matriz, tengo unos programas preparados que me calcularán el nivel de presión sonora promedio y el tiempo de reverberación de la sala a estudio, simplemente cargando dicha matriz con el comando load en esos programas.

Es decir, lo que busco y no consigo es un archivo, por ejemplo matriz.m, que me genere una matriz con todos los datos especificados anteriormente (por ejemplo, resultado.mat) para así poder cargar esta en los programas ya preparados.

Muchas gracias por la ayuda.

Un saludo
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

procesado de datos de varios txt para ponerlos en una matriz

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 31/08/2012 09:28:14
En una parte mencionas que son archivos de texto, pero en ejemplo mencionas archivos tipo mat.
Si es texto se carga de otra manera y si es un mat se carga de otra manera.


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
[email protected]

http://matlabcaballero.blogspot.com
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

procesado de datos de varios txt para ponerlos en una matriz

Publicado por Dave (1094 intervenciones) el 01/09/2012 07:43:32
Hola Pedro;

Tu problema no es muy complicado, es asunto de leer los datos y ordenarlos en una matriz columna, tu consulta me recuerda a cuando una vez procese datos de propagación de sonido marino, tuve que hacer algo similar con mucho archivos que se generaban cada intervalo de tiempo, para luego aplicar análisis de fourier.

Si aún no has resuelto tu problema, podrías enviarme una muestra de tus archivos y veo que puedo hacer.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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

procesado de datos de varios txt para ponerlos en una matriz

Publicado por pedro (3 intervenciones) el 01/09/2012 13:04:01
Es eso exactamente dave.

Te envío una muestra de los archivos a tu correo.

Muchas gracias.
Un saludo
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