气象要素奇异谱分析

2023-11-08 04:21

本文主要是介绍气象要素奇异谱分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

软件:http://bbs.06climate.com/forum.php?mod=viewthread&tid=19681

步骤一:建立轨迹矩阵

原始信号长度为N,滑动窗口长度为Lp,Kp = N-Lp+1;轨迹矩阵就是按照列做分割,第一列为索引为1~Lp的信号,第二列为2~Lp+1,第三列为3~Lp+2,第Kp列为信号索引为Kp~N。

 轨迹矩阵:

 

步骤二:奇异值分解

1) 计算XXT的特征值和特征向量U

2)  计算左奇异向量U和右奇异向量V,

求V的时候可以不用除lambda,因为重构信号的时候又乘上lambda。

 

步骤三:分组

分组的目的就是将目标信号成份和其他信号成份分开,在信号处理领域,通常认为前面r个较大的奇异值反应信号的主要能量。

步骤四:对角重构信号平均化

根据分组结果将对应的奇异向量重构:

i为选择的r个奇异向量。

对角平均化分为三部完成,对应于下面表格的三部分。

若:奇异矩阵是rca,Lp*Kp,其中Lp<Kp,重构信号为y,长度为N

第一部分:浅蓝色部分,1~Lp-1

y(1) = rca(1,1);

y(2) = (rca(1,2)+rca(2,1))/2;

y(3) = (rca(1,3)+rca(2,2)+rca(3,1))/3;

y(Lp-1) = (rca(1,Lp-1)+rca(2,Lp-2)+…+rca(Lp-1,1))/(Lp-1);

第二部分:橙色部分,Lp~Kp

y(Lp) = (rca(1,Lp)+rca(2,Lp-1)+…+rca(Lp,1))/Lp;

y(Lp+1) = (rca(1,Lp+1)+rca(2,Lp)+rca(3,Lp-1)…+rca(Lp,2))/Lp;

y(Kp) = (rca(1,Kp)+rca(2,Kp-1)+rca(3,Kp-2)+…+rca(Lp,Kp-Lp+1))/Lp;

第三部分:绿色部分,Kp+1~N

y(Kp+1) = (rca(2,Kp)+rca(3,Kp-1)+rca(4,Kp-2)+…+rca(Lp, Kp-Lp+2))/(Lp-1);

y(Kp+2) = (rca(3,Kp)+rca(4,Kp-1)+…+rca(Lp,Kp-Lp+3))/(Lp-2)

y(N-1) = (rca(Lp-1,Kp)+rca(Lp,Kp-1))/(Lp-(Lp-1)+1);

y(N) = rca(Lp,Kp);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

function [signalFiltered]=SSA(signal,windowLen)

%========================================================================

% 参看http://www.ilovematlab.cn/thread-301868-1-1.html柳絮艳的分享代码ssa改写

% signal 原始信号

% windowLen 窗口长度

% signalFiltered   重构时间序列

%=========================================================================

% Step1 : 建立轨迹矩阵

N=length(signal);

if windowLen>N/2;

    windowLen=N-windowLen;

end

K=N-windowLen+1;

X=zeros(windowLen,K);

for i=1:K

    X(1:windowLen,i)=signal(i:windowLen+i-1);

end

% Step 2: 奇异值分解

S=X*X';

[U,autoval]=eig(S);%eig返回矩阵的特征值和特征向量,U是特征向量,autoval是特征值

[d,i]=sort(diag(autoval),'descend');

sev=sum(d); %特征值的和,可根据占比选择有效信号

U=U(:,i);

