Непрерывное вейвлет-преобразование с помощью Scipy.signal (Python): что такое параметр «widths» в функции cwt ()? (Время-частота)

Я пытаюсь нарисовать частотно-временной сигнал с дискретным временным сигналом (шаг выборки = 0,001 с). Я использую Python и библиотеку Scipy.signal. Я использую функцию cwt (data, wavelet, widths), которая возвращает матрицу, чтобы сделать непрерывное вейвлет-преобразование со сложным морлет-вейвлетом (или вейвлетом Габора). К сожалению, документации по этому использованию не так много. Лучшее, что я нашел:этот для Matlab (я пытаюсь найти тот же результат масштаба времени), но у меня, естественно, нет доступа к тем же функциям, - иэтот которые объясняют, что такое непрерывное вейвлет-преобразование, без подробностей параметров вейвлета.

Первый шаг: Получить сигнал трансляции масштаба. Сомневаюсь, что я непосредственно связал массив widths с массивом возможных разных масштабов. Потому что я не понимаю, что такое ширина параметра, если он не масштабируется. Возможно, вы скажете мне: «Это ширина вашего текущего вейвлета»! Но даже сейчас я не уверен, как ширина ссылки с масштабом ... В документации Morlet на Scipy, похоже, что ссылка может быть: "s: Коэффициент масштабирования, с окном от -s * 2 * pi до + s * 2 * pi ", так что я подумал, что width = 4 * pi * scale (width = width of the window). Но когда я рисую вейвлеты, увеличивается масштаб, больше уменьшается визуальная ширина вейвлета ...

Моя вторая проблема - найти и нарисовать эквивалент по частоте. В литературе я нахожу эту формулу: Fa = Fc / (s * delta), где Fa - конечная частота, Fc - центральная частота вейвлета в Гц, s шкала и дельта периода выборки. Итак, хорошо для масштаба (если я найду связь с шириной) и дельты (= 0,001 сек), но это сложнее с центральной частотой вейвлета. В документации scipy я нахожу, что: «Основная частота этого вейвлета [морлета вейвлет] в Гц задается как f = 2 * s * w * r / M, где r - частота дискретизации [s здесь здесь Коэффициент масштабирования, оконный от -s * 2 * пи до + s * 2 * пи. По умолчанию 1; ш ширина; и M длина вейвлета]. Я думаю, что это центральная частота, не так ли?

Спасибо

Вот мой исправленный код для cwt ():

def MyCWT(data, wavelet, scales):

output = zeros([len(scales), len(data)], dtype=complex)

for ind, scale in enumerate(scales):

    window = scale*4*pi*10#Number of points to define correctly the wavelet
    waveletLength = min(window, len(data))#Number of points of the wavelet
    wavelet_data = wavelet(waveletLength, s=scale)#Need to precise w parameter???

    #To see the wavelets:
    plot(wavelet_data)
    xlabel('time (10^-3 sec)')
    ylabel('amplitude')
    title('Morlet Wavelet for scale='+str(scale)+'\nwidth='+str(window))
    show()

    #Concolution to calculate the current line for the current scale:
    z = convolve(data, wavelet_data, mode='same')

    i = 0
    for complexVal in z:
        output[ind][i] = complex(complexVal.real, complexVal.imag)         
        i+=1

return output

Ответы на вопрос(1)

Ваш ответ на вопрос