Matlab DWT H级

信息处理 matlab 小波
2022-02-16 12:25:41

我正在尝试实现在论文中找到的一些水印算法*。这是论文的一行:

对所有重新编号的段执行 H 级 DWT。

然后在模拟部分作者解释了用于实验的小波。

DWT变换采用普通小波“Daubechies-1”,H=3。

我只是不明白 H 是什么意思,如何在 matlab DWT 函数中输入 H=3?

我的实际代码是:

[cA,cD] = dwt(audio,'db1');

有人能帮我吗?

*Ji, Y. & Kim, J. 基于 DWT-DCT 的量化音频水印算法。多媒体、计算机图形学和广播 339–344 (2011)

1个回答

直观地说,H 级别定义了您需要对信号执行多少级别的 DWT,在这种情况下您需要对您的信号执行第 3 级“Daubechies-1”小波变换,这真正意味着在您的信号上应用 DWT 3次,

这就是你应该这样做的方式,

在您的信号上应用 DWT 以将其分解为Approximations(低频)和Details(高频)。这是 1 级分解,根据您的要求,我们需要执行 3 级 DWT,因此我们将选择a1上述分解信号的近似值(比如说),然后再次应用 DWT 将其分解为更深的近似值(比如说a2)和细节(d2), 现在再做一次 3 级。

这是我使用 Matlab Wavelet 工具箱完成的简单演示,

在此处输入图像描述

S 是原始信号(noissin在这种情况下;它是 matlab 中的内置波形),它被分解,a1然后d1我们再次选择a1并在该信号上应用 DWT 以获得a2d2a2进一步分解为a3d3

这是我之前所说的树视图。

在此处输入图像描述

为了更好地理解小波变换的工作原理,wavemenu在 matlab 命令窗口中输入,然后转到 Wavelet 1-D 选项,加载任何内置信号并播放。

内置信号可以在Matlab Directory-> toolbox-> wavelet->wavedemo文件夹中找到。

为了在 matlab 中执行第 3 级分解,我宁愿而wavedec不是dwt因为语法更容易且解释清楚,

这是语法wavedec

[C,L] = wavedec(X,N,'wname')

在哪里,

X = 你要分解的信号。

N = 级别;在你的情况下,它应该是 3。

wname = 要使用的小波;在你的情况下应该是'db1'

% L is the matrix that store length of each decomposed signal
% This is how it will be stored in Matrix of [C,L]
%----------------------------------
% C: |cA3|cD3|cD2|cD1|
%----------------------------------
%----------------------------------
% L: | (length cA3) | (length of cD3) | (length of cD2) | (length of cD1) |
%----------------------------------