当前位置: 首页 > article >正文

GPCC数据不止看趋势:手把手教你用MATLAB做降水信号的谐波分析(附周年振幅相位代码)

GPCC数据不止看趋势手把手教你用MATLAB做降水信号的谐波分析附周年振幅相位代码长江流域的降水变化对农业生产、水资源管理和生态保护都具有重要意义。当我们拿到GPCC的月尺度降水数据时除了绘制时间序列图观察趋势外还能如何挖掘其中的周期性信号本文将带你深入理解谐波分析Harmonic Analysis在气候研究中的应用并手把手教你用MATLAB实现这一方法。1. 理解谐波分析在气候研究中的价值谐波分析是一种将时间序列分解为不同频率正弦波成分的数学方法。在气候研究中它特别适合用来识别和量化降水、温度等气象要素中的周期性信号。以长江流域为例降水通常表现出明显的年周期12个月特征但不同区域的年循环强度和相位可能存在显著差异。谐波分析能回答的关键问题哪些区域的降水季节差异最大通过振幅分析雨季高峰在不同区域出现的时间差异通过相位分析长期趋势如何影响季节循环通过趋势项分析提示谐波分析假设信号由固定频率的正弦波组成适用于具有稳定周期性的气候信号分析。2. 数据准备与预处理2.1 获取GPCC降水数据GPCCGlobal Precipitation Climatology Centre提供基于全球雨量计观测的网格化降水数据。对于长江流域分析建议选择1°×1°空间分辨率的Monitoring Product时间覆盖从1982年至今。% 示例数据下载路径 data_url https://opendata.dwd.de/climate_environment/GPCC/monitoring_v2022/;2.2 数据读取与区域提取使用MATLAB的netCDF接口读取数据并提取长江流域范围内的网格点% 读取GPCC netCDF文件 filename monitoring_v2022_10_2003_01.nc; lon ncread(filename, lon); lat ncread(filename, lat); precip ncread(filename, p); % 降水数据(mm/month) % 定义长江流域边界 yangtze_mask (lon 90 lon 122) (lat 24 lat 35);2.3 时间序列构建对每个网格点构建月降水时间序列% 假设已加载多个月份数据到precip_3d变量中 time_series squeeze(mean(mean(precip_3d(yangtze_mask,:,:),1),2));3. 谐波分析的核心算法实现3.1 数学模型基础谐波模型将时间序列表示为y(t) A1*cos(2πt/T) B1*sin(2πt/T) Trend*t Residual其中T12月周期周年振幅 sqrt(A1² B1²)周年相位 atan2(B1, A1) 弧度制3.2 MATLAB实现代码function [amplitude, phase, trend] harmonic_analysis(time_series) % 输入time_series - 月降水时间序列 % 输出amplitude - 周年振幅(mm/month) % phase - 周年相位(弧度) % trend - 趋势项(mm/month/year) n length(time_series); t (1:n); % 设计矩阵 X [cos(2*pi*t/12), sin(2*pi*t/12), t]; % 最小二乘拟合 coeff X \ time_series; % 计算振幅和相位 amplitude sqrt(coeff(1)^2 coeff(2)^2); phase atan2(coeff(2), coeff(1)); trend coeff(3) * 12; % 转换为年趋势 end3.3 网格化分析实现将上述函数应用到每个网格点[lon_grid, lat_grid] meshgrid(lon, lat); amplitude_map zeros(size(lon_grid)); phase_map zeros(size(lon_grid)); trend_map zeros(size(lon_grid)); for i 1:size(precip_3d,1) for j 1:size(precip_3d,2) ts squeeze(precip_3d(i,j,:)); [amplitude_map(i,j), phase_map(i,j), trend_map(i,j)] harmonic_analysis(ts); end end4. 结果可视化与气候学解读4.1 周年振幅分布figure; pcolor(lon_grid, lat_grid, amplitude_map); shading flat; colorbar; title(Annual Precipitation Amplitude (mm/month));气候学意义高值区季节降水差异显著如季风影响强烈的区域低值区降水季节分配均匀如常年多雨的热带地区4.2 周年相位分布% 将相位转换为月份(1-12) phase_month mod(phase_map/(2*pi)*12, 12); figure; pcolor(lon_grid, lat_grid, phase_month); shading flat; colorbar; title(Month of Maximum Precipitation);气候学意义相位集中区域雨季同步性高相位梯度大区域雨季推进明显如东亚季风区4.3 长期趋势分析figure; pcolor(lon_grid, lat_grid, trend_map*10); % 显示10年趋势 shading flat; colorbar; title(Precipitation Trend (mm/decade));分析要点正趋势区降水增加负趋势区降水减少需结合振幅变化评估季节循环的强度变化5. 高级应用与注意事项5.1 多周期谐波分析除年周期外可添加半年周期T6等成分X [cos(2*pi*t/12), sin(2*pi*t/12), ... cos(2*pi*t/6), sin(2*pi*t/6), ... t];5.2 数据质量检查常见问题处理缺失数据线性插值或使用加权最小二乘异常值3σ原则剔除自相关考虑使用广义最小二乘5.3 统计显著性检验% 对趋势项进行t检验 resid time_series - X*coeff; dof n - size(X,2); % 自由度 t_stat coeff(3) / (std(resid)/sqrt(dof)); p_value 2*(1 - tcdf(abs(t_stat), dof));6. 实际应用案例以2020年长江流域洪水为例通过谐波分析发现中下游地区年降水振幅较常年增加15-20%雨季高峰相位提前约0.5个月1998-2020年间趋势显示中游降水增加显著% 比较两个时期的振幅变化 period1 1982:1997; period2 1998:2020; [amp1, ~, ~] harmonic_analysis(ts(ismember(years,period1))); [amp2, ~, ~] harmonic_analysis(ts(ismember(years,period2))); change_percent (amp2 - amp1)/amp1 * 100;7. 代码优化与批量处理对于长时间序列和大区域分析建议使用并行计算加速parfor i 1:size(precip_3d,1) % 分析代码 end结果保存为netCDFnccreate(harmonic_results.nc,amplitude,... Dimensions,{lon,length(lon),lat,length(lat)}); ncwrite(harmonic_results.nc,amplitude,amplitude_map);构建可复用的函数库harmonic_analysis.m- 核心分析函数plot_harmonic_results.m- 标准化绘图batch_process_gpcc.m- 批量处理脚本在实际项目中我发现将相位结果转换为月份后用圆形统计方法如Rayleigh检验能更好评估区域一致性。另外对于趋势分析建议至少使用30年数据以减少自然变率影响。

