信号与小波的卷积

信息处理 matlab 小波 卷积 过滤
2021-12-31 21:07:27

我知道复小波变换由

f(x)ψs,u(x)dx
给出,其中 f是信号,ψs,u(x)=1sψ(xus) 是小波。 表示复共轭运算。

如果我有小波 ψs,u,它psi在 MATLAB 中表示为,并且我想计算上面的积分。我应该使用哪个命令在 MATLAB 中进行计算?

conv(f,psi)还是conv(f,conj(psi))

因为conj计算向量的复共轭?提前致谢!

3个回答

共轭是将卷积定义为内积运算的一部分。
所以你正确地编写了操作。

通常人们使用“真实”小波,因此不需要。

无论如何,定义是一个内积(将函数投影到小波的基础上),它需要共轭操作。

复共轭应用于频域,对应于在时域中向后翻转信号。当您有 $$f(x)\psi^*_{s,u}(x)$$ 时,这是频域中的乘法。乘法变成时域中的卷积。所以你应该使用

f(x)ψs,u(x)
this is a multiplication in the frequency domain. Multiplication becomes convolution in the time domain. So you should use conv(f,fliplr(psi))

至少使用 MATLAB,您似乎可以简单地运行conv(signal, wavelet),它会为您“翻转”小波 - 比较xcorr()时间翻转是卷积定义的一部分(如先前的回复所述),因此在 MATLAB 的函数中实现。

所以对于时间上的实信号和小波,conv(signal, fliplr(wavelet)) == xcorr(signal, wavelet)然而,对于实信号和复小波,conv(signal, conj(fliplr(cwavelet))) == xcorr(signal, cwavelet)通过以这种方式比较卷积和互相关,翻转和复共轭的参与变得明显。

MATLAB自己这么说(循环卷积)cconv()