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!!!!!
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


0