matlab中的Wavedec返回长度,其总和大于信号的原始长度

时间:2014-11-03 11:01:27

标签: arrays matlab wavelet wavelet-transform

我正在对信号进行多级小波分解' price1'使用

 [c1, l] = wavedec(price1, 3, 'db4');

price1的大小是:

size(price1) =

   240     1

获得的小波分解的大小,即l的长度为:

l =

    36
    36
    65
   123
   240

我是初学者,我认为大小应该是:

l =

    30
    30
    60
   120
   240

我无法理解为什么尺寸不是信号尺寸的一半?这是内部发生的某种填充吗?而且我希望它的大小像[30; 30; 60; 120; 240]。我能做些什么来实现它?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

你没有考虑母小波的长度,它会改变卷积后的信号长度。

db4的长度为8

 a = randi(10,[240 1]);
 [c1, l] = wavedec(a, 3, 'db4');

l =
36
36
65
123
240

但是例如db8的长度为16

[c1, l] = wavedec(a, 3, 'db8');

l =
43
43
71
127
240

您可以访问这样的小波函数,

[LoD,HiD,LoR,HiR] = wfilters('db8');