How to open csv files as separate numeric matrices from a certain directory?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Mustafa Sobhy
am 13 Feb. 2022
Bearbeitet: Stephen23
am 25 Feb. 2022
I have many csv files in a folder and I need to open all as separate numeric matrices in workspace.
1 Kommentar
Akzeptierte Antwort
Voss
am 13 Feb. 2022
% csv_location = 'path\to\your\csv\files';
csv_location = '';
files = dir(fullfile(csv_location,'*.csv'));
for ii = 1:numel(files)
files(ii).data = readmatrix(fullfile(csv_location,files(ii).name));
end
Now the matrices are in the 'data' fields of the 'files' stucture array. You can access them like:
files(1).data
files(2).data
If you really want to make separate matrix variables in the workspace, you can do this instead:
files = dir(fullfile(csv_location,'*.csv'));
for ii = 1:numel(files)
assignin('base',sprintf('matrix_%d',ii),readmatrix(fullfile(csv_location,files(ii).name)));
end
whos('matrix_*')
7 Kommentare
Image Analyst
am 25 Feb. 2022
@Mustafa Sobhy readmatrix() has a 'Range' option where you can specify the second column.
Weitere Antworten (1)
Image Analyst
am 13 Feb. 2022
Bearbeitet: Image Analyst
am 13 Feb. 2022
See the FAQ:
% Specify the folder where the files live.
myFolder = pwd; % or 'C:\Users\yourUserName\Documents\My Pictures'; or wherever they are
% Check to make sure that folder actually exists. Warn user if it doesn't.
if ~isfolder(myFolder)
errorMessage = sprintf('Error: The following folder does not exist:\n%s\nPlease specify a new folder.', myFolder);
uiwait(warndlg(errorMessage));
myFolder = uigetdir(); % Ask for a new one.
if myFolder == 0
% User clicked Cancel
return;
end
end
% Get a list of all files in the folder with the desired file name pattern.
filePattern = fullfile(myFolder, '*.csv'); % Change to whatever pattern you need.
theFiles = dir(filePattern);
for k = 1 : length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(theFiles(k).folder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
% Now do whatever you want with this file name,
% such as reading it in as an array with csvread() or readmatrix() or importdata().
data = imread(fullFileName);
end
By the way, you should process each set of data inside the loop. If you will need the data later, you can put it into a multidimensional array or a cell array.
It's a very bad idea to give each data set its own unique name. Why? See the FAQ:
0 Kommentare
Siehe auch
Kategorien
Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!