我有几个mat文件,如:first.mat,second.mat,third.mat,...
所有这些文件都具有相同的内容,例如:variable1< 3400x1 double> ,变量2< 1143x1 double> ,变量3< 1141x1 double> ,...
所有mat文件都具有相同的内容,但每个mat文件中每个变量的大小都不同。我需要在所有mat文件中连接所有相同的变量,以便只有一个mat文件。
有人可以告诉我我该怎么做?我应该使用哪种功能?
非常感谢。
答案 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');