Matlab 创建一个循环来生成我从TXT文件中获得的数据的平均值?
我试图用脚本将我的实验室数据转换成matlab,我有很多样本的txt文件,每个样本有30个txt文件。我做了一个函数,从这些文件中获取数据,并将它们存储到包含数据和标签的结构中。 我想知道是否可以使用循环而不是逐行加载所有30个文件Matlab 创建一个循环来生成我从TXT文件中获得的数据的平均值?,matlab,text,for-loop,Matlab,Text,For Loop,我试图用脚本将我的实验室数据转换成matlab,我有很多样本的txt文件,每个样本有30个txt文件。我做了一个函数,从这些文件中获取数据,并将它们存储到包含数据和标签的结构中。 我想知道是否可以使用循环而不是逐行加载所有30个文件 function s = try1(fn) % adapt for other file format according to your needs fid = fopen(fn); s.data = []; % skip firs
function s = try1(fn)
% adapt for other file format according to your needs
fid = fopen(fn);
s.data = [];
% skip first lines
for k=1:6
l = fgetl(fid);
% read header
a = regexp(l,',','split');
s.labels = a;
l = fgetl(fid);
k=0;
end
while( (l~=-1)&(k<130) )
l = l(1:end-1);
a = regexp(l,', ','split');
a = regexpre
p(a, ',','.');
s.data = [s.data; str2double(a(2:4))];
l = fgetl(fid);
k = k+1;
end
fclose(fid);
end
函数s=try1(fn)
%根据需要调整其他文件格式
fid=fopen(fn);
s、 数据=[];
%跳过第一行
对于k=1:6
l=fgetl(fid);
%读标题
a=regexp(l’,’,‘split’);
s、 标签=a;
l=fgetl(fid);
k=0;
结束
而((l~=-1)&(k要对数据目录执行您想要的操作并在循环中处理每个文件,您可以使用fullfile(…)
和循环的组合。这可能会起作用:
dataDirectory = 'c:/myDirectory';
allFilesDir = dir(fullfile(dataDirectory , '*.txt'));
allFN = {allFilesDir.name}
% Or do this:
% allFN = {'file1.txt', 'file2.txt'};
result = [];
for ind = 1:length(allFN)
myFN = fullfile(dataDirectory, allFN{ind});
result(ind) = try1(myFN);
end
% Now get the mean:
myMean = mean([result.data])
我假设你可以在一个循环中调用try1
,或者我遗漏了什么?是的,但我想给出txt文件的文件夹目标,这个循环获取这个try1中的所有文件这是一个很好的wwaz,但我收到了这样一条消息“从结构转换为双精度时发生以下错误:使用==>双精度转换从s转换为双精度时出错”truct不可能。“?从结构转换为双精度时发生以下错误:使用==>从结构转换为双精度时出错。错误为==>getmean at 13 result(ind)=try1(myFN);我认为在这种情况下,我必须更改我的try1函数,以便能够将其用于fullfile(..)@Steven需要更清楚一些。现在使用函数try1。我调用它时得到了如下结果:数据:[100x3 double]和一些标签。我只需要使用这些数据。获取them@mecaeng完整文件只需要一个目录和文件名,并适当地组合它们(通常通过添加/
或``取决于操作系统…如果已经有操作系统,则不添加)。