在上一次的介绍中已经将数据集的问题大体说了一下,然后做完的数据集一般会存放在Excel中。要是进行信号分析的话,其实只需要用到几个样本的数据集就行,因为你需要通过设定一种你自己的分辨标准来区分正常样本和故障样本的信息。这种标准你可以通过自己的一些经验或者论文上的学习来进行设定,比如说我看过一些论文用的是频谱图(就是分析频率)或者谐波的幅值变化等等,其实不用非得按照他们的,你只需要自己设定一种标准,在你这种标准之下,能够有效的区分故障样本和正常样本就可以了。

我在这方面的思路是通过小波分解(下边说的都是离散小波分解),然后去分析每一层的小波系数,来进行比较正常样本和故障样本。但是在这之前有一个问题,如何才能确定小波分解是最有效的分解,或者说如何才能确定小波分解的层数和小波基。我在一本书上偶然看见过说:针对某一种信号会有一种最优的小波基,然后可以通过相对熵来确定小波基的选择。还有就是分解层数的选择,是通过看见过网上的一段代码来确定的(其实就是通过小波分解之后进行重构,然后比较重构之后的信号和原始的信号的误差值来进行确定小波分解的层数)。

所以说,现在的第一步就是确定小波分解的层数和小波基,然后加上之前的想法,现在就有了一种想法就是通过一个样本进行不同层数和小波基的分解重构比较。然后在通过比较不同样本的情况,来找出一种合适的小波基和分解层数(可能用的是众数,就是说很多样本中用的最多的那种层数和小波基)。

在MATLAB中其实存在很多的小波函数库,要是想要进行分解重构的话有很多的函数可以直接调用,比如说分解函数wavedec,重构的函数waverec,还有一些加噪去噪的函数都可以直接进行调用。

小波分解的原理其实很简单(网上很多的介绍):就是将小波进行分解,只不过是分解之后的东西是啥需要知道。
这个是小波分解树,其实就可以很简单直观的了解小波分解的原理是什么。原始信号通过这样的一对滤波器进行的分解叫做一级分解。信号的分解过程可以迭代,也就是说可以进行多级分解。如果对信号的高频分量不在分解,而对低频分量连续进行分解就会得到许多分辨率较低的低频分量。分解级数的多少主要取决于要被分析的数据和用户的需要。在上边的小波分解树中,CAx为逼近信号,而CDx是细节信号,其实很好理解,逼近信号就是通过分解后信号的最核心的部分或者说是和原来信号最像的部分;而细节信号就是只是做一个填充的作用。就比如说你说的一句话,逼近信号就是你说出来的字,细节信号可能就是语调,如果语调变了,字没有变得话,还是可以听清你说的是什么,大体就是这个意思。

然后最最最重点的来了,就是代码实现的部分,之前师兄和我说python中有小波函数库可以进行调用,但是我没有去用python,而是用的MATLAB写的代码,但是说实话,写起来和python没啥区别,可能语言都是相通的吧。

第一步,加载信号

信号的存取都是通过列矢量来进行存取的,所以在添加的时候要进行信号的列矢量的规范。如果你已经有这种.mat的文件,可以直接通过load进行加载(这里有个小注意点,可以在MATLAB中设置路径,这样的话添加的时候就很方便看见自己有哪些文件了)。

可以在命令行窗口敲,也可以建立一个脚本进行运行(个人建议建立脚本,方便修改)

这样的话就可以加载上你的信号文件了

要是你没有这个文件的话,你可以通过你的Excel来进行导入,然后选择列矢量保存到工作区,这样的话可以在工作区进行保存为.mat的文件。

如果想要进行查看你的信号的话,可以通过打印一下你的信号plot(X)来查看你信号的样式。

第二步就是进行对信号的分解和重构

(1)分解

分解可以通过几个函数来进行分解

[c,l] = wavedec(X,3,'db1');

这里用到的是wavedec这个小波函数,它里边主要包含三个参数,第一个是你的信号,第二个是你想要分解的层数,第三个是你想要选取的小波基,C为小波分解产生的小波系数,L为分解产生的小波结构。在MATLAB中有一个APP(下面图示)是可以直接进行选取小波基和分解层数的,你可以通过APP大体了解选择的范围或者标准。

然后在进行小波分解之后你需要提取每一层分解的信号和系数(因为我要通过每一层来分析信号的不同),所以要进行计算每一层的信号系数。

% 噪声信号,小波细节系数,获取CDx
d3 = detcoef(c,l,3);
d2 = detcoef(c,l,2);
d1 = detcoef(c,l,1);% 逼近信号,小波近似系数,获取CAx
a3 = appcoef(c,l,'db1',3);
a2 = appcoef(c,l,'db1',2);
a1 = appcoef(c,l,'db1',1);

这样一来就可以将原始信号通过db1进行三层的分解,而Dx和Ax就是上边小波分解树中的两种信号。得到这些信号系数之后,我就可以对每一层进行分析。

第三步,重构

在进行分解之后,不确定这种分解是不是最优的情况,所以就要进行判断分解的优劣,这时候就要对分解之后的信号进行重构,然后对比前后两种信号来判断分解的好坏。

% 重构
Y = waverec(c,l,'db1');

这就是通过分解之后在对信号进行重构,可以通过误差值的方式来比较哪一种是你最适合的层数或者小波基。

% 计算重构后的信号误差
MSE = sum(X - Y).^2/length(X);

