首页 > 其他分享 >【免费】基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计

【免费】基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计

时间:2024-03-23 21:58:46浏览次数:18  
标签:%% EKF 卡尔曼滤波 syn Xd result bus UKF gen

目录

1 主要内容

2 部分代码

3 程序结果

4 下载链接


主要内容

该程序对应文章《Power System Dynamic State Estimation Using Extended and Unscented Kalman Filters》,电力系统状态的准确估计对于提高电力系统的可靠性、弹性、安全性和稳定性具有重要意义,虽然近年来测量设备和传输技术的发展大大降低了测量和传输误差,但这些测量仍然不能完全没有测量噪声。因此,需要对噪声测量值进行过滤,从而获得准确的电力系统运行动态。本程序采用两种方法,分别是扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF),对电力系统进行动态状态估计,以39节点系统为算例验证了方法的有效性。

部分代码

clear;
clc;
​
%% Power Flow calculation
% Y=Ybus_new(case9_new_Sauer); % 9 bus system data obtained from MATPOWER
% result=runpf(case9_new_Sauer); % run ac power flow, in this case default NR is used
​
​
%result= runpf(case5_Overbye); 
%Y=Ybus_new(case5_Overbye); 
​
% Y=Ybus_new(case14); 
% result=runpf(case14);
% 
Y=Ybus_new(case39);
result=runpf(case39);
​
​
Vmag=result.bus(:, 8); % Pu voltage magnitude of each buses 
Vph=result.bus(:, 9); % angle in degree
V=Vmag.*exp(1j*Vph*pi/180); 
P_jQ=conj(V).*(Y*V); % Net Power at each node
S=conj(P_jQ);
S=S/100; 
Sg=result.gen(:, 2)+1j*result.gen(:, 3); 
Sg=Sg/100;
​
​
%% machine data for 9 bus system
% Xd=[0.06080; 0.11980; 0.18130];
% R=[0;0;0];
% H=[23.64; 6.4; 3.010];
% M=H/(pi*60); 
%D=[0.0125;0.0034;0.0016];
% 
%% Data of 9 bus system from Peter Sauer.
% Xd=[0.06080; 0.11980; 0.18130];
% R=[0;0;0];
% H=[23.64; 6.4; 3.01];
% %H=[13.64; 6.4; 3.01]; 
% D=[0.0255; 0.00663; 0.00265]; 
% %D=[9.6; 2.5; 1]; % If we use this value need to devide the D term by 2*pi*60 
% f0=60; 
% w_syn=2*pi*f0; 
% M=2*H/w_syn; 
% gen_bus=result.gen(:, 1); 
​
%% machine data for 14 bus system 
% % Machine data 
% H=[5.1498; 6.54; 6.54; 5.06; 5.06];
% Xd=[0.2995; 0.185; 0.185; 0.232; 0.232];
% R=zeros(length(Xd), 1); 
%  
% f0=60; 
% w_syn=2*pi*f0; 
% D=[2; 2; 2; 2; 2]/w_syn;
% 
% M=2*H/w_syn; 
% 
% gen_bus=result.gen(:, 1); 
​
%% Overbye data for 5 bus system 
% Xd=[0.05; 0.025]; 
% R=[0; 0]; 
% H=[]; 
% D=[]; 
% f0=60; 
% w_syn=2*pi*f0; 
% M=2*H/w_syn; 
% gen_bus=result.gen(:, 1); 
​
%% Case 39 bus data 
Xd=[0.006; 0.0697; 0.0531; 0.0436; 0.132; 0.05; 0.049; 0.057; 0.057; 0.031]; 
H=[500; 30.3; 35.8;28.6; 26; 34.8; 26.4; 24.3; 34.5; 42]; 
R=zeros(length(Xd), 1); 
f0=60; 
w_syn=2*pi*f0; 
​
D=[0; 0;0 ;0; 0; 0; 0; 0; 0; 0]; 
D=D/w_syn;
​
M=2*H/w_syn; 
​
gen_bus=result.gen(:, 1); 
​
%% case 145
​
​
​
%% calculate Y22
Y22=diag(1./(1j*Xd)); 
​
%% Calculation of Y11
SL=result.bus(:, 3)+1j*result.bus(:, 4); 
SL=SL/100; 
YL=conj(SL)./(abs(V).^2); % 
Y11=Y+diag(YL);
Y11(gen_bus, gen_bus)=Y11(gen_bus, gen_bus)+Y22;