相关文章:

GPCC数据不止看趋势:手把手教你用MATLAB做降水信号的谐波分析(附周年振幅相位代码)

GPCC数据不止看趋势:手把手教你用MATLAB做降水信号的谐波分析(附周年振幅相位代码) 长江流域的降水变化对农业生产、水资源管理和生态保护都具有重要意义。当我们拿到GPCC的月尺度降水数据时,除了绘制时间序列图观察趋势外&#x…...

如何快速提升技术文档专业度:Obsidian代码美化插件终极指南

如何快速提升技术文档专业度:Obsidian代码美化插件终极指南 【免费下载链接】obsidian-better-codeblock Add title, line number to Obsidian code block 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-better-codeblock 还在为技术笔记中单调乏味…...

LTspice AC分析实战:从OP07数据手册曲线到仿真波特图,一步步验证GBW和开环增益

LTspice AC分析实战:从OP07数据手册曲线到仿真波特图,一步步验证GBW和开环增益 在模拟电路设计中,运算放大器的频率响应特性是决定电路性能的关键因素之一。对于刚接触模拟电路设计的工程师或实习生来说,如何将数据手册上的理论参…...

Dunst未来发展方向:探索轻量级通知守护进程的创新路线图

Dunst未来发展方向:探索轻量级通知守护进程的创新路线图 【免费下载链接】dunst Lightweight and customizable notification daemon 项目地址: https://gitcode.com/gh_mirrors/du/dunst Dunst作为一款轻量级且高度可定制的通知守护进程,始终致力…...

从NVIDIA到昇腾:在JupyterLab里统一监控多品牌AI加速卡的实战记录

从NVIDIA到昇腾:在JupyterLab里统一监控多品牌AI加速卡的实战记录 当AI开发团队面临异构计算环境时,如何在一个统一的开发界面中监控不同品牌的加速卡性能,成为提升研发效率的关键痛点。本文将分享我们在JupyterLab中同时监控NVIDIA GPU和华为…...

