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?

 Accepted Answer

Jan
Jan on 3 Feb 2021
Edited: Jan on 4 Feb 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 Comments

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,:) = []
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)
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.
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?
This was y typo in my code. Please try the fixed version above.
Yes! thank you
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....
What about inserting this in the code above:
data(1, :) = [];
yes I saw that too but to do it on all the files in my folder at once?
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

Sign in to comment.

More Answers (0)

Categories

Find more on Communications Toolbox in Help Center and File Exchange

Tags

Asked:

on 3 Feb 2021

Commented:

Jan
on 5 Feb 2021

Community Treasure Hunt

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

Start Hunting!