Spec-Zone.ru › NumPy 1.12

numpy.kaiser

numpy.kaiser(M, beta) [source]

Возвращает окно Кайзера.

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

Параметры:

M : int

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

beta : float

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

Возвращает:

out : массив

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

См. также

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 — модифицированная функция Бесселя нулевого порядка.

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

Окно Кайзера может приближать многие другие окна путём изменения параметра бета.

beta Форма окна
0 Прямоугольное
5 Аналогично Хэмминга
6 Аналогично Ханнинга
8.6 Аналогично Блэкмана

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

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

Ссылки

[R34] J. F. Kaiser, “Цифровые фильтры” — гл. 7 в «Системный анализ с помощью цифрового компьютера», редакторы: F.F. Kuo и J.F. Kaiser, стр. 218-285. John Wiley and Sons, Нью-Йорк, (1966).
[R35] E.R. Kanasewich, «Анализ временных последовательностей в геофизике», Пресса Университета Альберты, 1975, стр. 177-178.
[R36] Википедия, «Функция окна», http://en.wikipedia.org/wiki/Window_function

Примеры

>>> np.kaiser(12, 14)
array([  7.72686684e-06,   3.46009194e-03,   4.65200189e-02,
         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])

Постройте окно и частотную характеристику:

>>> from numpy.fft import fft, fftshift
>>> window = np.kaiser(51, 14)
>>> plt.plot(window)
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.title("Kaiser window")
<matplotlib.text.Text object at 0x...>
>>> plt.ylabel("Amplitude")
<matplotlib.text.Text object at 0x...>
>>> plt.xlabel("Sample")
<matplotlib.text.Text object at 0x...>
>>> plt.show()
>>> plt.figure()
<matplotlib.figure.Figure object at 0x...>
>>> 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)
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.title("Frequency response of Kaiser window")
<matplotlib.text.Text object at 0x...>
>>> plt.ylabel("Magnitude [dB]")
<matplotlib.text.Text object at 0x...>
>>> plt.xlabel("Normalized frequency [cycles per sample]")
<matplotlib.text.Text object at 0x...>
>>> plt.axis('tight')
(-0.5, 0.5, -100.0, ...)
>>> plt.show()

© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.kaiser.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API