How to automatically concatenate several .mat files into one file?
조회 수: 5 (최근 30일)
이전 댓글 표시
Here is what I am trying to do:
I have these four .mat files... '20130602_SPLBRENT3_135638.mat' '20130602_SPLBRENT3_183333.mat' '20130602_SPLBRENT3_184002.mat' '20130602_SPLBRENT3_205239.mat'
I want to write perhaps a script or function that will concatenate those four files into one file with the name '20130602_SPLBRENT3_concat.mat' My goal is to be able to automate this process through Task Scheduler so that the files are concatenated once a day. As you can see, these are files from June 2.
Anyone know how I go about doing this? I am very new to Matlab so please be as detailed as possible. Thanks!
댓글 수: 4
답변 (1개)
Iain
2013년 6월 3일
Mat files aren't easy to concatenate UNLESS they contain different variables.
The code, in that case, would be:
load(filename1)
load(filename2)
load(filename3)
load(filename4)
save(filename)
If they have similar variables inside them, then concatenation is harder, but you can bodge it easily:
a{1} = load(filename1);
a{2} = load(filename2);
a{3} = load(filename3);
a{4} = load(filename4);
save(filename,a)
댓글 수: 4
Walter Roberson
2013년 6월 4일
load() of a .mat file returns a structure whose fieldnames are the original variable names.
But I do need to think more about what should be concatenated together. The above will probably fail because -struct in save needs scalar structures.
Walter Roberson
2013년 6월 4일
For the case of .mat files with exactly one variable name:
t1 = load(filename1);
t2{1} = struct2cell(t);
t2{2} = struct2cell(load(filename2));
t2{3} = struct2cell(load(filename3));
t2{4} = struct2cell(load(filename4));
fn = fieldnames(t1);
t3.(fn{1}) = vertcat(t2{:});
save(filename, '-struct', 't3');
참고 항목
카테고리
Help Center 및 File Exchange에서 Structures에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!