清华大学《信号与系统》电力系统同步相量计算【FFT/谐波/小波变换】

本文主要是介绍清华大学《信号与系统》电力系统同步相量计算【FFT/谐波/小波变换】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主要内容   

该程序为清华大学《信号与系统》课程大作业的内容,内容研究深度和编程实现效果均较好,有详细的报告,是很好的参考资料,建议采用matlab高版本运行!

1.内容要求

(还有加分内容2和3,篇幅原因不再展示)

2.研究方法

同步相量是以标准时间信号作为采样过程的基准,通过对采样数据计算而得到的相量,同步相量测量信息包含每个测量量值的幅值和相角以及相应的时间标签。数据采集与监视控制系统(Supervisory Control And Data Acquisition,SCADA)是以计算机为基础的电力自动化监控系统,其运用领域涵盖了电力、冶金、石油、化工等,SCADA在过去的电力系统监视中应用最为广泛,技术发展最为成熟。

新一代电网通过以同步相量测量技术为基础的广域测量系统来检测和控制系统的状态。同步相量测量技术的核心是相量估计算法的设计,即算法的估计精度将直接影响到的应用效果。本次大作业旨在运用信号与系统课程所学知识,对所给电压信号进行频谱分析,并设计算法计算信号的同步向量,主要包含两个部分:幅值计算、相位计算。

需要指出的是,同步向量的幅值为有效值,相位为余弦函数表示下的相位。

2.1 快速傅里叶变换FFT

2.2 窗函数法

在分析信号基波及各次谐波时,由于采样不满足完整周期,会造成泄露误差。处理泄露误差的一种有效方法是为信号加窗。FFT本质上是DFS,对于采样得到的一段有限长离散信号,使用FFT计算得到的结果实际上是将这一段离散信号周期延拓后的周期离散信号的DFS的结果(实际上是主值区间)。当采样不满足完整周期时,将信号周期延拓时显然可能会在拼接处出现间断点,这些间断点将会在频谱中产生本不存在的频率分量,造成泄露误差。

加窗分析的思路是非常直观的,原本一段有限长的离散信号相当于一个矩形窗作用在原始信号上,在信号边缘处没有衰减,如果现在使用一个边缘衰减的窗口,则在这段信号的两端的采样点的幅值都将趋于0,此时再进行拼接,原本的间断点就会被大大削弱,它们在频谱中产生的额外频率分量就会变得很小,所以泄露误差会得到限制。

2.3 希尔伯特-黄变换

希尔伯特-黄变换用于对一个信号进行平稳化处理,分析信号的幅值、频率阶跃。它包括经验模态分解( Empirical Mode Decomposition,EMD)和Hilbert 谱分析( Hilbert Spectrum Analysis,HSA)两部分。首先将时间信号通过经验模态分解 (EMD),产生一系列具有不同特征尺度的数据序列,每个序列称为一个固有模态函数(IMF),再分别针对每个固有模态函数进行HHT变换,得到各自频率和幅值的瞬时值。由此构建信号的时间-频率-能量三位分布图,即Hilbert谱,无论在时间域还是频率域都具有良好的分辨率,并且能更好地反映出信号的本质特征。其变换框图如图所示。 

2.4 小波变换

小波变换能够对信号进行多分频率的频域分析。本次作业中主要利用小波变换去除信号中的白噪声。小波变换去噪方式有多种,本文选取的是非线性小波变换阈值法去噪。

  部分代码   

%双谱线插值初始版,用于求必做基波及谐波的平均频率、幅值、相位
clc;clear;close all;
​
wave = csvread('1_1.csv'); %load 数据
s=wave(1:3500,2);%由于在4800点前后会有幅值、频率阶跃,故不能直接对全部信号进行FFT,先截取前4500个点分析
fs=10000; %采样率
N=length(s);%采样点数
n=0:N-1;
M = 23;
w=0.5-0.5*cos(2*pi*(n)/N);%汉宁窗
r=s.*w';%对原信号加窗,信号乘以窗函数
v=fft(r,N);%进行FFT,返回N点的DFT
fuzhi=abs(v)/N*2*2;%求幅值并修正,修正系数为2
u=abs(v);
stem(fuzhi);%绘制出FFT后离散信号的茎状图,用于判断k0、k1、k2
A=zeros(1,30);%存储幅值
F=zeros(1,30);%存储频率
P=zeros(1,30);%存储相位
cishu=zeros(1,30);%存储次数
​
%以下为双峰谱线插值修正算法
for ii=0:29 %I+1对应谐波系数,题目说明只含有小于30次的谐波,故在29截止即可if(u(M - 1 + (M-1)*(ii)) > u(M + 1 + (M-1)*(ii)))k1 = M - 1 + (M-1)*(ii);k2 = M + (M-1)*(ii);else k1 = M + (M-1)*(ii);k2 = M + 1 + (M-1)*(ii);endy1 = u(k1);y2 = u(k2);b=(y2-y1)/(y2+y1);%相当于参考文献中的参数βa=1.5*b;%相当于参考文献中的参数αk0=k1+a+0.5-1;%峰值频率A(ii+1)=(y1+y2)*(2.35619403+1.15543628*a^2+0.32607873*a^4+0.07891461*a^6)/N;%修正后的幅值F(ii+1)=k0*fs/N; %频率不需要修正,P(ii+1)=(angle(v(M+1+6*ii))+pi/2-pi*(a-(-1)*0.5))/pi*180;
end

  部分结果一览   

下载链接

这篇关于清华大学《信号与系统》电力系统同步相量计算【FFT/谐波/小波变换】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/836415

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方