个人主页:研学社的博客
欢迎来到本博客️️
博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
️座右铭:行百里者,半于九十。
本文目录如下:
目录
2.1 Wilcoxon秩和检验和Brown-Forsythe检验
1 概述
文献来源:
摘要:本文提出了一种新的信号广义平稳性估计方法。给出了过程和信号平稳性概念的背景信息。讨论了信号平稳性估计的问题以及对现有平稳性检验的批评。在此基础上,提出了一种广义平稳性估计方法,包括信号的均值平稳性、方差平稳性和自协方差平稳性估计。最后,对几个有代表性的信号进行了测试,结果清楚地表明了所提出的测试方法的一致性。它是在Matlab环境中实现的,可以免费下载和使用。关键词:信号,平稳性,估计,测试,方法
原文摘要:
Abstract: - In the paper, a novel estimation method is proposed, concerning the wide-sense stationarity test of the signals. Background information is given about the concept of stationarity of the processes and signals. The problem of the signal stationarity estimation is addressed along with criticism of the available stationarity tests. Further, a new wide-sense stationarity estimation method is described, involving estimation of the mean-, variance- and autocovariance- stationarity of a signal. Finally, a few representative signals are tested and the results clearly indicate the consistence of the proposed test method. It is implemented in Matlab-environment and can be download and use for free.
Keywords: - signal, stationarity, estimation, test, method
本文有两个部分,用于使用在两种变体中开发的新方法对信号(例如时间序列)进行广义平稳性 (WSS) 估计。第一个变体使用推理统计方法(例如,它实现了Wilcoxon秩和检验和Brown-Forsythe检验),而第二个变体纯粹是经验性的 - 它通过比较其时间局部汇总统计(平均值,方差,协方差)来“按原样”估计信号的WSS,而不对底层过程或总体进行任何假设。
这些函数提供四个布尔标志的计算:
1)总体广义平稳性,即关于均值、方差和自协方差的同时平稳性;
2)关于均值的平稳性;
3)关于方差的平稳性(因此关于RMS值);
4)自协方差(以及自相关和PSD)的时间不变性。
为了阐明函数的用法,给出了一些示例。为方便起见,输入和输出参数在每个函数的开头给出。
2 运行结果
2.1 Wilcoxon秩和检验和Brown-Forsythe检验
2.2 估计信号的WSS
第二部分主函数代码:
clear, clc, close all
%% generate test signals
% sampling frequency
fs = 44100;
% TS1
% sine-wave signal (stationary signal)
t1 = 0:1/fs:5;
x1 = 1.0*sin(2*pi*440*t1);
% TS2
% white noise (stationary signal)
x2 = randn(1, 5*fs);
% TS3
% violet noise (stationary signal)
x3 = violetnoise(5*fs);
% TS4
% linear chirp signal (non-stationary signal)
t4 = 0:1/fs:5;
x4 = chirp(t4, 1000, 5, 10000);
% TS5a
% sequence of sine-waves (non-stationary signal)
t51 = 0:1/fs:1;
t52 = 0:1/fs:4;
x5a1 = 1.0*sin(2*pi*440*t51);
x5a2 = 2.0*sin(2*pi*440*t52);
x5a = [x5a1 x5a2];
% TS5b
% sequence of sine-waves (non-stationary signal)
x5b1 = 1.0*sin(2*pi*440*t51);
x5b2 = 1.0*sin(2*pi*1000*t52);
x5b = [x5b1 x5b2];
% TS6
% red noise (non-stationary signal)
x6 = rednoise(5*fs);
% TS7
% human speech (non-stationary signal)
x7 = audioread('DR2_FRAM1_SI522.wav');
% TS8
% sound (non-stationary signal)
x8 = load('handel.mat');
x8 = x8.y;
%% perform WSS test
gamma = 0.95;
[~, mean_stat_flag1, var_stat_flag1, covar_stat_flag1] = isstationary(x1, gamma);
[~, mean_stat_flag2, var_stat_flag2, covar_stat_flag2] = isstationary(x2, gamma);
[~, mean_stat_flag3, var_stat_flag3, covar_stat_flag3] = isstationary(x3, gamma);
[~, mean_stat_flag4, var_stat_flag4, covar_stat_flag4] = isstationary(x4, gamma);
[~, mean_stat_flag5a, var_stat_flag5a, covar_stat_flag5a] = isstationary(x5a, gamma);
[~, mean_stat_flag5b, var_stat_flag5b, covar_stat_flag5b] = isstationary(x5b, gamma);
[~, mean_stat_flag6, var_stat_flag6, covar_stat_flag6] = isstationary(x6, gamma);
[~, mean_stat_flag7, var_stat_flag7, covar_stat_flag7] = isstationary(x7, gamma);
[~, mean_stat_flag8, var_stat_flag8, covar_stat_flag8] = isstationary(x8, gamma);
%% visualize the results
% Note: A novel visual representation of the signal stationarity estimation
% is proposed for better perception named "Statinary semaphore". All three
% Boolean flags must be rised in order a given signal to be estimated as
% wide-sense stationary i.e, stationary about its mean, variance and
% autocovariance.
figure(1)
subplot(3, 3, 1)
matvisual([mean_stat_flag1; var_stat_flag1; covar_stat_flag1], 'annotation')
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
title(['Stationarity' newline 'semaphore for TS1'], 'FontSize', 12)
xlabel([])
ylabel([])
set(gca, 'XTickLabel', [])
set(gca, 'YTickLabel', {'Mean', 'Variance', 'Autocovariance'})
colormap([0.75, 0, 0; 0, 0.75, 0])
set(gcf, 'Units', 'Normalized')
set(gcf, 'Position', [0.325, 0.1, 0.35, 0.8])
subplot(3, 3, 2)
matvisual([mean_stat_flag2; var_stat_flag2; covar_stat_flag2], 'annotation')
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
title(['Stationarity' newline 'semaphore for TS2'], 'FontSize', 12)
xlabel([])
ylabel([])
set(gca, 'XTickLabel', [])
set(gca, 'YTickLabel', {'Mean', 'Variance', 'Autocovariance'})
colormap([0.75, 0, 0; 0, 0.75, 0])
set(gcf, 'Units', 'Normalized')
set(gcf, 'Position', [0.325, 0.1, 0.35, 0.8])
subplot(3, 3, 3)
matvisual([mean_stat_flag3; var_stat_flag3; covar_stat_flag3], 'annotation')
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
title(['Stationarity' newline 'semaphore for TS3'], 'FontSize', 12)
xlabel([])
ylabel([])
set(gca, 'XTickLabel', [])
set(gca, 'YTickLabel', {'Mean', 'Variance', 'Autocovariance'})
colormap([0.75, 0, 0; 0, 0.75, 0])
set(gcf, 'Units', 'Normalized')
set(gcf, 'Position', [0.325, 0.1, 0.35, 0.8])
subplot(3, 3, 4)
matvisual([mean_stat_flag4; var_stat_flag4; covar_stat_flag4], 'annotation')
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
title(['Stationarity' newline 'semaphore for TS4'], 'FontSize', 12)
xlabel([])
ylabel([])
set(gca, 'XTickLabel', [])
set(gca, 'YTickLabel', {'Mean', 'Variance', 'Autocovariance'})
colormap([0.75, 0, 0; 0, 0.75, 0])
set(gcf, 'Units', 'Normalized')
set(gcf, 'Position', [0.325, 0.1, 0.35, 0.8])
subplot(3, 3, 5)
matvisual([mean_stat_flag5a; var_stat_flag5a; covar_stat_flag5a], 'annotation')
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
title(['Stationarity' newline 'semaphore for TS5a'], 'FontSize', 12)
xlabel([])
ylabel([])
set(gca, 'XTickLabel', [])
set(gca, 'YTickLabel', {'Mean', 'Variance', 'Autocovariance'})
colormap([0.75, 0, 0; 0, 0.75, 0])
set(gcf, 'Units', 'Normalized')
set(gcf, 'Position', [0.325, 0.1, 0.35, 0.8])
subplot(3, 3, 6)
matvisual([mean_stat_flag5b; var_stat_flag5b; covar_stat_flag5b], 'annotation')
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
title(['Stationarity' newline 'semaphore for TS5b'], 'FontSize', 12)
xlabel([])
ylabel([])
set(gca, 'XTickLabel', [])
set(gca, 'YTickLabel', {'Mean', 'Variance', 'Autocovariance'})
colormap([0.75, 0, 0; 0, 0.75, 0])
set(gcf, 'Units', 'Normalized')
set(gcf, 'Position', [0.325, 0.1, 0.35, 0.8])
subplot(3, 3, 7)
matvisual([mean_stat_flag6; var_stat_flag6; covar_stat_flag6], 'annotation')
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
title(['Stationarity' newline 'semaphore for TS6'], 'FontSize', 12)
xlabel([])
ylabel([])
set(gca, 'XTickLabel', [])
set(gca, 'YTickLabel', {'Mean', 'Variance', 'Autocovariance'})
colormap([0.75, 0, 0; 0, 0.75, 0])
set(gcf, 'Units', 'Normalized')
set(gcf, 'Position', [0.325, 0.1, 0.35, 0.8])
subplot(3, 3, 8)
matvisual([mean_stat_flag7; var_stat_flag7; covar_stat_flag7], 'annotation')
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
title(['Stationarity' newline 'semaphore for TS7'], 'FontSize', 12)
xlabel([])
ylabel([])
set(gca, 'XTickLabel', [])
set(gca, 'YTickLabel', {'Mean', 'Variance', 'Autocovariance'})
colormap([0.75, 0, 0; 0, 0.75, 0])
set(gcf, 'Units', 'Normalized')
set(gcf, 'Position', [0.325, 0.1, 0.35, 0.8])
subplot(3, 3, 9)
matvisual([mean_stat_flag8; var_stat_flag8; covar_stat_flag8], 'annotation')
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
title(['Stationarity' newline 'semaphore for TS8'], 'FontSize', 12)
xlabel([])
ylabel([])
set(gca, 'XTickLabel', [])
set(gca, 'YTickLabel', {'Mean', 'Variance', 'Autocovariance'})
colormap([0.75, 0, 0; 0, 0.75, 0])
set(gcf, 'Units', 'Normalized')
set(gcf, 'Position', [0.325, 0.1, 0.35, 0.8])
3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1] H. Zhivomirov, I. Nedelchev. A Method for Signal Stationarity Estimation. Romanian Journal of Acoustics and Vibration, ISSN: 1584-7284, Vol. XVII, No. 2, pp. 149-155, 2020.
文章评论