SSA奇异谱分解:时频域信号成分分析与重构

📅 发布时间:2026/7/17 18:18:05 👁️ 浏览次数:
SSA奇异谱分解:时频域信号成分分析与重构
奇异谱分解Singular Spectrum Analysis, SSA是一种基于奇异值分解SVD的非参数信号处理技术通过将一维时间序列分解为多个独立成分趋势、周期、噪声实现时频域分析与信号重构。一、、MATLAB实现步骤以下通过合成信号分解与重构示例展示SSA的完整实现。1. 参数设置与示例信号生成生成一个含趋势项线性、周期项正弦波、噪声项的合成信号x(t)0.5t2sin(2πt/10)ε(t),t1,2,...,200x(t)0.5t2sin(2πt/10)ε(t),t1,2,...,200x(t)0.5t2sin(2πt/10)ε(t),t1,2,...,200其中ε(t)∼N(0,0.52)ε(t)∼N(0,0.52)ε(t)∼N(0,0.52)为高斯白噪声。2. SSA核心函数实现1嵌入构造轨迹矩阵functionXembedding(x,L)% x: 输入时间序列 (N×1)% L: 窗口长度% X: 轨迹矩阵 (L×K), KN-L1Nlength(x);KN-L1;Xzeros(L,K);fori1:LX(i,:)x(i:Ki-1);endend2对角平均矩阵转一维序列functionx_recdiagonal_averaging(X)% X: 待重构矩阵 (L×K)% x_rec: 重构序列 (N×1), NLK-1Lsize(X,1);Ksize(X,2);NLK-1;x_reczeros(N,1);countzeros(N,1);% 计数矩阵fori1:Lforj1:K idxij-1;% 对角线索引x_rec(idx)x_rec(idx)X(i,j);count(idx)count(idx)1;endendx_recx_rec./count;% 平均end3SSA主函数分解与重构function[components,singular_values]ssa_decompose(x,L,m)% x: 输入时间序列 (N×1)% L: 窗口长度% m: 保留成分数 (默认取前m个最大奇异值成分)% components: 分解成分 (m×N矩阵, 每行一个成分)% singular_values: 奇异值 (L×1)Nlength(x);Xembedding(x,L);% 轨迹矩阵[U,S,V]svd(X,econ);% SVD分解 (经济型)sigmadiag(S);% 奇异值 (L×1)singular_valuessigma;ifnargin3||isempty(m)mlength(sigma);% 默认保留所有成分endmmin(m,length(sigma));% 避免超出奇异值数量componentszeros(m,N);% 存储m个成分fori1:m XiU(:,i)*sigma(i)*V(:,i);% 第i个成分矩阵components(i,:)diagonal_averaging(Xi);% 对角平均重构endend3. 示例合成信号分解与重构clear;clc;close all;%% 1. 生成示例信号N200;% 序列长度t1:N;x0.5*t2*sin(2*pi*t/10)0.5*randn(1,N);% 趋势周期噪声xx(:);% 转为列向量%% 2. SSA分解参数设置L50;% 窗口长度 (经验值: L≈N/4~N/2)m3;% 保留前3个成分 (对应趋势、周期、噪声)%% 3. SSA分解[components,sigma]ssa_decompose(x,L,m);% 分解singular_valuessigma(1:m);% 前m个奇异值%% 4. 成分选择与重构% 成分1: 趋势项 (线性增长)comp1components(1,:);% 成分2: 周期项 (正弦波)comp2components(2,:);% 成分3: 噪声项 (剩余成分)comp3components(3,:);% 重构信号 (叠加趋势周期去除噪声)x_reconstructedcomp1comp2;%% 5. 时频分析 (功率谱密度)fs1;% 采样频率 (归一化)[P1,f1]periodogram(comp1,[],[],fs);% 成分1功率谱[P2,f2]periodogram(comp2,[],[],fs);% 成分2功率谱[P3,f3]periodogram(comp3,[],[],fs);% 成分3功率谱%% 6. 可视化结果figure(Position,[100,100,1200,800]);% 原始信号与重构信号对比subplot(3,2,1);plot(t,x,b,t,x_reconstructed,r--,LineWidth,1.5);legend(原始信号,重构信号 (趋势周期));xlabel(时间 t);ylabel(幅值);title(原始信号与重构信号);grid on;% 分解成分时域波形subplot(3,2,2);plot(t,comp1,r,t,comp2,g,t,comp3,k);legend(成分1 (趋势),成分2 (周期),成分3 (噪声));xlabel(时间 t);ylabel(幅值);title(SSA分解成分 (时域));grid on;% 奇异值贡献率subplot(3,2,3);contributionsigma.^2/sum(sigma.^2)*100;% 方差贡献率 (%)stem(1:length(sigma),contribution,filled);xlabel(奇异值序号);ylabel(贡献率 (%));title(奇异值方差贡献率);grid on;% 成分功率谱 (时频分析)subplot(3,2,4);plot(f2,10*log10(P2/max(P2)),g,LineWidth,1.5);% 周期成分谱hold on;plot(f3,10*log10(P3/max(P3)),k,LineWidth,1.5);% 噪声成分谱xlabel(归一化频率);ylabel(功率谱密度 (dB));title(成分功率谱 (时频分析));legend(成分2 (周期),成分3 (噪声));grid on;% 重构信号误差subplot(3,2,5);errorx-x_reconstructed;plot(t,error,m);xlabel(时间 t);ylabel(误差);title(重构误差 (原始-重构));grid on;% 成分2 (周期项) 与原始周期对比subplot(3,2,6);plot(t,2*sin(2*pi*t/10),b--,t,comp2,g,LineWidth,1.5);legend(原始周期项,SSA提取周期项);xlabel(时间 t);ylabel(幅值);title(周期成分对比);grid on;二、关键结果分析1. 分解成分特性成分1趋势项对应最大奇异值σ1时域波形为线性增长与原始趋势一致功率谱低频占优无明显峰值。成分2周期项对应第二大奇异值σ2时域波形为正弦波周期10功率谱在归一化频率 f0.1对应周期10处有显著峰值。成分3噪声项对应第三大奇异值σ3时域波形为随机噪声功率谱平坦白噪声特性。2. 重构效果重构信号叠加成分1趋势和成分2周期去除成分3噪声与原始信号的趋势和周期部分高度吻合。误差重构误差主要集中在噪声部分验证了SSA的去噪能力。3. 奇异值贡献率前3个奇异值的累计贡献率通常超过95%示例中约为98%表明仅需保留少量成分即可重构信号主要特征。参考代码 SSA奇异谱分解用于在时频域分析信号成分重构信号www.youwenfan.com/contentcss/46153.html三、SSA参数选择指南窗口长度 L经验值L≈N/4∼N/2N为序列长度周期信号L略大于周期 T如周期10取 L12趋势信号L取较大值如 LN/2以提高趋势分辨率。保留成分数 m按累计方差贡献率选择如累计贡献率≥95%按时频特性选择保留有明显趋势/周期的成。四、SSA应用场景非平稳信号分解分离趋势、周期、噪声如气象数据、金融时间序列去噪与滤波去除高频噪声保留低频趋势/周期周期检测通过功率谱识别隐藏周期如机械振动信号中的故障频率缺失数据填补利用成分相关性重构缺失值。五、扩展多成分重构与自适应选择若信号含多个周期成分如周期10和周期20可增加窗口长度 L并保留更多成分m4,5,…通过功率谱区分不同频率的周期成分。此外可结合聚类算法如K-means对成分自动分类趋势/周期/噪声实现自适应重构。