How to convert a .mat file into a .csv file?
78 views (last 30 days)
Show older comments
I have a .mat file loaded in workspace. I want to convert it into .csv file.
FileData = load('Trainset.mat');
csvwrite('FileName.csv', FileData.M);
I used the above method to convert but i get this error. >> csv_Con Reference to non-existent field 'M'.
Error in csv_Con (line 2) csvwrite('FileName.csv', FileData.M);
>> >> >>
Accepted Answer
Walter Roberson
on 6 Apr 2016
FileData = load('Trainset.mat');
fields = fieldnames(FileData);
for K = 1 : length(fields)
thisvar = fields{K};
thisdata = FileData.(thisvar);
if ~isnumeric(thisdata)
warning('Skipping field %s which is type %s instead of numeric', thisvar, class(thisvar));
else
thisfile = sprintf('FileName_%s.csv', thisvar);
csvwrite(thisfile, thisdata);
end
end
1 Comment
Ola Fekry
on 19 Feb 2022
Plz I have a RF signal dataset of 220000 .mat file how can I put them in CSV file to be used in classification learner app for evaluation?
More Answers (2)
Azzi Abdelmalek
on 6 Apr 2016
FileData = load('Trainset.mat');
v=reshape([FileData.M],size(FileData))
csvwrite('FileName.csv', v)
0 Comments
MBD4FUN
on 6 Apr 2016
Don't know if this is what you are looking for but here is one way of solving this problem.
FileData = load('Trainset.mat');
% get all varaible names
varNameList = fields(FileData);
% create a csv file to dump all data
fid = fopen('Trainset.csv','wt')
% write header if you prefer
fprintf(fid,'ColumnA,ColumnB');
for i = 1:length(varNameList)
switch lower(FileData.(varNameList{1}).class)
case 'char'
% write data to CSV file
fprintf(fid,'%s,%s\n');
case 'double'
% do whatever you want with the double
% ...and write data to CSV file
fprintf(fid,'%s,%s\n');
% ...
end
end
% close CSV file
fclose(fid);
BTW, you might want to consider wrap up this block of code in a function ;-)
Happy scripting,
MBD4FUN
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!