风速威布尔分布和 ARMA 预测模型 matlab 程序
1 / 3
clc
clear
%% 1.计算风速 weibull 分布
% 数据处理
load data;
mu=mean(speed);%原始数据的统计参数
sigma=sqrt(var(speed));
% 计算威布尔分布参数
parmhat=wblfit(speed);
k=parmhat(2);
c=parmhat(1);
% k=(sigma/mu)^-1.086;
% c=mu/gamma(1+1/k);
% 威布尔分布拟合
[y,x]=hist(speed,ceil(max(speed)/0.5));%x 是区间中心数,组距-1.5
prob1=y/8760/0.5;%计算原始数据概率密度 ,频数除以数据种数,除以组距
prob2=(k/c)*(x/c).^(k-1).*exp(-(x/c).^k);%威布尔分布
figure(1)
title('Weibull 分布拟合图');
bar(x,prob1,1)
hold on
plot(x,prob2,'r')
legend('历史数据','Weibull 拟合结果')
% legend('Weibull 拟合结果')
hold off
save('result_weibull.mat')
%% 2.ARMA 模型预测风速
clc
clear
load data
y=speed(1:300);
Data=y; %共 300 个数据
SourceData=Data(1:250,1); %前 250 个训练集
step=50; %后 50 个测试
TempData=SourceData;
TempData=detrend(TempData);%去趋势线