基于支持向量机的谐波分析研究与实现-附Matlab源码


文章目录

  • 基于支持向量机的谐波分析研究与实现-附Matlab源码
  • 前言
  • 一、支持向量机分析电力谐波的原理
  • 二、基于 SVM 的电力谐波分析与仿真
  • 总结

前言

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


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

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

    y(t)=∑k=1Nakcos⁡(2πfkt−φ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=1∑N​ak​cos(2πfk​t−φk​)+e(t)
式中,NNN 表示信号中谐波及间谐波含量;aka_kak​、fff、kkk、φφφ、kkk分别表示第 kkk 次信号分量的幅值、频率及初相位;e(t)e(t)e(t)表示信号分析过程中的误差量。
  对于电力系统相关信号的分析,一般是先对其进行离散化处理。参照经典傅里叶算法的离散化过程,可得以下离散形式的电力信号表达式
    ym=∑k=1Nakcos⁡(ωktm−φk)+e(tm){y_m} = \sum\limits_{k = 1}^N {{a_k}\cos ({\omega _k}{t_m} - {\varphi _k})} + e({t_m})ym​=k=1∑N​ak​cos(ωk​tm​−φk​)+e(tm​)
式中,m=1,2,∙∙∙,Nm=1,2,∙∙∙,Nm=1,2,∙∙∙,N,表示信号采集过程中采样点的个数;e(ti)e(t_i)e(ti​)表示 tit_ iti​时刻信号与实际信号的误差量;其余信号含义不变。
  最终将信号在时域和频域之间的转换,得到。
    ym=∑k=1Nckcos⁡(ωktm)+dksin⁡(ωktm))+e(tm){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=1∑N​ck​cos(ωk​tm​)+dk​sin(ωk​tm​))+e(tm​)
求解式中的 ckc_kck​、dkd_kdk​可以采用多种不同方式,但大部分传统求解方式共有的缺陷就是对于信号中的异常值过于敏感,这使得算法分析低信噪比信号的性能很差,从而不能稳健的分析电力系统中的电压、电流信息。
  随着支持向量机理论在不敏感损失函数 ε 方面的优化,该算法具备了良好的线性或者非线性回归估计方面的分析能力。在此基础上运用支持向量机回归估计理论来推导 ckc_kck​、dkd_kdk​的求解步骤。 支持向量机理论通过引入损失函数来提高算法的稳健性
  设模型的输入为XXX
