Я никогда не использовал ни один из этих кодов, также не совсем уверен в вашем вопросе!Но, может быть, эта информация поможет вам приблизиться к ответу на ваш вопрос:
Коэффициенты Добеши Wiki
До этого,Я думаю, что ваш входной вектор (сигнал) может быть слишком мал, чтобы сделать вычисления вейвлетов, верно?Не уверен, хотя!Возможно, попробуйте что-нибудь в 1x128
размере.
Возможно, Java-код это быстрое вейвлет-преобразование.Догадываясь на основе следующих методов:
Код
/**
Forward Daubechies D4 transform
*/
public void daubTrans( double s[] )
{
final int N = s.length;
int n;
for (n = N; n >= 4; n >>= 1) {
transform( s, n );
}
}
/**
Inverse Daubechies D4 transform
*/
public void invDaubTrans( double coef[])
{
final int N = coef.length;
int n;
for (n = 4; n <= N; n <<= 1) {
invTransform( coef, n );
}
}
Исходя из вышеописанных методов, кажется, что это будет "Быстрое вейвлет-преобразование", которое я такжеНе очень уверены в своих расчетах, вы можете заглянуть в эту ссылку .
В вейвлет-преобразованиях существует так много так называемых «терминов», что лучше всего изучить их математику и выяснить, каким может быть точный метод (например, дискретное вейвлет-преобразование).Непрерывное вейвлет-преобразование, дискретное с пакетной декомпозицией.Каждая библиотека имеет некоторые термины и допущения и производит различные вычисления.Вы могли бы print
посмотреть, если бы вы сначала получили что-нибудь близкое к D4 Wavelet = {−0.1830127, −0.3169873, 1.1830127, −0.6830127};
для DB4.Или вы можете провести другое тестирование, чтобы проверить правильность расчетов.
Методы разложения в вейвлетах
Похоже, cA
и cD
являются c коэффициентами " A pproximated" и " D соответствует "сигналам, разложенным дискретным вейвлет-преобразованием.Однако я не уверен, до скольких слоев вы могли разложить ваш входной вектор.
Существует два хорошо известных способа разложения сигнала в вейвлете, один из которых «пакет» (который разбивает сигналы как «приближения», так и «детализации», поэтому вы получите * 1059).* вспомогательные сигналы для разложения вашего исходного сигнала на 4 слоя).
Другой метод разложения разделяет низкочастотную часть сигналов.Итак, вам может потребоваться узнать о вашем уровне разложения, что ваш вектор разлагается.
Кроме того, если вы пишете свой собственный код, вы можете разложить его по своему желанию.
Простые ключи для понимания вейвлета
Сдвиг (время) и масштаб (частота)
Есть одна простая вещь, если вы понимаете, то вейвлетстановится намного проще.Во-первых, как вы знаете, вейвлет - это частотно-временной метод.Однако вместо отображения времени в зависимости от частоты вы делаете время в зависимости от масштаба, где масштаб является «обратным» по отношению к частоте.
Дочерние функции вейвлета, такие как DB4
Преобразование вейвлета отображает функцию вейвлета - такую как DB4 - на весь ваш исходный сигнал, и таким образом он будет вычислять эти числачто вы распечатали, возможно.Одна вещь, которую стоит рассмотреть, - это найти базовую функцию DB4, которая бы «выглядела» как ваш оригинальный сигнал.Как вы это делаете?
По сути, вы выбираете базовую функцию DB4, а затем вейвлет-преобразование создает несколько форм этой базовой функции (например, представьте, что вы называете их DB4-0, DB4-2, DB4-3)., DB4-4, ..., DB4-15).Эти дочерние элементы создаются на основе:
(a) Сдвиг (в цикле for
путем увеличения времени, перемещения дочерней функции, а затем вычисления коэффициентов), смещения очевидно имеет отношение к времени .
(b) Масштабирование (означает «растяжение» вейвлет-функции по вертикали или по горизонтали, которое изменит частотный характер базовой функции, а затем снова сдвинет ее во времени), чтообратная связь с частотой, что означает, что более высокая шкала, более низкие частоты, и наоборот.
Следовательно, это зависит от того, сколько дочерних функций вам может понадобиться, основываясь на разложениях (под-сигналах).Если у вас есть 16 суб-сигналов (4 уровня декомпозиции с пакетным методом), то у вас будет 16 из этих «дочерних» функций, отображающих весь ваш сигнал.И вот как вычисляются векторы коэффициентов.Затем вы можете выбросить эти ненужные суб-сигналы и продолжать фокусироваться на тех суб-сигналах (частотах), которые могут вас заинтересовать. Дело в том, что вейвлет резервирует (поддерживает) информацию о времени, в отличие от Фурье .
Нормальное разложение
Кроме того, так как вы хороший программист, я уверен, что вы можете быстро взломать код, и я не думаю, что вы здесь ничего не упустили.Вы можете просто пройтись по их методам и прочитать несколько страниц википедии, и вы, вероятно, были бы там, если хотите.
Если у вас могут быть действительно интересные вопросы о деталях, вы можете попробовать DSP SE.Там так много экспертов по сигналам.Извини за это!Написал это слишком быстро, тоже не очень хороший писатель / объяснитель, позже, надеюсь, другие отредактируют и предоставят правильный ответ.Не совсем эксперт.
Короче говоря, вы ни в чем не упускаете, хорошего метода, удачи и наилучших пожеланий!