- 积分
 - 118
 
	- 贡献
 -  
 
	- 精华
 
	- 在线时间
 -  小时
 
	- 注册时间
 - 2018-7-18
 
	- 最后登录
 - 1970-1-1
 
 
 
 
 
 
 | 
	
 
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册 
 
 
 
x
 
 本帖最后由 AriesLin 于 2024-8-30 10:41 编辑  
 
MATLAB新手记录自己的代码,欢迎大家一起交流学习 
 
数据来源:单位业务使用,处理的数据为txt格式,以“,”分隔。 
txt存储格式形如1958,10,15,31.1,999999.0,0,1 
即1958年10月15日降水量为31.1mm。 
我的目的:我需要以年分区分数据,挑出逐年最大的降水值,得到逐年最大的txt数据。 
 
 【代码分享】 
 
clc;clear;close all             % 清除命令行、清除变量、清除图窗 
 
% 读取数据文件 
filename = 'A:\data\单站年平均降水数据.txt'; 
 
% 读取数据,假设文件使用逗号分隔符 
data = readtable(filename, 'Delimiter', ',', 'ReadVariableNames', true); 
 
% 提取年份和日降水数据 
years = data.Year; 
precipitation = data.日降水量对应的变量名称; 
 
% 计算每年降水的最大值 
result_table = groupsummary(table(years, precipitation), 'years', 'max', 'precipitation'); 
 
% 重命名列以便更清晰 
result_table.Properties.VariableNames{'years'} = 'Year'; 
result_table.Properties.VariableNames{'max_precipitation'} = 'MaxPrecipitation'; 
 
% 显示结果 
disp(result_table); 
 
% 如果需要保存结果到文件,可以取消注释以下行: 
%writetable(result_table, 'A:\data\单站年平均降水数据.txt'); 
 
  
得出的新txt文件形如 
1979,365,95;即1979年,使用365天雨量求日最大雨量,这一年的日最大降水量为95mm 
 
 【读取txt的指令解析】 
result_table = groupsummary(table(years, precipitation), 'years', 'max', 'precipitation'); 
这行代码的功能是: 
- 创建一个包含 years 和 precipitation 两列的表格。
 - 按 years 列的值进行分组,即按年份分组。
 - 对每组中的 precipitation 列应用 max 函数,计算每年的日最大降水量。
 
  将分组和汇总结果存储在 result_table 中。 
 
 
- result_table:这是一个表格变量,存储计算后的分组汇总结果。
 - groupsummary:这是 MATLAB 的一个函数,用于对数据进行分组,并对每组应用汇总函数(如均值、最大值等)。groupsummary 会返回一个新的表格,包含分组变量、汇总结果以及其他相关信息。
 - table(years, precipitation):这个部分创建了一个包含两列的表格,第一列是 years,第二列是 precipitation。years 是一个包含年份数据的向量或数组,precipitation 是一个包含相应年份的降水量数据的向量或数组。
 - 'years':这是 groupsummary 中的分组变量。函数会根据 years 列中的不同值对数据进行分组。
 - 'max':这是指定的汇总函数,表示要对每组中的 precipitation 数据计算最大值。
 
 
  
 
 |   
 
 
 
 |