- 积分
- 75
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 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 数据计算最大值。
|
|