一维小波去噪函数 wden - MATLAB
一维小波去噪函数 wden
function [xd,cxd,lxd,thrs] = wden(in1,in2,in3,in4,in5,in6,in7)
该函数使用小波阈值来对一维信号进行去噪。
语法
XD = WDEN(X,TPTR,SORH,SCAL,N,WNAME) 返回去噪后的信号 XD,它是通过对输入信号 X 的小波系数进行阈值处理得到的。
输入参数
X: 要去噪的输入信号。TPTR: 阈值选择规则,以字符串形式指定。支持的选项包括:'modwtsqtwolog':使用最大重叠离散小波变换 (MODWT) 对信号进行去噪,并使用 Donoho 和 Johnstone 的通用阈值和水平依赖阈值。'rigrsure':使用 Stein 无偏风险原则。'heursure':Stein 无偏风险的启发式变体。'sqtwolog':使用 Donoho 和 Johnstone 的通用阈值,并使用 DWT。'minimaxi':使用极小极大阈值。
SORH: 指定软阈值或硬阈值,分别用's'或'h'表示。SCAL: 定义阈值重标类型:'one':不进行重标。'sln':使用基于第一级系数的噪声估计进行重标。'mln':使用水平依赖的噪声估计进行重标。'mln'是 MODWT 去噪唯一支持的选项。
N: 小波变换的级数。WNAME: 小波名称,以字符串形式指定。对于 MODWT 去噪,WNAME必须对应于正交小波。
XD = wden(C,L,TPTR,SORH,SCAL,N,WNAME) 返回通过对 DWT 系数向量 C 和每个级别的 DWT 系数数量 L 进行操作得到的去噪信号。C 和 L 是 WAVEDEC 的输出。在 WAVEDEC 和 WDEN 中必须使用相同的小波。
XD = wden(W,'modwtsqtwolog',SORH,'mln',N,WNAME) 返回通过对 MODWT 变换矩阵 W 进行操作得到的去噪信号。W 是 MODWT 的输出。在 MODWT 和 WDEN 中必须使用相同的小波。
[XD,CXD] = WDEN(...) 返回去噪的小波系数。对于 DWT 去噪...
代码示例
以下代码示例展示了如何使用 wden 函数对信号进行去噪:
% 加载信号
x = load('signal.mat');
% 使用 'modwtsqtwolog' 规则和软阈值对信号进行去噪
xd = wden(x,'modwtsqtwolog','s','mln',4,'db4');
% 绘制原始信号和去噪后的信号
plot(x, 'b', 'linewidth', 2); hold on;
plot(xd, 'r', 'linewidth', 2);
legend('原始信号', '去噪后的信号');
说明
SORH 参数可以设置为 's' 或 'h' 来指定使用软或硬阈值。因此,要使用软阈值,应将 SORH 参数设置为 's',要使用硬阈值,应将 SORH 参数设置为 'h'。
参见
WAVEDECMODWTWTHRESHWDENCMP
版本
该函数在 MATLAB 版本 7.0 及更高版本中可用。
原文地址: https://www.cveoy.top/t/topic/n92T 著作权归作者所有。请勿转载和采集!