Spec-Zone.ru › NumPy 1.11

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

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

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

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

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

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

Ссылки

[R34] Дж. Ф. Кайзер, «Цифровые фильтры» - гл. 7 в «Системный анализ с помощью цифрового компьютера», Редакторы: Ф. Ф. Куо и Дж. Ф. Кайзер, с. 218-285. John Wiley and Sons, Нью-Йорк, (1966).
[R35] Э.Р. Канасевич, «Анализ временных последовательностей в геофизике», Издательство Университета Альберты, 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–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.kaiser.html

Spec-Zone.ru

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