程序结果

原文结果:

4 下载链接

标签:%%,EKF,卡尔曼滤波,syn,Xd,result,bus,UKF,gen
From: https://blog.csdn.net/superone89/article/details/136951129

相关文章

  • EKF、UKF车用锂离子电池SOC预估及充电控制策略研究
    复现了论文:车用锂离子电池SOC预估及充电控制策略研究[D],2018,吉林大学的论文,参考文献使用的EKF和UKF的simulink仿真模型。其中含有使用方法以及参考文献。锂电池SOC预测代码获取:EKF、UKF车用锂离子电池SOC预估及充电控制策略研究......
  • 卡尔曼滤波公式推导(自用)
    自用笔记。(仅适用于线性系统)1.引入预测概念 2.引入数据融合概念  3.引入协方差矩阵  4.卡尔曼增益推导5.公式使用顺序  ......
  • 【姿态解算】基于扩展卡尔曼滤波EKF实现姿态解算附Matlab代码
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 【滤波跟踪】基于Huber函数和最大相关熵的抗差滤波算法实现GNSS导航定位粗差处理结合
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 扩展卡尔曼滤波器的粒子实现
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1.扩展卡尔曼滤波器的粒子实现2.粒子的特征3.粒子提取及其维度3.1提取粒子3.2粒子携带的信息3.3粒子的维度4.重要性密度函数声明:以下为作者自己学习整理的内容,分享出来只......
  • 基于EKF扩展卡尔曼滤波的传感器网络目标跟踪matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本MATLAB2022a 3.算法理论概述       随着传感器网络技术的不断发展,目标跟踪作为其核心应用之一,在军事、民用等领域中得到了广泛的关注。扩展卡尔曼滤波(EKF)作为一种有效的非线性滤波方法,被广泛应用于传感器网络......
  • 卡尔曼滤波器的定义,实例和代码实现
    卡尔曼滤波器(Kalmanfilter)是一种高效的递归滤波器,能够从一系列包含噪音的测量值中估计动态系统的状态.因为不需要存储历史状态,没有复杂计算,非常适合在资源有限的嵌入式系统中使用.常用于飞行器的导引,导航及控制,机械和金融中的时间序列分析,轨迹最佳化等.卡尔曼滤......
  • Kalman卡尔曼滤波
    步骤:1、计算\(y=20e^{0.24x}\)计算出\(x\)在0.1~4区间内的y值作为真值:\(Y\);2、在Y的基础上加入一个高斯分布的误差作为观测量,观测量:Y_OBS;3、初始化P、Q、R矩阵,P代表初始状态精度,Q代表预测精度,R观测精度;4、初始化状态值state、结果存储空间Y_reselt,协方差存储空间P_r......
  • 书籍推荐-《卡尔曼滤波与信息融合》
    书籍:KalmanFilteringandInformationFusion作者:马宏宾,闫莉萍,夏元清,付梦印出版:SciencePressBeijing,Springer本文内容转载自公众号 【一点人工一点智能】关注51CTO @一点人工一点智能,了解更多移动机器人&人工智能信息01  书籍介绍这本书讲述了数字信息处理的一项关键技术:卡......
  • 【纯代码复制粘贴即可使用】卡尔曼滤波的C++实现
    使用Eigen实现卡尔曼滤波。如果实现扩展卡尔曼滤波只需将H矩阵换成雅可比的求解。#ifndef_MYKALMAN_H#define_MYKALMAN_H#include<Eigen\Dense>classKalmanFilter{public:KalmanFilter(intstateSize,intmeasSize,intuSize);~KalmanFilter()=default;......