Странные значения для аппроксимирующих коэффициентов при вейвлет-разложении в Matlab

Я пытаюсь получить вейвлетное разложение arcsin(x), используя, скажем, вейвлеты Хаара. При использовании обеих функций Matlab dwt или wavedec я получаю странные значения для аппроксимирующих коэффициентов. Поскольку применение низкочастотного фильтра вейвлетов Хаара равнозначно выполнению полусуммы, а максимум арксинуса равен пи/2, я предполагаю, что аппроксимирующие коэффициенты не могут превзойти пи/2, но этот код:

x = linspace(0,1,128);
y = asin(x);
[cA, cD] = dwt(y, 'haar'); %//cA for approximating coefficients

возвращает значения, превышающие пи/2 в cA. Это почему?


person Dmitry    schedule 27.12.2013    source источник


Ответы (1)


Я полагаю, что вас смущает то, что вы думаете, что фильтр Хаара просто усредняет два соседних числа при вычислении коэффициентов аппроксимации 1 уровня. Из-за функции сохранения энергии функции масштабирования каждая пара чисел делится на sqrt(2) вместо 2. Фактически, вы можете увидеть, что делает конкретный вейвлет-фильтр, введя следующую команду (для фильтра Хаара в Это дело):

[F1,F2] = wfilters('haar','d')
F1 =
    0.7071    0.7071
F2 =
   -0.7071    0.7071

Затем вы можете проверить правильность того, что вы получили выше, построив простой цикл:

CA_compare = zeros(1,64);
for k = 1 : 64
CA_compare(k) = dot( y(2*k-1 : 2*k), F1 );
end

Затем вы увидите, что «CA_compare» содержит точно такие же значения, как и ваш «cA».

Надеюсь это поможет.

person Igor    schedule 30.03.2014