Заполнение нулями не обязательно, но рекомендуется. Обычно вы дополняете свой сигнал следующей степенью двойки, большей, чем длина вашего сигнала. Вы можете сделать это либо вручную, например:
newSignal = [zeros(1,floor(n)), oldSignal, zeros(1,ceil(n))];
где n
— длина требуемого заполнения нулями, деленная на два:
n = ( 2^nextpow2(length(oldSignal)) - length(oldSignal) ) / 2;
Это не обязательно должно быть с обеих сторон; его можно дополнить справа. Это также не должно быть заполнением нулями; он может быть симметричным, повторяющимся и т. д., что лучше для уменьшения краевых эффектов. Вы можете узнать больше о заполнении сигналов, например. в этой статье, в разделе 2.
Вы должны быть осторожны с нулевым (и любым другим) отступом, он также вносит артефакты, например, нулевой отступ снижает мощность на краях.
Нулевое заполнение не имеет ничего общего с COI. Вы должны быть в состоянии вычислить его даже без заполнения нулями.
Использование MATLAB conofinf
очень удобно, но, поскольку вы не можете этого сделать, вы можете попробовать вычислить COI самостоятельно, используя формулу в справке MATLAB:
|t-u| <= sB
где u — параметр перевода вейвлета, s — параметр масштаба, а [-B,+B] — эффективная поддержка вейвлета.
В основном это означает, что на краях вашего вейвлет-преобразования (в моменты времени t1 и tend) COI равен половине длины вейвлета на каждом масштабе. Вы вычисляете его для каждой шкалы и строите по точкам.
Последнее замечание: независимо от того, какой тип заполнения вы выберете, вы не должны забывать обрезать его в результирующем вейвлет-преобразовании (после расчета COI).
Надеюсь, поможет.
person
mfedoten
schedule
27.08.2015