numpy.kaiser#

numpy.kaiser(M, beta)[источник]#

Вернуть окно Кайзера.

Окно Кайзера — это сужение, образованное с использованием функции Бесселя.

Параметры:
Mint

Количество точек в выходном окне. Если ноль или меньше, возвращается пустой массив.

betafloat

Параметр формы для окна.

Возвращает:
выходмассив

Окно с максимальным значением, нормализованным до единицы (значение единица появляется только если количество выборок нечётное).

Смотрите также

bartlett, blackman, hamming, hanning

Примечания

Окно Кайзера определяется как

\[w(n) = I_0\left( \beta \sqrt{1-\frac{4n^2}{(M-1)^2}} \right)/I_0(\beta)\]

с

\[\quad -\frac{M-1}{2} \leq n \leq \frac{M-1}{2},\]

где \(I_0\) является модифицированной функцией Бесселя нулевого порядка.

Окно Кайзера названо в честь Джима Кайзера, который обнаружил простое приближение к окну DPSS на основе функций Бесселя. Окно Кайзера является очень хорошим приближением к цифровой пролатной сфероидальной последовательности или окну Слепиана, которое представляет собой преобразование, максимизирующее энергию в главном лепестке окна относительно общей энергии.

Окно Кайзера может аппроксимировать многие другие окна, изменяя параметр beta.

beta

Форма окна

0

Прямоугольный

5

Аналогично Хэммингу

6

Похоже на Хэннинг

8.6

Похож на Blackman

Значение beta, равное 14, вероятно, является хорошей отправной точкой. Обратите внимание, что по мере увеличения beta окно сужается, поэтому количество выборок должно быть достаточно большим, чтобы охватить все более узкий пик, иначе будут возвращены NaN.

Большинство ссылок на окно Кайзера происходят из литературы по обработке сигналов, где оно используется как одна из многих оконных функций для сглаживания значений. Оно также известно как аподизация (что означает «удаление ноги», т.е. сглаживание разрывов в начале и конце дискретизированного сигнала) или сужающая функция.

Ссылки

[1]

J. F. Kaiser, "Цифровые фильтры" - Глава 7 в "Анализ систем с помощью цифрового компьютера", редакторы: F.F. Kuo и J.F. Kaiser, стр. 218-285. John Wiley and Sons, Нью-Йорк, (1966).

[2]

E.R. Kanasewich, «Time Sequence Analysis in Geophysics», The University of Alberta Press, 1975, pp. 177-178.

[3]

Википедия, "Оконная функция", https://en.wikipedia.org/wiki/Window_function

Примеры

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> np.kaiser(12, 14)
 array([7.72686684e-06, 3.46009194e-03, 4.65200189e-02, # may vary
        2.29737120e-01, 5.99885316e-01, 9.45674898e-01,
        9.45674898e-01, 5.99885316e-01, 2.29737120e-01,
        4.65200189e-02, 3.46009194e-03, 7.72686684e-06])

Построить график окна и частотной характеристики.

import matplotlib.pyplot as plt
from numpy.fft import fft, fftshift
window = np.kaiser(51, 14)
plt.plot(window)
plt.title("Kaiser window")
plt.ylabel("Amplitude")
plt.xlabel("Sample")
plt.show()
../../_images/numpy-kaiser-1_00_00.png
plt.figure()
A = fft(window, 2048) / 25.5
mag = np.abs(fftshift(A))
freq = np.linspace(-0.5, 0.5, len(A))
response = 20 * np.log10(mag)
response = np.clip(response, -100, 100)
plt.plot(freq, response)
plt.title("Frequency response of Kaiser window")
plt.ylabel("Magnitude [dB]")
plt.xlabel("Normalized frequency [cycles per sample]")
plt.axis('tight')
plt.show()
../../_images/numpy-kaiser-1_01_00.png