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?

 채택된 답변

Jan
Jan 2021년 2월 3일
편집: Jan 2021년 2월 4일

2 개 추천

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

Elise Barbeau
Elise Barbeau 2021년 2월 3일
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 2021년 2월 3일
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 2021년 2월 4일
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 2021년 2월 4일
This was y typo in my code. Please try the fixed version above.
Elise Barbeau
Elise Barbeau 2021년 2월 5일
Yes! thank you
Elise Barbeau
Elise Barbeau 2021년 2월 5일
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 2021년 2월 5일
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

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Communications Toolbox에 대해 자세히 알아보기

태그

질문:

2021년 2월 3일

댓글:

Jan
2021년 2월 5일

Community Treasure Hunt

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

Start Hunting!

Translated by