你也可以自己想一种方法来判断哪种是最好的,不一定非要这样做。

总结一下就是将你的信号通过分解重构法来进行分解,得到的每一层的系数是为了我们以后能够分析用,而重构之后的信号是为了我们能够判断我们分解的好坏。在这里就可以通过改变小波的层数和小波基来进行多次的实验来选取啦。

再这样之后就可以对你自己的信号进行一个分析,然后下一篇就是针对每一层的信号要怎么分析才能区别故障和正常样本。

匝间短路故障学习历程(二)--小波变换处理信号相关推荐

  1. 匝间短路故障学习历程(三) -- 信号加噪去噪

    因为通过仿真实验做出来的数据是模拟数据,所以不能和真实的数据进行比较,所以会用到针对模拟的信号进行添加噪声数据的方法来进行模拟实际场景中的信号. 在MATLAB中也存在直接添加噪声数据的函数,我之前在 ...

  2. 匝间短路故障学习历程(六) -- 批处理问题

    在上边的处理过程中都是通过对单个样本进行的操作,比如说对正常样本或者故障样本进行加噪去噪或者说进行小波变换,但是在想进行故障诊断的时候需要同时对大量样本进行操作,那么这样的话就需要进行批处理操作,才能 ...

  3. 匝间短路故障学习历程(一)--数据集的问题

    一般情况下,数据集的来源一般有两种:一种就是通过公开的数据集来进行设计实验,另一种就是通过实操(真实的实验)来进行获取数据集.但是因为一些条件的原因,再加上公开的数据集不太容易找的问题,可能会有一些别 ...

  4. 匝间短路故障学习历程(五) -- 特征提取问题

    先说一下总体的想法吧: (1)将信号进行输入 (2)对信号进行小波分解,然后得到每一层的小波分解系数 (3)对每一条子带进行提取特征 (4)选择其中能够代表的特征矢量 (5)对特征矢量进行添加标签,然 ...

  5. 匝间短路故障学习历程(四) -- 频谱分析

    正常样本和故障样本的区别标准其实有很多种,其中频谱分析是其中的一种方式,主要是分析每一种信号的频率幅值信息或者叫振幅.频谱图是指信号频率与能量的关系用频谱表示. 信号一般有四种特性:频谱.频谱密度.能 ...

  6. 记录我的学习历程--二维数组解决平面图形题

    打印出 3           7 2     4    6    8 1            5          9 代码如下 转载于:https://blog.51cto.com/413973 ...

  7. 我的EJB学习历程(二)

    先说点题外话, bromon说的真有点恐怖,不知道消息来源的真实性,

  8. 小程序学习历程(二):注册小程序测试号

     该文适合还没有微信小程序开发者账号,以及有了开发者账号同时还想注册一个测试账号的读者. 开发者测试账号推出的用意,主要是:方便我们在决定正式注册小程序账号之前,或者仅仅只是想体验一下小程序(或小游戏 ...

  9. Arduino小白的学习历程

    Arduino小白的学习历程 例7 温度报警器 作为一名刚接触Arduino的小白,觉得温度报警器这个东西特别新鲜,先把它的效果描述一下: 效果一:打开串口监视器(至于怎么理解串口监视器,我来说说自己 ...

最新文章

  1. const int * 、int * const、int const* 、const int a(){ } 和int a()const { }的区别和联系
  2. perf报错解决:no symbols found in /bin/dash, maybe install a debug package?和was updated (is prelink enabl
  3. poj 1088 滑雪 详解
  4. Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】
  5. Node简单服务器开发
  6. python:更改pip源
  7. 数控铣削图案及编程_数控铣加工比普铣的优势,大多数人选择数控铣的原因
  8. go 框架iris 响应记录器
  9. 均薪连续三年过万,北上深人才需求大 !| 5G 人才报告
  10. 开发微信小程序 中遇到的坑 及解决方法
  11. python 下采样和上采样
  12. 计算机中答案没有小数怎么办,嵌入式编程中计算机是如何存储小数的
  13. 旅游展示网站-前端网页设计技术完整精美源码HTML+CSS+JS
  14. server sql 去 反斜杠_mssql sqlserver 检索字段中是否包含反斜杠的方法
  15. 帮助睡眠最好的办法是什么?对睡眠好的东西分享
  16. OSChina 周一乱弹 ——杜牧你个老流氓!
  17. Tecplot中用excel表格绘制xy图的一点理解
  18. 信用风险建模 in Python 系列 7 - ASRF 模型
  19. MATLAB将图像数据以txt文件保存以及从txt文件中读矩阵并显示图像
  20. 图片的高频与低频分量 初识 与 相关博客

热门文章

  1. 华夏名网虚拟主机如何导入mysql/mssql数据库,怎样自已导入数据到华夏名网数据库
  2. 实现财务自由 之 收割你的 “韭菜” 思维,学会做价值投资
  3. 灵动微MM32产品特色及应用市场
  4. java 对excel 截图_java基于poi实现快速操作Excel的工具[v2.0.0]
  5. 视频剪辑软件调研分析及使用感受——后附作品地址
  6. SAP监视系统CCMS
  7. 整理动力节点王鹤老师ssm整合步骤
  8. 分享一个工具:代码统计工具(SourceCounter)
  9. QT 自定义开关效果的按钮
  10. 百度地图不能显示图层的解决办法