How to convert a .mat file into a .csv file?

328 views (last 30 days)
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
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));
thisfile = sprintf('FileName_%s.csv', thisvar);
csvwrite(thisfile, thisdata);
  1 Comment
Ola Fekry
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?

Sign in to comment.

More Answers (2)

Azzi Abdelmalek
Azzi Abdelmalek on 6 Apr 2016
FileData = load('Trainset.mat');
csvwrite('FileName.csv', v)

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
for i = 1:length(varNameList)
switch lower(FileData.(varNameList{1}).class)
case 'char'
% write data to CSV file
case 'double'
% do whatever you want with the double
% ...and write data to CSV file
% ...
% close CSV file
BTW, you might want to consider wrap up this block of code in a function ;-)
Happy scripting,


Find more on Denoising and Compression in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!