目录一.直接插入排序二.希尔排序三.选择排序四.堆排序五.冒泡排序六.快速排序1.hoare版2.挖坑法3.前后指针4.选取基准值的优化(1)快速排序非递归七.归并排序(2)归并排序非递归八.计数排序九.八大排序稳定性分析一.直接插入排序初窥直接插入排序我们先来看一张动图:由动图我们可以分析出直接插入排序是从第二个数据开始遍历,与前面的数据进行比较如果小于则让前面的数据向前移动自己接着向前面的数据比较直到比较到大于等于自己的数据或者没有数据能进行比较时停止插入当前的位置。直接插入排序性能分析:时间复杂度:O(N^2),最好情况当数据本来就有序时可以做到O(N);空间复杂度:直接插入排序并没再开
希尔伯特-包络分析流程 对于齿轮箱振动信号而言,由于存在多对齿轮同时参与啮合,那么,测量得到的信号将可能出现多个以齿轮啮合频率或及谐频为载波频率、轴频为调制频率的幅值调制、频率调制或混合调制的情况,除此之外,还可能是箱体的固有频率等其他频率作为载波信号的调制现象。这些调制使得信号的频谱错综复杂,对解调分析带来了更大的困难。如图1为某齿轮箱的振动频谱,从频谱图中可以看出,多个频带存在明显的调制现象,出现多个边频带(如箭头所示位置)。由于存在多个调制频率(和频与差频)、混合调制等使得边频带分布极不规律,很难直接从边频带中解调出调制频率。 图1频谱图中存在多处调制 对于滚动轴承的故障诊断而言,由于外
希尔伯特-包络分析流程 对于齿轮箱振动信号而言,由于存在多对齿轮同时参与啮合,那么,测量得到的信号将可能出现多个以齿轮啮合频率或及谐频为载波频率、轴频为调制频率的幅值调制、频率调制或混合调制的情况,除此之外,还可能是箱体的固有频率等其他频率作为载波信号的调制现象。这些调制使得信号的频谱错综复杂,对解调分析带来了更大的困难。如图1为某齿轮箱的振动频谱,从频谱图中可以看出,多个频带存在明显的调制现象,出现多个边频带(如箭头所示位置)。由于存在多个调制频率(和频与差频)、混合调制等使得边频带分布极不规律,很难直接从边频带中解调出调制频率。 图1频谱图中存在多处调制 对于滚动轴承的故障诊断而言,由于外
希尔伯特滤波器原理及IP核使用希尔伯特滤波器功能上就是相当于一个全通滤波器和移相器的组合。在VIVADO里面Hilbert一般使用的是FIR滤波器学习过数字信号处理书籍,就会知道其实FIRFilter的核心思想就是卷积运算,然后再稍微了解一下卷积的时域卷积定理,就可以理解Hilbert滤波器的原理。希尔伯特滤波器IP核使用详解第一步配置系数文件及输入输出类型singlerate模式,即数据输出与输入速率相同。第二步选择通道和采样频率vivado的ip核支持多通道数据输入模式,这里选择通道数为1,即单通道模式。这里可以查看反应曲线,由此可以得出希尔伯特滤波器变换实际效果。
🌈目录1.排序的概念2.常见的排序算法3.排序算法的实现3.1插入排序3.1.1直接插入排序3.1.2希尔排序(缩小增量排序)3.2选择排序3.2.1基本思想3.2.2直接选择排序3.2.3堆排序1.排序的概念排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假设在待排序的序列中,存在多个具有相同内容的元素,如果经过排序,这些元素的相对位置并不发生改变,则称这种排序算法是稳定的。稳定的排序可以变成不稳定的,但是不稳定的排序算法是不可能变成稳定的。例如:排序前:4a65934b72排序后:234a4b5679==》稳定排序后:234b4a5679==》不
目录前言:一:插入排序(1)直接插入排序基础思路(有个印象就行,主要看单趟)单趟排序完整排序时间复杂度分析(2)希尔排序基础思路(有个印象就行,主要看单趟)单趟排序完整排序时间复杂度分析二:选择排序(1)直接选择排序基础思路单趟排序完整排序时间复杂度分析(2)堆排序三:性能测试前言: 排序的重要性:1.数据存储和检索:对于大规模数据的存储和检索,排序可以提高检索速度。例如,当我们需要在数据库中搜索某个区间内的数据时,如果该区间已被排过序,我们可以使用二分查找算法来快速搜索,而不是一个一个元素地遍历。2.数据分析:排序也是许多统计分析算法、机器学习算法和数据处理算法的基础。例如,在统计分析中,我
1.排序的概念及其运用1.1排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。1.2排序运用1.3常见的排序算法//排序实现的接口//插入排序voidInse
目录🍏一.排序的概念及应用🍏 1.排序的概念 2.排序的应用 3.常用的排序算法🍎二.排序算法的实现🍎1.插入排序1.1直接插入排序1.2希尔排序(缩小增量排序)2.选择排序2.1直接选择排序2.2堆排序3.比较排序3.1冒泡排序3.2快速排序 递归版本快速排序递归优化快速排序递归总过程4.归并排序5.计数排序🍑三.排序总结🍑🍏一.排序的概念及应用🍏1.排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 我们可以通过学生的结构体来理解,把学生结构体看成记录,学生结构体里有姓名、成绩、学号等成员,任一成员都可以当成关键字,
我在使用Apple的AccelerateFramework获得C++中的Matlab等效Hilbert变换时遇到问题。在PaulR'spost的帮助下,我已经能够让vDSP的FFT算法正常工作。,已经设法获得与Matlab相同的结果。我都读过:这个stackoverflowquestionbyJordan并阅读了Matlabalgorithm(underthe'Algorithms'sub-heading).将算法总结为3个阶段:对输入进行前向FFT。DC和Nyquist之间的零反射频率和双倍频率。对修改后的正向FFT输出进行反向FFT。下面是每个阶段的Matlab和C++的输出。这些
希尔伯特解调(包络谱)python代码实战及详细讲解,在CWRU数据上验证1、数据介绍2、加载CWRU内圈故障数据3、希尔伯特解调(包络谱)分析3.1希尔伯特黄变换3.2获得包络信号3.3获得包络谱3.4去直流分量4、计算故障特征频率4.1定义一个轴承故障特征频率计算函数5、理论故障特征频率与实际故障特征频率验证6、与fft进行对比分析7、封装包络谱函数7.1外圈故障数据测试7.2滚动体故障数据测试分析8、总结欢迎关注公众号《故障诊断与python学习》代码位置:https://github.com/HappyBoy-cmd/fault_diagnosis_signal_processing参