Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:41   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在Matlab中合并和处理文件

有没有一种方法可以在一个文件夹中运行一个循环,一个月处理30个文件,并给出每列的平均值,最大值,然后在一张excel工作表中写出来?

我有30个大小为[43200 x 30]的文件
我运行了一个不同的matlab脚本来生成它们,因此名称很容易File_2010_04_01.xls,File_2010_04_02.xls .....等等,我无法合并它们,因为它们都是20mbs,因此matlab会崩溃。



回答:

您首先可以使用函数DIR获取文件列表。这是一个例子:

dirData = dir('File_2010_04_*.xls'); %# Match file names with a wildcard dataFiles = {dirData.name}; %# Get the file names in a cell array 拥有这些文件后,您可以使用XLSREAD遍历它们以加载数据。注意XLSREAD可以在Excel文件中返回不同版本的数据:

[numData,txtData,rawData] = xlsread(fileName); %# Where fileName is a string 在这里, numData包含文件中具有数字数据的单元格, txtData包含文件中具有文本数据的单元格,而rawData是包含文件中所有数据的单元格数组。您将必须确定要使用哪个数据数组以及如何对其进行索引,才能处理43200×30的数据矩阵。

综上所述,这是一个代码示例,说明如何处理数据以获取所有文件的列最大值和列平均值:

columnTotal = zeroes(1,30); %# Initialize column sum columnMax = -inf(1,30); %# Initialize column maxima dirData = dir('File_2010_04_*.xls'); %# Match file names in the current folder dataFiles = {dirData.name}; %# Get the file names in a cell array nFiles = numel(dataFiles); %# Number of files for iFile = 1:nFiles %# Loop over the files numData = xlsread(dataFiles{iFile}); %# Load the data %# Here, I'm assuming "numData" contains your 43200-by-30 matrix columnTotal = columnTotal+sum(numData); %# Add up column data columnMax = max(columnMax,max(numData)); %# Get the column maxima end columnAverage = columnTotal./(nFiles*43200); %# Average across all files

更多&回答...
poster 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 02:35


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.