Borrar filtros
Borrar filtros

Load in multiple text files and store data in a matrix

2 visualizaciones (últimos 30 días)
I have 28 text files, of this pattern:
out.200.data
out.225.data
up to
out.900.data
How can I populate the 3rd row into a matrix? Note that there are 3 columns in the 3rd row. I also have a path to my files, but for purposes here, let's just say the path is just C:/Path
Is there a way to create a single matrix with these values?
Row 1 of the matrix is the 3rd row of out.200.data
Row 2 of the matrix is the 3rd row of out.225.data
etc?
  2 comentarios
TAB
TAB el 17 de Ag. de 2018
What is format of your data in text file?
Benjamin Cowen
Benjamin Cowen el 17 de Ag. de 2018
Editada: Walter Roberson el 17 de Ag. de 2018
2 header rows
3rd row is 3 numbers, separated by spaces

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 17 de Ag. de 2018
for information on looping over files.
For any one file, I suggest something like
filename = fullfile(projectdirectory, dinfo(K).name);
fid = fopen(filename, 'rt');
row3(K,:) = cell2mat( textscan(fid, '%f%f%f', 1, 'headerlines', 2, 'collectoutput', true) );
fclose(fid)
  4 comentarios
Benjamin Cowen
Benjamin Cowen el 17 de Ag. de 2018
Editada: Benjamin Cowen el 17 de Ag. de 2018
@Walter Roberson Thanks for this, it worked. If I only have 1 headerline, I want to extract the 51st row, and there are only 2 columns as opposed to 3, why does this not work:
clear
clear all
clc
projectdirectory = 'C:/Path/';
dinfo = dir( fullfile(projectdirectory, 'msd.*.data') );
N = length(dinfo);
row51 = zeros(N, 2);
for K = 1 : N
filename = fullfile(projectdirectory, dinfo(K).name);
fid = fopen(filename, 'rt');
row51(K,:) = cell2mat( textscan(fid, '%f%f', 50, 'headerlines', 1, 'collectoutput', true) );
fclose(fid);
end
Walter Roberson
Walter Roberson el 17 de Ag. de 2018
Editada: Walter Roberson el 5 de Dic. de 2018
clear
%let us refrain from blowing up the bridge we are standing on, like Wile E. Coyote
%<<https://cdn-images-1.medium.com/max/1338/1*8oK7yw-tYvP14l_Ya3Nvcg.png>>
%clear all
clc
Row_to_extract = 51;
projectdirectory = 'C:/Path/';
dinfo = dir( fullfile(projectdirectory, 'msd.*.data') );
N = length(dinfo);
row = zeros(N, 2);
for K = 1 : N
filename = fullfile(projectdirectory, dinfo(K).name);
fid = fopen(filename, 'rt');
row(K,:) = cell2mat( textscan(fid, '%f%f', 1, 'headerlines', Row_to_extract - 1, 'collectoutput', true) );
fclose(fid);
end

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by