numpy.kaiser
-
numpy.kaiser(M, beta)[source] -
Возвращает окно Кайзера.
Окно Кайзера — это обрезка, сформированная с использованием функции Бесселя.
Параметры: M : int
Число точек в выходном окне. Если равно нулю или меньше, возвращается пустой массив.
beta : float
Параметр формы окна.
Возвращает: out : массив
Окно, с максимальным значением, нормализованным к единице (значение единицы появляется только если число образцов нечетное).
Примечания
Окно Кайзера определяется как

где

где
— это модифицированная функция Бесселя нулевого порядка.Окно Кайзера названо в честь Джима Кайзера, который открыл простое приближение окна DPSS, основанное на функциях Бесселя. Окно Кайзера — это очень хорошее приближение к цифровому пролатным сфероидальному ряду или окну Слепиана, которое является преобразованием, максимизирующим энергию в главном лепестке окна по отношению к полной энергии.
Окно Кайзера может аппроксимировать многие другие окна, изменяя параметр beta.
beta Форма окна 0 Прямоугольное 5 Похоже на окно Хэмминга 6 Похоже на окно Ханнинга 8.6 Похоже на окно Блэкмана Значение beta 14, вероятно, является хорошей отправной точкой. Обратите внимание, что при увеличении beta окно сужается, и число образцов должно быть достаточно большим для выборки всё более узкой вершины, иначе будут возвращаться NaN.
Большинство ссылок на окно Кайзера взяты из литературы по обработке сигналов, где оно используется как одна из многих функций окон для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление стопы», т.е. сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезания.
Список литературы
[R37] J. F. Kaiser, «Цифровые фильтры» — гл. 7 в «Системный анализ с помощью цифрового компьютера», Редакторы: F.F. Kuo и J.F. Kaiser, с. 218-285. John Wiley and Sons, Нью-Йорк, (1966). [R38] E.R. Kanasewich, «Анализ временных последовательностей в геофизике», Университет Альберты, 1975, стр. 177-178. [R39] Википедия, «Функция окна», 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.13.0/reference/generated/numpy.kaiser.html