Read a .mat file and write .csv without opening matlab
조회 수: 51 (최근 30일)
이전 댓글 표시
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
채택된 답변
Marc Jakobi
2016년 10월 14일
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
Marc Jakobi
2016년 10월 14일
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
2016년 10월 14일
You would want
fprintf(fid, formatSpec, [t, P].');
to write t and P into columns.
추가 답변 (2개)
Michael02139
2016년 10월 25일
댓글 수: 2
Marc Jakobi
2016년 10월 25일
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
2016년 10월 25일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Text Files에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!