Import Multiple Text Files into multiple arrays

2 visualizaciones (últimos 30 días)
Shrisha Panda
Shrisha Panda el 15 de Abr. de 2020
Comentada: Shrisha Panda el 15 de Abr. de 2020
I have 62 flies - each file has 4 columns containing variable number of rows (between 226-300 rows). The number of rows corresponds to the number of raindrops. The first column is the X coordinate of the start of the raindrop, the second column is theh Y coordinate of the start of the raindrop. The last two columns are the X and Y coordinates of the end of the raindrop. The data is decimals
The files all have the same start to the name 'XYpoints_timeFromDeparture_Z.txt' where Z is 0,30,60 etc all the way to 1830
I need to find a way, using a for loop, to import all the data - then each file needs to put the data from cells into arrays.
This is how I did it for one file:
fileName = 'XYpoints_timeFromDeparture_0.txt';
fileID = fopen(fileName);
XXYY = textscan(fileID,'%f %f %f %f'); % puts the data into cells
fclose(fileID);
A = cell2mat(XXYY) % cell to array
we have XXYY which is a 1x4 array. Each cell is a vector (Xa, Ya, Xb, Yb)
What I need to do is make a an array as a 62x1. Each cell needs to have the XXYY which then has the vector per cell.
I tried using this code.
for i = 0:30:1830
fileName ='XYpoints_timeFromDeparture_%d.txt', i;
fileID = fopen(fileName);
XXYY = textscan(fileID,'%f %f %f %f'); % puts the data into cells
fclose(fileID);
A = cell2mat(XXYY) % cell to array
end
Doing this, gets me the error using textscan
  3 comentarios
Shrisha Panda
Shrisha Panda el 15 de Abr. de 2020
how do i prevent that?
Stephen23
Stephen23 el 15 de Abr. de 2020
"how do i prevent that?"
See the examples in the MATLAB documentation:

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 15 de Abr. de 2020
Editada: Stephen23 el 15 de Abr. de 2020
D = 'path to the directory where the files are saved';
V = 0:30:1830;
N = numel(V);
C = cell(1,N);
for k = 1:N
F = sprintf('XYpoints_timeFromDeparture_%d.txt',V(k));
[fid,msg] = fopen(fullfile(D,F),'rt');
assert(fid>=3,msg)
C(k) = textscan(fid,'%f%f%f%f', 'CollectOutput',true);
fclose(fid);
end
All of the imported data will be in the cell array C:
  4 comentarios
Stephen23
Stephen23 el 15 de Abr. de 2020
Editada: Stephen23 el 15 de Abr. de 2020
For some reason you added a space character:
fopen(fullfile(D,F),'rt') % My answer shows this
fopen(fullfile(D,F),' rt') % You tried this
% ^ You added this
Shrisha Panda
Shrisha Panda el 15 de Abr. de 2020
Ah yes - it works perfectly now thank you!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Low-Level File I/O en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by