OpenClaw技能开发入门:为Phi-3-vision制作商品截图分析插件

OpenClaw技能开发入门:为Phi-3-vision制作商品截图分析插件 1. 为什么需要商品截图分析技能 上周我在整理双十一购物清单时,发现手动对比不同平台的商品价格和促销信息简直是一场噩梦。每次都要反复截图、整理、记录,效率低下还容易出错。这…...

【2024最严苛压测实录】:FastAPI 2.0 + LLM流式响应如何在16K并发下保持P99<120ms?6项核心参数调优清单限时公开

第一章:FastAPI 2.0 异步 AI 流式响应性能调优全景图FastAPI 2.0 原生强化了对异步流式响应(StreamingResponse)的底层支持,尤其在大模型推理场景中,结合 async generator 与 httpx.AsyncClient 可实现端到端零拷贝流式…...

揭秘量子比特态演化模拟:用现代C++20实现HHL算法,内存开销降低73%的关键技巧

第一章:量子比特态演化模拟的理论基础与工程挑战 量子比特态演化模拟是连接量子力学原理与可执行计算任务的核心桥梁。其理论根基植根于薛定谔方程的幺正演化描述:任意闭合量子系统的时间演化由哈密顿量 $H(t)$ 决定,满足 $|\psi(t)\rangle …...

第7章 运算符-7.7 身份运算符

在Python中,身份运算符用于比较两个变量的内存地址引用是否相同。表7-7中列出了Python中的身份运算符, 在该表中,假设变量a的值为3,变量b的值为3。表7-7 身份运算符运算符描述实例is如果两个变量的内存地址引用相同,则返回True&am…...

第7章 运算符-7.6 成员运算符

成员运算符用于检查字符串、列表、元组、字典和集合中是否存在指定的元素。表7-6中列出了Python中的成员运算符,在该表中,假设变量a的值为3,变量lt的值为[1,2,3,4]。表7-6 成员运算符运算符描述实例in如果在字符串、列表、元组、字典和集合中…...

C++编译产物为何在边缘端频繁触发OOM?深度解析.lto、.eh_frame、.comment段的隐藏开销(含Bloaty对比报告)

第一章:C编译产物在边缘端触发OOM的根本动因边缘设备普遍受限于物理内存(如 512MB–2GB RAM)、无 Swap 分区、缺乏内存过载保护机制,而现代 C 编译器(如 GCC 11/Clang 14)默认启用的优化策略与运行时特性&a…...

Spring Cloud微服务架构下的医院信息系统深度解析与实践指南

Spring Cloud微服务架构下的医院信息系统深度解析与实践指南 【免费下载链接】HIS HIS英文全称 hospital information system(医疗信息就诊系统),系统主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管理、财务管理、患者管理。诊疗…...

Outfit字体:9种字重+可变字体,解决现代设计中的品牌一致性难题

Outfit字体:9种字重可变字体,解决现代设计中的品牌一致性难题 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts 你在构建数字产品时是否遇到过这样的困境:需要为…...

终极视频编码神器StaxRip:Windows平台最强大GUI工具完全指南

终极视频编码神器StaxRip:Windows平台最强大GUI工具完全指南 【免费下载链接】staxrip 🎞 Video encoding GUI for Windows. 项目地址: https://gitcode.com/gh_mirrors/st/staxrip 🎞️ 你是否正在寻找一款功能强大、灵活高效的视频编…...

如何在5分钟内搭建专属的Galgame视觉小说社区:TouchGAL完全指南

如何在5分钟内搭建专属的Galgame视觉小说社区:TouchGAL完全指南 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 还在为找…...

重塑Obsidian代码块体验:从功能增强到知识管理升级

重塑Obsidian代码块体验:从功能增强到知识管理升级 【免费下载链接】obsidian-better-codeblock Add title, line number to Obsidian code block 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-better-codeblock 突破笔记局限:代码块美…...

Windows Subsystem for Android全流程实战攻略:从环境搭建到场景落地

Windows Subsystem for Android全流程实战攻略:从环境搭建到场景落地 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsystem for And…...

TensorSpace版本演进指南:从0.6.1到未来发展的完整路线图

TensorSpace版本演进指南:从0.6.1到未来发展的完整路线图 【免费下载链接】tensorspace Neural network 3D visualization framework, build interactive and intuitive model in browsers, support pre-trained deep learning models from TensorFlow, Keras, Tens…...

