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?

 Akzeptierte Antwort

Jan
Jan am 3 Feb. 2021
Bearbeitet: Jan am 4 Feb. 2021

2 Stimmen

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 Kommentare

Elise Barbeau
Elise Barbeau am 3 Feb. 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 am 3 Feb. 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)
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 am 4 Feb. 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 am 4 Feb. 2021
This was y typo in my code. Please try the fixed version above.
Elise Barbeau
Elise Barbeau am 5 Feb. 2021
Yes! thank you
Elise Barbeau
Elise Barbeau am 5 Feb. 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....
What about inserting this in the code above:
data(1, :) = [];
Elise Barbeau
Elise Barbeau am 5 Feb. 2021
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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Communications Toolbox finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 3 Feb. 2021

Kommentiert:

Jan
am 5 Feb. 2021

Community Treasure Hunt

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

Start Hunting!

Translated by