MATLAB计算标准化加权平均降水量(Weighted Average Precipitation,SWAP)
MATLAB计算标准化加权平均降水量(Weighted Average Precipitation,SWAP)
1.标准化加权平均降水量(Weighted Average Precipitation,SWAP)
SWAP(Standard Weighted Average Precipitation Index,标准加权平均降水指数)是一种改进的干旱监测指数,它结合了加权平均和标准化处理的思想,能够更准确地反映干旱状况。
2.MATLAB代码
clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;N = 2000; % 序列长度(示例)
P = max(0, 5+2*randn(N,1));% 合成“日降水”(mm),允许 0t = (1:numel(P))';%% SWAP(标准化加权平均降水)
% 1) WAP = 过去 Nwap 天降水的指数衰减加权平均
% 2) 假设 WAP ~ Γ 分布(文献常用假设),做与 SPI 一致的标准化
% SWAP 参数:Nwap(回溯长度,日尺度常见 30~90),alpha(0~1 的衰减因子)
Nwap = 60;
alpha = 0.9; % 越接近 1,记忆越长;0.85~0.98 常见
[SWAP, WAP] = calc_SWAP(P, Nwap, alpha);figure;
plot(t, SWAP, 'LineWidth',1.1);
grid on;
yline([ -2 -1 0 1 2],'--');
xlabel('t'); ylabel('SWAP');
title(sprintf('SWAP(日尺度,N=%d, \\alpha=%.2f)',Nwap,alpha));
3.程序结果