Xi=[cos⁡(ω1ti),⋯,cos⁡(ωNti),⋯,sin⁡(ω1ti),sin⁡(ωNti){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ω为:
    ω=[c1,⋯,cN,⋯,d1,⋯,dN]\omega = [{c_1}, \cdots ,{c_N}, \cdots ,{d_1}, \cdots ,{d_N}]ω=[c1​,⋯,cN​,⋯,d1​,⋯,dN​]
综上分析,电力信号可以表示为:
    yi=ωXi+e(ti){y_i} = \omega {X_i} + e({t_i})yi​=ωXi​+e(ti​)
  其中幅值和相位的转换关系为
    ak2=ck2+dk2φk=arctan⁡(ck/dk)\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​)​
  依照支持向量及相关理论,可将式中所描述的电力信号通过 XiX_iXi​映射到高维空间,电力系统信号相关参数的求解问题,转化为求解ω\omegaω的问题。

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

  综合上述分析,在此利用支持向量机的相关理论与公式推导,通过求解 ckc_kck​、dkd_kdk​来提取电力信号中包含的谐波或者间谐波分量。归纳上述分析步骤,可得支持向量机分析电力系统信号的一般步骤:
(1)设置适当的采样频率及采样点数对电力系统信号进行采样,得出待分析的时间序列(ti,yi)(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求解的幅值相位,


总结

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

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

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

  1. 基于支持向量机的机械零件剩余寿命区间估计

    王健, 孙志礼, 于震梁, 柴小冬 东北大学 机械工程与自动化学院, 辽宁 沈阳 110819 收稿日期: 2015-04-28 基金项目: 国家科技重大专项(2013ZX04011-011). 作者 ...

  2. Python,OpenCV基于支持向量机SVM的手写数字OCR

    Python,OpenCV基于支持向量机SVM的手写数字OCR 1. 效果图 2. SVM及原理 2. 源码 2.1 SVM的手写数字OCR 2.2 非线性SVM 参考 上一节介绍了基于KNN的手写数 ...

  3. matlab 基于GUI的PID研究

    基于GUI的PID研究 本例子中设计一个PID控制器来研究不同参数对输出结果的影响,PID控制器由比例单元 P.积分单元 I 和微分单元 D 组成.PID 控制器是一个在工业控制应用中常见的反馈回路部 ...

  4. 微软开源基于云的生理学研究工具

    Bio Model Analyzer是一款微软基于云的生理学研究工具,可以用于对化细胞交互和通信进行建模,现已经在GitHub上开源,在MIT许可之下. 研究人员使用Bio Model Analyze ...

  5. 基于支持向量机的量化选股模型

    要求开发一个基于支持向量机技术的多因子量化投资模型,以近五年沪深300成分股的交易与财务数据为样本,结合大数据相关技术进行数据清洗,整理,存储,并构建投资策略与回测框架,输出量化投资模型的结果,为投资 ...

  6. 基于无线信号的手势识别研究现状调查

    摘要:进入21世纪以来,人机交互技术持续发展,手势识别是代表之一.2013年,华盛顿大学的研究人员提出了使用无线信号进行手势识别的方法,给传统的手势识别技术带来的一定的挑战,但是这一技术并不是很成熟, ...

  7. 基于NSGA-II算法的研究和改进

    基于NSGA-II算法的研究和改进 在大学的时候学习了有关NSGA2算法的相关知识,对这个颇有兴趣,想着把自己学习的内容都记录下来.同时也是自己第一次开始写博客,想开始自己以后的博客之路,为下班后的业 ...

  8. matlab怎么绘制李萨如图形_基于MATLAB图形界面研究李萨如图形及其讨论

    龙源期刊网 http://www.qikan.com.cn 基于 MATLAB 图形界面研究李萨如图形及 其讨论 作者:刘斯禹 韩雪 郭天超 来源:<科技资讯> 2016 年第 06 期 ...

  9. 基于支持向量机的Digits手写数字识别

    基于支持向量机的Digits手写数字识别 描述 支持向量机(Support Vector Machine,简称SVM)模型既可以用于分类也可以用于回归.手写数字识别是一个多分类问题(判断一张手写数字图 ...

最新文章

  1. 【Oracle Database】数据库用户管理
  2. 独家 | 支持向量机背后的数学 -对于SVM背后的数学和理论解释的快速概览及如何实现...
  3. 交换机使用QoS来对端口限速
  4. 双轴机械臂位置闭环控制:STC8H1K28,42HS48EIS,BH32
  5. carsim输出端口2的宽度无效_PIO CORE 解析 (2)
  6. java文件定时读写_java定时任务及日志的使用
  7. click Parameters
  8. devtools 无法加载 sourcemap_用 babel-plugin 实现按需加载
  9. 那些拆中台的CTO,70%被裁了
  10. mac 图形化安装mysql,mac安装mysql图形化工具?
  11. anaconda新建环境_机器学习实战-开发环境安装
  12. Myeclipse修改代码提示框背景色
  13. Ant Design Vue - 修改<Table>表格组件默认的暂无数据图标(自定义表格空数据状态图片)
  14. 【产品】 产品设计:工业设计(ID设计)系列软件介绍:平面设计、建模和3D渲染
  15. 为你的企业建立竞争情报系统 (转)
  16. 英语——长难句分析及技巧
  17. 统计模型——贝叶斯统计模型,负二项分布
  18. 数十年军旅,钢铁意志成就他的技术颠峰
  19. 科学方法 + 目标管理 = 学好英语
  20. 安卓开发中布局加载器(LayoutInflater)的使用

热门文章

  1. 【数学建模和matlab】反思与总结(1)
  2. Fedora Firefox flash-player插件安装
  3. python 合并工作簿_将多个csv文件合并到一个xls工作簿Python 3中
  4. 宝塔面板IP域名绑定
  5. 信息安全实验:标准IP的ACLs的配置(cisco模拟器)
  6. 一篇文章搞懂 HDFS ACLs权限管理
  7. 如何实现上传多个图片并依次展示_如何在一页PPT中插入多张图片,并保持其美感...
  8. 工作11年,35岁,裸辞: 感到前途很迷茫,如何破?
  9. 微软服务器模式表格多维,用挖掘功能实现多元回归分析
  10. docker+robot framework+selenium并发web应用UI自动化测试实践