IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 基于支持向量机的谐波分析研究与实现 -> 正文阅读

[数据结构与算法]基于支持向量机的谐波分析研究与实现

基于支持向量机的谐波分析研究与实现



前言

??针对传统算法分析谐波问题中存在的一些弊端,本文引入了基于统计学习理论的支持向量机学习算法,利用支持向量机分析电力系统谐波问题。


一、支持向量机分析电力谐波的原理

??就我国电力系统的相关标准而言,理想状态下的电压、电流信号均为标准的余弦信号,频率为标称值 50Hz。但实际状态下,电力系统中必然会存在各次谐波或间谐波以及噪声信号,这些分量的存在使得实际的电压、电流信号不再是标准的余弦信号,且实际基波频率与标称频率之间也会出现一定程度的偏差。但就一般情况而言可以假设电力系统的信号模型为:

???? y ( t ) = ∑ k = 1 N a k cos ? ( 2 π f k t ? φ k ) + e ( t ) y(t) = \sum\limits_{k = 1}^N {{a_k}\cos (2\pi {f_k}t - {\varphi _k})} + e(t) y(t)=k=1N?ak?cos(2πfk?t?φk?)+e(t)
式中, N N N 表示信号中谐波及间谐波含量; a k a_k ak? f f f k k k φ φ φ k k k分别表示第 k k k 次信号分量的幅值、频率及初相位; e ( t ) e(t) e(t)表示信号分析过程中的误差量。
??对于电力系统相关信号的分析,一般是先对其进行离散化处理。参照经典傅里叶算法的离散化过程,可得以下离散形式的电力信号表达式
???? y m = ∑ k = 1 N a k cos ? ( ω k t m ? φ k ) + e ( t m ) {y_m} = \sum\limits_{k = 1}^N {{a_k}\cos ({\omega _k}{t_m} - {\varphi _k})} + e({t_m}) ym?=k=1N?ak?cos(ωk?tm??φk?)+e(tm?)
式中, m = 1 , 2 , ? ? ? , N m=1,2,???,N m=1,2,???,N,表示信号采集过程中采样点的个数; e ( t i ) e(t_i) e(ti?)表示 t i t_ i ti?时刻信号与实际信号的误差量;其余信号含义不变。
??最终将信号在时域和频域之间的转换,得到。
???? y m = ∑ k = 1 N c k cos ? ( ω k t m ) + d k sin ? ( ω k t m ) ) + e ( t m ) {y_m} = \sum\limits_{k = 1}^N {{c_k}\cos ({\omega _k}{t_m}) + {d_k}\sin ({\omega _k}{t_m}))} + e({t_m}) ym?=k=1N?ck?cos(ωk?tm?)+dk?sin(ωk?tm?))+e(tm?)
求解式中的 c k c_k ck? d k d_k dk?可以采用多种不同方式,但大部分传统求解方式共有的缺陷就是对于信号中的异常值过于敏感,这使得算法分析低信噪比信号的性能很差,从而不能稳健的分析电力系统中的电压、电流信息。
??随着支持向量机理论在不敏感损失函数 ε 方面的优化,该算法具备了良好的线性或者非线性回归估计方面的分析能力。在此基础上运用支持向量机回归估计理论来推导 c k c_k ck? d k d_k dk?的求解步骤。 支持向量机理论通过引入损失函数来提高算法的稳健性
??设模型的输入为 X X X
X i = [ cos ? ( ω 1 t i ) , ? ? , cos ? ( ω N t i ) , ? ? , sin ? ( ω 1 t i ) , sin ? ( ω N t i ) {X_i} = [\cos ({\omega _1}{t_i}), \cdots ,\cos ({\omega _N}{t_i}), \cdots ,\sin ({\omega _1}{t_i}),\sin ({\omega _N}{t_i}) Xi?=[cos(ω1?ti?),?,cos(ωN?ti?),?,sin(ω1?ti?),sin(ωN?ti?)

??设定 ω \omega ω为:
???? ω = [ c 1 , ? ? , c N , ? ? , d 1 , ? ? , d N ] \omega = [{c_1}, \cdots ,{c_N}, \cdots ,{d_1}, \cdots ,{d_N}] ω=[c1?,?,cN?,?,d1?,?,dN?]
综上分析,电力信号可以表示为:
???? y i = ω X i + e ( t i ) {y_i} = \omega {X_i} + e({t_i}) yi?=ωXi?+e(ti?)
??其中幅值和相位的转换关系为
???? a k 2 = c k 2 + d k 2 φ k = a r c tan ? ( c k / d k ) \begin{array}{l} a_k^2 = c_k^2 + d_k^2\\ {\varphi _k} = arc\tan ({c_k}/{d_k}) \end{array} ak2?=ck2?+dk2?φk?=arctan(ck?/dk?)?
??依照支持向量及相关理论,可将式中所描述的电力信号通过 X i X_i Xi?映射到高维空间,电力系统信号相关参数的求解问题,转化为求解 ω \omega ω的问题。

二、基于 SVM 的电力谐波分析与仿真

??综合上述分析,在此利用支持向量机的相关理论与公式推导,通过求解 c k c_k ck? d k d_k dk?来提取电力信号中包含的谐波或者间谐波分量。归纳上述分析步骤,可得支持向量机分析电力系统信号的一般步骤:
(1)设置适当的采样频率及采样点数对电力系统信号进行采样,得出待分析的时间序列 ( t i , y i ) (t_i,y_i) (ti?,yi?)
(2)利用合适的核函数将时间序列映射到高维空间系统;
(3)选择恰当的支持向量机控制参数;
(4)求解二次规划问题,得出拉格朗日乘子 α α α 的表达式;
(5)运用表达式分析计算待分析电力系统信号的谐波或者间谐波信号的幅值与相位信息,从而完成信号分析。
??依据电力系统信号模型,选图所示的信号,在此为验证非同步采样特性,现将基频改为 49Hz 来实际测试 SVM 算法,并与 FFT 算法进行对比。
??原始信号如图所示,
在这里插入图片描述
??提取傅里叶变换得到
在这里插入图片描述
??利用SVR对数据进行拟合,得到拟合的结果如图所示,可以看出,完全拟合,
在这里插入图片描述
??然后就是求解对应的拟合系数 ω \omega ω
利用工具箱linsvm,然后提取其中系数,代码如下

%libsvm中间参数探索@20180704
clear all;close all;clc;
[y, x] = libsvmread('heart_scale'); 
x = full(x);
%SVM训练
model = svmtrain(y, x, '-t 0 -c 1');
[predict_label, accuracy, dec_values] = svmpredict(y, x, model);
%支持向量索引(Support Vectors Index)
SVs_idx = model.sv_indices;
%支持向量特征属性和类别属性
x_SVs = x(SVs_idx,:);% or use: SVs=full(model.SVs);
y_SVs = y(SVs_idx);
%求平面w^T x + b = 0的法向量w
alpha_SVs = model.sv_coef;%实际是a_i*y_i
w = sum(diag(alpha_SVs)*x_SVs)';%即西瓜书公式(6.9)
%求平面w^T x + b = 0的偏移项b
%由于是软件隔支持向量机,所以先找出正好在最大间隔边界上的支持向量
SVs_on = (abs(alpha_SVs)<1);%C=1 by parameter '-c 1'
y_SVs_on = y_SVs(SVs_on,:);
x_SVs_on = x_SVs(SVs_on,:);
%理论上可选取任意在最大间隔边界上的支持向量通过求解西瓜书式(6.17)获得b
b_temp = zeros(1,sum(SVs_on));%所有的b
for idx=1:sum(SVs_on)
    b_temp(idx) = 1/y_SVs_on(idx)-x_SVs_on(idx,:)*w;
end
b = mean(b_temp);%更鲁棒的做法是使用所有支持向量求解的平均值
%将手动计算出的偏移项b与svmtrain给出的偏移项b对比
b_model = -model.rho;%model中的rho为-b
b-b_model
%将手动计算出的决策值与svmpredict输出的决策值对比
%决策值f(x)=w^T x + b
f_x = x * w + b;
sum(abs(f_x-dec_values))

??最后得到SVR求解的幅值相位,
在这里插入图片描述


总结

??针对传统算法分析谐波问题中存在的一些弊端,本文引入了基于统计学习理论的支持向量机学习算法。对支持向量机包含的各部分理论进行了详细而深入地分析和研究,在此基础上,归纳出了支持向量机在回归问题分析方面的具体步骤,为该算法在谐波分析中的应用奠定基础。最后,依据支持向量机相关理论,并结合可以增强算法抗噪声能力的损失函数,对引入的电力系统信号模型展开了深入的分析与研究,得出了支持向量机理论分析谐波问题的详细步骤。

源码:https://mianbaoduo.com/o/bread/mbd-YZuUmphp
参考文献
【1】基于支持向量机的谐波分析研究与实现_冯丽平
【2】https://blog.csdn.net/jbb0523/article/details/80918214

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 23:11:55  更:2021-07-14 23:12:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 17:58:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码