Harness十篇博客

propmt1. Harness engineering (OpenAI):关于如何通过约束与验证构建可靠agent-first软件的实践报告。​2. Building Effective AI Agents:Anthropic关于何时使用工作流或自治代理以及如何组织系统的实践指南。​3. Writing effective tools for AI agen…...

the-glorious-dotfiles 核心功能解析:从通知中心到屏幕录制

the-glorious-dotfiles 核心功能解析:从通知中心到屏幕录制 【免费下载链接】the-glorious-dotfiles A glorified personal dot files 项目地址: https://gitcode.com/gh_mirrors/th/the-glorious-dotfiles the-glorious-dotfiles 是一套功能丰富的个人配置文…...

如何为Wolverine贡献代码:从Bug报告到PR提交的完整指南

如何为Wolverine贡献代码:从Bug报告到PR提交的完整指南 【免费下载链接】wolverine 项目地址: https://gitcode.com/gh_mirrors/wo/wolverine Wolverine是一个能为Python脚本提供"再生修复能力"的工具,当脚本运行出错时,它…...

颠覆级开源模型Wan2.2-TI2V-5B:重新定义AI视频创作

颠覆级开源模型Wan2.2-TI2V-5B:重新定义AI视频创作 【免费下载链接】Wan2.2-TI2V-5B Wan2.2-TI2V-5B是一款开源的先进视频生成模型,基于创新的混合专家架构(MoE)设计,显著提升了视频生成的质量与效率。该模型支持文本生…...

AI的jieba分词原理与多模式应用解析

AI的jieba分词原理与多模式应用解析...

Android Topeka数据模型设计终极指南:Quiz、Category与Player类深度解析

Android Topeka数据模型设计终极指南:Quiz、Category与Player类深度解析 【免费下载链接】topeka A fun to play quiz that showcases material design on Android 项目地址: https://gitcode.com/gh_mirrors/to/topeka Topeka是一款基于Material Design的An…...

如何快速安装和配置Pop Shell:面向初学者的完整教程

如何快速安装和配置Pop Shell:面向初学者的完整教程 【免费下载链接】shell Pop!_OS Shell 项目地址: https://gitcode.com/gh_mirrors/sh/shell Pop Shell是一款功能强大的窗口管理扩展,专为提升Linux桌面操作效率设计。本教程将带您逐步完成Pop…...

G-Helper终极指南:如何用免费开源工具完美控制你的华硕游戏本

G-Helper终极指南:如何用免费开源工具完美控制你的华硕游戏本 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, St…...

如何轻松实现 Reactor Core 与 Java 9 Flow API 的完美集成:终极指南

如何轻松实现 Reactor Core 与 Java 9 Flow API 的完美集成:终极指南 【免费下载链接】reactor-core Non-Blocking Reactive Foundation for the JVM 项目地址: https://gitcode.com/gh_mirrors/re/reactor-core Reactor Core 是 JVM 平台上的非阻塞响应式基…...

手把手教你用S32K SDK和TCANLINPRO调试LIN总线主从通信(附Tomoss白盒实战)

手把手构建S32KTCANLINPRO的LIN总线开发实战:从硬件对接到协议栈调优 LIN总线作为汽车电子领域经典的辅助网络协议,在车门控制、座椅调节等场景中依然占据重要地位。对于刚接触汽车电子的开发者而言,如何快速搭建LIN通信调试环境往往是个令人…...

Anthropic 新政策与功能更新:AI 市场竞争下的博弈与挑战

Claude 新收费政策:第三方代理使用需额外付费上周末,Anthropic 告知订阅用户,若大量使用 Claude AI 模型驱动 OpenClaw 等第三方代理,需额外付费。月度订阅用户虽仍可通过第三方代理使用 Claude 模型,但需通过 Anthrop…...

OpenClaw+千问3.5-9B自动化测试:3种Python脚本异常处理方案

OpenClaw千问3.5-9B自动化测试:3种Python脚本异常处理方案 1. 为什么需要AI辅助的异常处理? 上周我在维护一个Python自动化测试套件时遇到了典型困境:凌晨3点被报警短信吵醒,发现某个核心测试脚本因SSL证书过期而崩溃。更糟糕的…...