Read a .mat file and write .csv without opening matlab
51 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Michael02139
am 14 Okt. 2016
Kommentiert: Michael02139
am 25 Okt. 2016
I would like to read a ".mat" file and write it out as ".csv" file without opening matlab.
Basically this:
M = dlmread('FileName.mat', '\t', 1, 0);
csvwrite('FileName.csv', M)
but then without opening matlab.
I'm using linux command line.
Thanks!
0 Kommentare
Akzeptierte Antwort
Marc Jakobi
am 14 Okt. 2016
You won't be able to run a Matlab-file without opening Matlab - unless you use another program that is compatible.
However, you could write a bash script that runs Matlab in a "hidden" mode:
#!/bin/bash
matlab -nodisplay -nodesktop -r "run /path_to_script/my_script.m"
P. S. I wouldn't recommend csvwrite. fprintf is a lot more flexible and faster.
fid = fopen('filename.csv','w');
fprintf(fid, formatSpec, data);
fclose(fid);
3 Kommentare
Marc Jakobi
am 14 Okt. 2016
You have to declare formatSpec as a variable first: According to the data you are writing to the CSV file.
Here's an example:
t = (0:900:31535100)';
P = rand(size(t));
fid = fopen('filename.csv','w');
formatSpec = '%d;%d\n';
fprintf(fid, formatSpec, [t, P]);
fclose(fid);
The formatSpec tells to write two columns of doubles (%d), delimeted with a semicolon. "\n" tells it to start a new line.
If you type
doc fprintf
in Matlab's command window, you will find a description and examples of how to use format operators.
Walter Roberson
am 14 Okt. 2016
You would want
fprintf(fid, formatSpec, [t, P].');
to write t and P into columns.
Weitere Antworten (2)
Michael02139
am 25 Okt. 2016
2 Kommentare
Marc Jakobi
am 25 Okt. 2016
That was all about writing a CSV file. Loading a MAT file should be trivial:
load('matFileName.mat')
If you don't know which variables are contained in the mat file, you can load it into a struct:
S = load('matFileName.mat');
varNames = fieldnames(S);
etc.
Walter Roberson
am 25 Okt. 2016
Is the mat file text with tab delimiters or is it a binary file created by save()?
If it is text with tab delimiters then consider just using sed to change the tabs into comma
Siehe auch
Kategorien
Mehr zu Text Files finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!