如何将几个.mat文件连接成一个

时间:2014-04-13 11:51:10

标签: matlab

我有几个mat文件,如:first.mat,second.mat,third.mat,...

所有这些文件都具有相同的内容,例如:variable1< 3400x1 double> ,变量2< 1143x1 double> ,变量3< 1141x1 double> ,...

所有mat文件都具有相同的内容,但每个mat文件中每个变量的大小都不同。我需要在所有mat文件中连接所有相同的变量,以便只有一个mat文件。

有人可以告诉我我该怎么做?我应该使用哪种功能?

非常感谢。

2 个答案:

答案 0 :(得分:2)

没有matlab函数可以执行此操作,您需要打开所有单个向量,以您希望的方式组合它们,并将它们保存回磁盘。像这样(未经测试):

filenames = {'file1.mat', 'file2.mat', ...};

data = cell(length(filenames), 1); % cell array to store all vectors

for i = 1:length(filenames)
    var = load(filenames{i});
    data{i} = var; % store single vector into cell array
end
data = cell2mat(data); % combine all small column vectors into one big one
save('combined_vars.mat', data)

答案 1 :(得分:0)

感谢大家的回答,这是最终的代码,它正常工作。

clear
PathName = uigetdir;
file_all = dir(fullfile(PathName,'*.mat'));
matfile = file_all([file_all.isdir] == 0); 
clear file_all PathName

x=[];                               % start w/ an empty array
for i=1:length(matfile)
    x=[x; load(matfile(i).name)];   % read/concatenate into x
end

b=[];
for j=1:length(x)
    b=[b; x(j, 1).variable1];
end

FileName = [matfile(i,1).name(1:end-9),'.mat'];
save(FileName,'matfile','x','b');