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

1 775 vues (au cours des 30 derniers jours)
hello_world
hello_world le 30 Mar 2015
Modifié(e) : Image Analyst le 25 Juil 2024
Hello Friends,
I have a .mat file loaded in workspace. I want to convert it into .csv file. It has real entries. I used to convert it before using the following commands without any problem:
M = dlmread('FileName.mat', '\t', 1, 0);
csvwrite('FileName.csv', M)
But now something is wrong with MATLAB. My dataset is the same. Nothing has changed, but now it gives the following error:
Error using dlmread (line 139)
Mismatch between file and format string.
Trouble reading number from file (row 1u, field 1u) ==>
}Ûa&Ír!ÃþxbSoÈñæo8k:¬i’³*Y#~!IjË9B¯ÝWG~
¬zN=å0ÉÀo8Ó'Rå@õR[iãY>,xÊ8UrVÀ9ó";~~ÀOWAe$Æ\:xfnFVAÿñϼÓЪÍðaþ\n
I wonder if MATLAB changed something with dlmwrite function! Please advise.
  4 commentaires
Jose Ocampo
Jose Ocampo le 1 Mar 2023
how I can said the link where will be created the file
Image Analyst
Image Analyst le 1 Mar 2023
@Jose Ocampo I don't know what you mean. When you do
csvwrite('FileName.csv', M)
the file is created in the current directory -- what you see in the directory/address field in MATLAB.

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 30 Mar 2015
FileData = load('FileName.mat');
csvwrite('FileName.csv', FileData.M);
  17 commentaires
Stephen23
Stephen23 le 25 Juil 2024
mydata = load('wind.mat');
csvwrite('mydata.csv', mydata);
Incorrect number or types of inputs or outputs for function real.

Error in csvwrite (line 48)
throw(e)
% not in general it doesn't ;)
Image Analyst
Image Analyst le 25 Juil 2024
Modifié(e) : Image Analyst le 25 Juil 2024
@Parisa, your mydata is a structure so you'd have to extract the matrix from the structure first since csvwrite does not take structures as inputs. Something like
% Read variables into fields of a structure.
storedStructure = load('FileName.mat');
% Extract matrix called Data from the structure:
myMatrix = storedStructure.Data; % Change names to whatever you actually have.
% Write the extracted matrix out to a CSV file.
fullFileName = fullfile(pwd, 'MyData.csv'); % Get full path and name.
csvwrite(fullFileName, myMatrix); % Write matrix out to disk.

Connectez-vous pour commenter.

Plus de réponses (3)

Ashlesh Sortee
Ashlesh Sortee le 4 Juil 2017
simply you can copy and paste the matrix you want in excel
  • all you have to do is open .mat file in matlab , press 'ctr+A' & 'ctr+C' in the variable tab and paste it in new excel sheet
  2 commentaires
Ayman
Ayman le 22 Juin 2024
but what if the data set is very large it will not work then
Image Analyst
Image Analyst le 22 Juin 2024
@Ayman once you have the variable in MATLAB, then you can use writematrix to write it to a disk file, then use File/Open in Excel to read it into Excel.

Connectez-vous pour commenter.


Ashlesh Sortee
Ashlesh Sortee le 4 Juil 2017
Modifié(e) : Ashlesh Sortee le 4 Juil 2017
FileData = load('FileName.mat'); csvwrite('FileName.csv', FileData.FileName);
  • | | * This one worked for me||*
  • Thanks Jan Simon

Image Analyst
Image Analyst le 30 Mar 2015
You're trying to save the variable called FileName20.mat in dlmwrite(). If that's the variable, then you have a dot in the name which means that FileName20 must be a structure, and mat must be a field/member of the structure. It's clearly not - you don't have any structure variable in your program called FileName20. You probably need to pass in M instead of FileName20.
  2 commentaires
Jan
Jan le 30 Mar 2015
I do not believe that this has worked before. You cannot read a MAT file by dlmread. MAT files are imported by load.
Image Analyst
Image Analyst le 30 Mar 2015
I totally agree with Jan. See Jan's answer, then "Accept" it. It loads your file into a structure called FileData. The "M" array that you stored in the mat file will be a "field" of FileData. Then he writes out only that field to your new csv file.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by