爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 354|回复: 1

[程序设计] MATLAB新手向记录‖读取txt站点数据将单站日降水处理成逐年的日最大降水

[复制链接]

新浪微博达人勋

发表于 2024-8-30 10:39:42 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

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 数据计算最大值。


密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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