V=(X')*U;

% Step 3:分组

I=[1:windowLen/2];%I的选择可根据信号特征选择

Vt=V';

rca=U(:,I)*Vt(I,:);

% Step 4: 对交平均化重构信号

y=zeros(N,1);

Lp=min(windowLen,K);

Kp=max(windowLen,K);

%重构 1~Lp-1

for k=0:Lp-2

    for m=1:k+1;

        y(k+1)=y(k+1)+(1/(k+1))*rca(m,k-m+2);

    end

end

%重构 Lp~Kp

for k=Lp-1:Kp-1

    for m=1:Lp;

        y(k+1)=y(k+1)+(1/(Lp))*rca(m,k-m+2);

    end

end

%重构 Kp+1~N

for k=Kp:N-1

    for m=k-Kp+2:N-Kp+1;

        y(k+1)=y(k+1)+(1/(N-k))*rca(m,k-m+2);

    end

end

 

signalFiltered = y;

end

  

  

参考:[1] https://wiki.mbalib.com/wiki/%E5%A5%87%E5%BC%82%E8%B0%B1%E5%88%86%E6%9E%90

[2]《基于改进奇异谱分析的信号去噪方法》http://journal.bit.edu.cn/zr/ch/reader/create_pdf.aspx?file_no=20160713&year_id=2016&quarter_id=7&falg=1

 

这篇关于气象要素奇异谱分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/367862

相关文章

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩 目录 前言 一、特征值分解 二、应用特征值分解对图片进行压缩 三、矩阵的奇异值分解 四、应用奇异值分解对图片进行压缩 五、MATLAB仿真代码 前言         学习了特征值分解和奇异值分解相关知识,发现其可以用于图片压缩,但网上没有找到相应代码,本文在学习了之后编写出了图片压缩的代码,发现奇异值分

奇异值与特征值基础

一、奇异值与特征值基础知识:     特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。先谈谈特征值分解吧:    1)特征值:     如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:     这时候λ就被称为特征向量v对应的特征值,一个

基于Python的机器学习系列(23):奇异值分解(SVD)

在本篇中,我们将介绍如何利用奇异值分解(SVD)进行降维。SVD 是一种强大的矩阵分解方法,可以帮助我们提取数据中的重要特征,广泛应用于数据分析、图像处理等领域。 问题定义         在数据分析中,特别是当数据维度很高时,我们经常需要减少数据的维度以便于处理和可视化。奇异值分解(SVD)提供了一种有效的方法来实现这一目标。SVD 通过将原始数据矩阵分解成三个矩阵的乘积,从

奇异递归模板模式(Curiously Recurring Template Pattern)

奇异递归模板模式(Curiously Recurring Template Pattern) - 知乎 (zhihu.com) 本文来自上面的文章!!!本菜鸡学习和记录一下。 CRTP是C++模板编程时的一种惯用法:把派生类作为基类的模板参数。 1.静态多态 #include <iostream>using namespace std;template <typename Child>

特征值分解(EVD)和奇异值分解(SVD)

两篇博文,写得很好: http://blog.sina.com.cn/s/blog_3f738ee00102val0.html http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html

PCA降维奇异值分解SVD

PCA降维 涉及高维数据的问题容易陷入维数灾难,随着数据集维数的增加,算法学习所需的样本数量呈指数级增加,且需要更多的内存和处理能力,消耗资源。主成分分析也称为K-L变换,常用于高位数据预处理和可视化。PCA可以把可能具有相关性的高维变量合成线性无关的低维变量,称为主成分。原理就是PCA将高维具有相关性的数据进行线性变换映射到一个低维子空间,尽可能多的保留更多变量(代表原特征),降维成一个线性无

主成分分析与奇异值分解

机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用 版权声明:     本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gmail.com。也可以加我的微博: @leftnoteasy 转载https://www.cnblogs.com/Left

奇异递归Template有啥奇的?

如果一个模版看起来很头痛,那么大概率这种模版是用来炫技,没啥用的,但是CRTP这个模版,虽然看起来头大,但是却经常被端上桌~ 奇异递归模板模式(Curiously Recurring Template Pattern, CRTP)是一种 C++ 模板编程技巧,用于实现静态多态。这种模式利用模板递归来允许一个类继承自一个模板类,其中模板参数是该类自身。这种模式可以用于各种用途,包括实现类型安全的单

数学-奇异值

有点名词党 奇异值的计算通常涉及矩阵的奇异值分解Singular Value Decomposition, SVD。奇异值分解是将一个矩形矩阵 ( A ) 分解为三个矩阵的乘积: [ A = U ΣVT] 其中: - ( U ) 是一个 ( m ×m ) 的正交矩阵,它的列向量是 ( A AT) 的特征向量。 - ( V ) 是一个 ( n ×n ) 的正交矩阵,它的列向量是 ( ATA

奇异值与潜在语义索引LSI

http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 潜在语义索引(Latent Semantic Indexing)与PCA不太一样,至少不是实现了SVD就可以直接用的,不过LSI也是一个严重依赖于SVD的算法,之前吴军老师在矩阵计算与文本处理中的分类问题中谈到:     “三个矩阵有