2014-11-03 3 views
1

я делал многоуровневую разложение вейвлет для сигнала «price1» с помощьюWavedec в MATLAB возвращает длину с суммой большей, чем первоначальная длина сигнала

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

Размер price1 был:

size(price1) = 

    240  1 

и размер вейвлет разложения полученного т.е. длина л:

l = 

    36 
    36 
    65 
    123 
    240 

Я новичок, и я думаю, размер должен быть:

l = 

    30 
    30 
    60 
    120 
    240 

Я не могу понять, почему размер не равен половине размера сигнала? Это что-то вроде заполнения, которое происходит внутри? И я хотел бы, чтобы размер был наполовину наполовину [30; 30; 60; 120; 240]. Что я могу сделать для этого?

Спасибо за вашу помощь :)

ответ

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');