代码总体说明,本代码采用了三种算法进行仿真说明
>通过最原始的求分形维度D,然后通过r=5-2*D求解分形信号的功率谱密度函数的r指数。
>通过论文提供的小波方法进行求解。
(以上两个部分理论不做介绍了)
>基于短时的功率谱密度分析方法。(介绍一下理论)
1.原始的算法的程序说明
这里是代码的前部分:
选择select,1:执行第一个算法;2:执行第二个算法;3:执行第三个算法。
这个是加载您提供的数据:仿真如下所示:
这个是执行第一个算法,求分形的纬度,通常求分析的纬度都是采用的维度盒子算法,这个算法已经比较古老了,资料也是巨多,这里就不多做介绍了,当然这个算法的计算结果误差也是极大的,放在这里,只是为了展示求分形信号r指数方法的历史。
其运行结果如下所示:
显然,这个结果和理论值相差比较大。
下面介绍论文中提供的算法的仿真。
按论文中的要求,我们首先计算信号的功率谱密度函数。这里我们是通过自相关然后FFT得到的。
这个就是求信号的自相关,其仿真效果如下所示:
然后计算其功率谱密度:
其仿真如下所示:
最后,通过线性拟合,计算出斜率从而得到r
其仿真效果如下所示:
其三个信号的对应的r值如下所示:
这个值和我们的理论值比较接近了。
下面是论文中的小波方法。
其中func_wavelet_calculate是自定义的函数,主要是求解信号的多尺度小波系数,然后对系数求方差,对于噪声比较大的情况,我们去多尺度小波系数中的几个小尺度的系数,从而减少噪声对结果的影响。其仿真效果如下所示:
上面三个图是拟合后的效果,然后计算红色直线的斜率即可,下面的三个是小波系数方差和多尺度的关系图。
当没有噪声的时候,其基本曾线性关系,当有噪声的时候,在尺度较大的情况下,会出现非线性的情况。
其计算结果如下所示:
这个结果比之前的结果更好了。
2.改进后的算法理论说明和相应代码说明
通过上面的计算,我们发现其计算结果仍存在一定的误差,考虑到分形信号的自相似性,我们考虑使用短时的分析手段进行分析,具体算法流程如下所示:
假设输入的信号为:
其数值为:XXXXXXYYYYYYZZZZZZAAAAAAQQQQQVVVVVVFFFFFFBBBBBB
下面我们对输入的数据进行帧化处理:
处理的结果为:
XXXXXXY
YYYYYYZZ
ZZZZZZAA
AAAAAAQQ
QQQQQVV
VVVVVVFF FFFFFFBB
BBBB0000
这里我们将其信号分为每帧长度为8个符号的帧,且前后两帧有两个符号重复,这种分帧方法,当然,这里每组长度和前后两帧的重叠个数是可变的。
其对应的matlab如下所示:
Enframe就是自定义的分帧函数。
然后对每帧数据求r,最后结果计算平均。
运行后得到的结果如下所示:
这个结果基本和理论结果相似,其中当没有噪声的时候,几乎和1.82相似。