MATLAB环境下一维时间序列信号的离散正交Stockwell变换和离散余弦Stockwell变换。
Stockwell 变换是一种对短时傅立叶变换STFT和小波变换WT扩展的时频分析方法。Stockwell 变换将傅里叶变换的绝对相位保持特性与WT的频率相关分析和多分辨率特性结合起来。离散正交Stockwell变换是Stockwell 变换的一种非冗余且高效的形式,它可以解决Stockwell变换的许多存储和计算问题。离散正交Stockwell变换通过将Stockwell变换的输出划分为N个区域来减少Stockwell变换的冗余,每个区域由一个系数表示。离散正交Stockwell变换由一组正交基函数表示,这些函数对信号的傅立叶频谱进行定位并保留Stockwell变换的有利相位属性。离散正交Stockwell变换的主要优点是计算效率高、内存要求低、对测量噪声的抗干扰能力强、对故障电压和电流等非平稳信号的分析能力强。
离散余弦变换作为一种实数变换,更加适用于压缩和滤波,因此被广泛应用于图像/时频信号处理领域中,而这主要得益于其能量集中特性:对大多数无明显颗粒噪音的图像来说,进行离散余弦变换后的频谱,代表低频成分的左上角部分高亮,灰度呈缓慢变化,代表高频成分的右下角部分暗淡,灰度呈阶跃变化,换言之在时域中散乱分布的能量在频域中集中到左上角,低频部分占约85%的能量。因为在大多数情况下,图像的频域表示更为稀疏,或者说能量更集中。修改Stockwell变换中离散傅里叶变换部分,代之以离散余弦变换,即为离散余弦Stockwell变换。
该代码主要为一维时间序列的离散正交Stockwell变换和离散余弦Stockwell变换,程序运行环境为MATLAB R2018A,部分代码如下:
% 1-dimensional case
ns = 2^10; % number of samples
t = linspace(0,1,ns); % signal of 1s (0 to 1) sampled ns-times
f = linspace(-ns/2,ns/2 -1,ns); % frequencies
in = exp(2 *pi* 1i*(ns/2^2)*t).*((0/8<=t)&(t<1/8))+...
exp(2 *pi* 1i*(ns/2^3)*t).*((1/8<=t)&(t<2/8))+ ...
exp(2 *pi* 1i*(ns/2^4)*t).*((2/8<=t)&(t<3/8))+...
exp(2 *pi* 1i*(ns/2^5)*t).*((3/8<=t)&(t<4/8))+...
exp(2 *pi* 1i*(ns/2^6)*t).*((4/8<=t)&(t<5/8))+...
exp(2 *pi* 1i*(-ns/2^2)*t).*((5/8<=t)&(t<6/8))+ ...
exp(2 *pi* 1i*(-ns/2^3)*t).*((6/8<=t)&(t<7/8))+...
exp(2 *pi* 1i*(-ns/2^4)*t).*((7/8<=t)&(t<8/8));
if (sum(mod(log2(size(in)), 1)) == 0)
else
error('ERROR: STransfomrs works with signal with a 2^k size.')
end
出图如下:
代码一维时间序列的离散正交Stockwell变换和离散余弦Stockwell变换-今日头条 (toutiao.com)
标签:ns,变换,正交,离散,Stockwell,余弦 From: https://blog.csdn.net/weixin_39402231/article/details/136719335