Convert all csv in a folder to .mat

I have several csv files in one folder and I want to convert them all to .mat format?
Is it possible to do that at once?

 Respuesta aceptada

Jan
Jan el 3 de Feb. de 2021
Editada: Jan el 4 de Feb. de 2021
Folder = 'D:\YourFolder';
FileList = dir(fullfile(Folder, '*.csv'));
for iFile = 1:numel(FileList)
% [TYPO FIXED]: [name, ext] ==> [~, name, ext]
[~, name, ext] = fileparts(FileList(iFile).name);
data = readtable(fullfile(Folder, [name, ext]));
save(fullfile(Folder, [name, '.mat']), 'data');
end

10 comentarios

Elise Barbeau
Elise Barbeau el 3 de Feb. de 2021
Thank you! Also, once I have my .mat files, if I want for all the files to remove the first line , how can I apply this to all the files in my folder? myfile(1,:) = []
Elise Barbeau
Elise Barbeau el 3 de Feb. de 2021
I get an error message for your conversion script above, it's looking for txt files
Error using readtable (line 223)
Unable to open file
'C:\mypath\aFileInTheFolder.txt'
there are not txt files in my Folder only .csv (coma delimited)
Jan
Jan el 4 de Feb. de 2021
My code processes .csv files only:
FileList = dir(fullfile(Folder, '*.csv'));
If your code does somoething else, please post your code, such that we can search for the problem.
"once I have my .mat files, if I want for all the files to remove the first line" - the first line of what? Maye you mean the first line of data ? readtable() was just a suggestion. Use a method, which matchs your needs.
Elise Barbeau
Elise Barbeau el 4 de Feb. de 2021
I know, I only have .csv files in my folder, that's why I don't understand that I get an error message unable to open file and it wants to open a .txt file (giving my the name of my first file in my folder but with .txt at the end rather than .csv), is there a default that I need to change in the code you gave me?
Jan
Jan el 4 de Feb. de 2021
This was y typo in my code. Please try the fixed version above.
Elise Barbeau
Elise Barbeau el 5 de Feb. de 2021
Yes! thank you
Elise Barbeau
Elise Barbeau el 5 de Feb. de 2021
now my other question ;-) it's kind of unrelated but now I would to delete the first row of data for all those .mat data files....
Jan
Jan el 5 de Feb. de 2021
What about inserting this in the code above:
data(1, :) = [];
Elise Barbeau
Elise Barbeau el 5 de Feb. de 2021
yes I saw that too but to do it on all the files in my folder at once?
Jan
Jan el 5 de Feb. de 2021
This suggestion does it during the creation already. Then you do not have to do it again. But the code looks similar to the one of my answer:
Folder = 'D:\YourFolder';
FileList = dir(fullfile(Folder, '*.mat'));
for iFile = 1:numel(FileList)
FileData = load(fullfile(Folder, FileList(iFile).name));
data = FileData.data;
data(1, :) = [];
save(fullfile(Folder, [name, '.mat']), 'data');
end

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Communications Toolbox en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 3 de Feb. de 2021

Comentada:

Jan
el 5 de Feb. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by