基于奇异谱分析的一维信号去燥,附java源码

基于奇异谱分析的一维信号去燥,附java源码

  • 算法原理
  • 算法实现(java)
  • 完整代码

算法原理

奇异谱分析算法(SSA)的基本原理为:先将一维信号拆解成二维的轨迹矩阵,然后对轨迹矩阵做奇异值分解并按需选取最重要的前几维特征向量计算重构矩阵,最终利用重构矩阵重构信号,得到去燥后的一维信号。算法典型应用场景:模态分析(每个特征向量逐一重构即可将信号分解成多个独立的模态,即model)、去燥(如选取前6个特征向量进行重构)。

算法实现(java)

先看下算法效果, 对长度160的信号进行SSA去燥,window_size设置为90,使用前6个特征向量进行重构,去燥效果如下图所示:
基于奇异谱分析的一维信号去燥,附java源码_第1张图片

完整代码

//函数参数:input_data输入信号,window_size为构建轨迹矩阵的窗长,eigen_num为重构信号使用的特征向量数量

float[] SSA(float[] input_data, int window_size, int eigen_num){
    //构建轨迹矩阵
    int N=input_data.length;
    if(window_size>N/2){
        window_size = N-window_size;
    }
    int K=N-window_size+1;
    Jama.Matrix X=new Jama.Matrix(window_size, K);
    for(int i=0;i

运行该代码需要用到jama的矩阵库,我用的是Jama-1.0.3.jar,下载地址:http://www.java2s.com/Code/Jar/j/Downloadjama103jar.htm

你可能感兴趣的:(去燥算法)