MATLAB实现四分位法
程序进行了更新,实测可用理论基础根据风速剔除风电功率故障的数据程序实现
程序进行了更新,实测可用
理论基础
四分位法是分析数据集分布特征的重要方法之一,是指通过 3 个数据点将一个按大小 顺序排好的数据样本序列平均划分成四部分的,每部分包含的数据量是整个序列数据量的 四分之一。 四分位法的理论如下图所示,参考刘芳《风电功率预测数据集的建立》的论文。她论文中的部分描述出错意见直接看张军凯《 风电功率预测算法研究》的理论部分。这里我懒得改了。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2063ad39c56746ada7b7cd775ae4b466.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWVpaHVhYWJj,size_20,color_FFFFFF,t_70,g_se,x_16)
根据风速剔除风电功率故障的数据
程序实现
%% 按照新的论文进行编程
clc,clear,close all;
% p=xlsread('treated_data.xlsx','fp');
p=xlsread('风速功率.xlsx','B2:C4001');
figure()
scatter(p(:,1),p(:,2))
B=p(:,2);
[a,b]=sort(B);
oldlt=0;
lengthdata=[];
p_b=40;
%% 构造三维数组
for i=p_b:p_b:max(B) %% 将数据分成40块,
lt=length(find(aQ3L+1.5*IRL);
ia=fp_b(find(nnQ3L+1.5*IRL));
end
end
%% 对异常数据进行剔除
%% 还原到a的对应的标签值
if i ==1
IA=[IA;ia];
IB=[IB;ib];
else
if length(ia)~=0
IA=[IA;sum(lengthdata(1:i-1))+ia];
end
if length(ib)~=0
IB=[IB;sum(lengthdata(1:i-1))+ib];
end
end
end
I = b([IA;IB]);
p1=p(:,2);
p1(I)=[];
p2=p(:,1);
p2(I)=[];
% for i =1:length(I)
% p1(I(i)) =(p(I(i)-1)+p(I(i)+1))/2;
% end
figure()
scatter(p2,p1)
%% 寻找中位数的函数
function zws = xunzhaozhongweishu(data)
n = data;
ln=length(n);
if mod(ln,2)==0 %% 总数是偶数时
if ln~=0
Q2L=mean([n(ln/2),n(ln/2+1)]);
end
else
if ln~=0
Q2L=mean(n((ln+1)/2));
end
end
zws = Q2L;
end
实际应用时还需根据风电功率提出风速存在问题的,就根据处理后的数据将两者调换再处理一次即可。
参考文献 [1]刘芳. 基于改进BP神经网络的风电功率预测方法研究[D].浙江大学,2020. [2]张军凯, 风电功率预测算法研究 [D], 2019: 浙江大学.
|