鱼C论坛

 找回密码
 立即注册
查看: 2897|回复: 3

matlab新手求助

[复制链接]
发表于 2023-4-15 20:19:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
excel表格一共五列数据,第五列是年份,按顺序排列的,将相同年份的数据累加并输出到excel,一共733个表格
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-15 20:22:33 | 显示全部楼层
您好!根据您的描述,我了解您希望将一个包含五列数据的Excel表格中,按照第五列的年份对数据进行累加,并将结果输出到733个Excel表格。为了帮助您解决这个问题,我们可以编写一个MATLAB脚本。以下是您可以尝试的一个示例MATLAB脚本:

  1. % 读取Excel文件
  2. filename = '您的Excel文件路径.xlsx'; % 将此处替换为您的实际文件路径
  3. data = readtable(filename);

  4. % 获取年份列数据并找到唯一的年份
  5. years = data{:, 5};
  6. unique_years = unique(years);

  7. % 初始化累加结果的表格数组
  8. accumulated_data = cell(length(unique_years), 1);

  9. % 按年份进行累加
  10. for i = 1:length(unique_years)
  11.     year = unique_years(i);
  12.     year_data = data(years == year, :); % 提取当前年份的数据
  13.     accumulated_data{i} = sum(year_data{:, 1:4}, 1); % 对前四列数据进行累加
  14. end

  15. % 将累加结果输出到733个Excel文件
  16. output_folder = '输出文件夹路径'; % 将此处替换为您希望保存输出文件的文件夹路径
  17. for i = 1:length(accumulated_data)
  18.     year = unique_years(i);
  19.     output_filename = sprintf('%s/output_%d.xlsx', output_folder, i);
  20.     writematrix(accumulated_data{i}, output_filename);
  21. end
复制代码


请确保在运行此脚本之前,您已将filename和output_folder变量替换为您的实际文件路径和希望保存输出文件的文件夹路径。此脚本将读取原始Excel文件中的数据,然后按照年份对数据进行累加,最后将累加结果输出到733个Excel文件。注意,该脚本假设您的数据表格具有合适数量的唯一年份。如果不是这样,您可能需要调整输出文件数量。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-15 20:59:00 | 显示全部楼层
数据是一共733个表格的文件夹,怎么循环读取呀大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-16 09:11:56 | 显示全部楼层
本帖最后由 歌者文明清理员 于 2023-4-16 09:14 编辑

您可以使用 MATLAB 中的循环结构和 Excel 操作命令来实现这个任务。

首先,您需要打开一组 Excel 文件并读取其中的数据。您可以使用 xlsread 命令来读取 Excel 表格中的数据,例如:
  1. filename = 'example.xlsx'; % 文件名
  2. data = xlsread(filename);   % 读取表格数据
复制代码

然后,您需要编写一个循环结构来遍历整个文件夹,并依次处理每个 Excel 文件。可以使用 dir 命令列出文件夹中所有的文件,例如:
  1. foldername = 'my_folder'; % 文件夹名
  2. filelist = dir(fullfile(foldername, '*.xlsx')); % 获取所有 .xlsx 文件名列表
复制代码

接下来,对于每个文件,您需要按照年份将数据累加并输出到新的 Excel 文件中。可以使用逻辑运算符和条件语句来筛选特定年份的数据并进行累加,然后使用 xlswrite 命令将结果写入新的 Excel 文件,例如:
  1. output_filename = 'output.xlsx'; % 输出文件名

  2. for i = 1:length(filelist)
  3.     % 打开当前文件,读取表格数据
  4.     filename = fullfile(foldername, filelist(i).name);
  5.     data = xlsread(filename);
  6.    
  7.     % 筛选特定年份的数据并进行累加
  8.     year = 2019; % 指定要求和的年份
  9.     idx = (data(:, 5) == year); % 筛选年份相同的数据行
  10.     sum_value = sum(data(idx, :), 1); % 对符合条件的数据进行累加
  11.    
  12.     % 将结果写入新的 Excel 文件
  13.     xlswrite(output_filename, sum_value, i, 'A1'); % 写入数据到第 i 个工作表中
  14. end
复制代码

最后,需要注意的是,由于您有 733 个文件需要处理,可能会遇到内存占用过高、程序运行时间过长等问题。在编写循环结构时,可以考虑分批读取数据并进行累加,以减少内存占用;另外,也可以使用 parfor 命令实现并行计算,在一定程度上提高程序的运行效率。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表