numpy.kaiser
-
numpy.kaiser(M, beta)[source] -
Возвращает окно Кайзера.
Окно Кайзера — это обрезной фильтр, сформированный с использованием функции Бесселя.
- Параметры
-
-
Mint -
Количество точек в выходном окне. Если ноль или меньше, возвращается пустой массив.
-
betafloat -
Параметр формы окна.
-
- Возвращает
-
-
outarray -
Окно с максимальным значением, нормализованным до единицы (значение единица появляется только в случае нечётного количества выборок).
-
Примечания
Окно Кайзера определяется как
с
где
— модифицированная функция Бесселя нулевого порядка.
Окно Кайзера названо в честь Джима Кайзера, который обнаружил простое приближение окна DPSS, основанное на функциях Бесселя. Окно Кайзера — это очень хорошее приближение к цифровому эллиптическому последовательному коду или окну Слепиана, которое является преобразованием, максимизирующим энергию в основной доле окна по отношению к общей энергии.
Окно Кайзера может приближать многие другие окна путём изменения параметра beta.
beta
Форма окна
0
Прямоугольное
5
Похоже на окно Хэмминга
6
Похоже на окно Ханнинга
8.6
Похоже на окно Блэкмана
Значение beta = 14, вероятно, является хорошей отправной точкой. Обратите внимание, что при увеличении beta окно сужается, поэтому количество выборок должно быть достаточно большим для выборки всё более узкого пика; в противном случае будут возвращены NaN.
Большинство ссылок на окно Кайзера взяты из литературы по обработке сигналов, где оно используется как одна из многих оконных функций для сглаживания значений. Также оно известно как функция аподизации (что означает «удаление ступни», т. е. сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезания.
Ссылки
-
1 -
J. F. Kaiser, “Цифровые фильтры” — гл. 7 в “Системный анализ с помощью цифрового компьютера”, ред.: Ф.Ф. Куо и Дж.Ф. Кайзер, с. 218-285. John Wiley and Sons, Нью-Йорк, (1966).
-
2 -
E.R. Kanasewich, “Анализ временных последовательностей в геофизике”, Издательство Университета Альберты, 1975, с. 177-178.
-
3 -
Википедия, «Функция окна», https://en.wikipedia.org/wiki/Window_function
Примеры
>>> 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])Построение окна и частотной характеристики:
>>> from numpy.fft import fft, fftshift >>> window = np.kaiser(51, 14) >>> plt.plot(window) [<matplotlib.lines.Line2D object at 0x...>] >>> plt.title("Kaiser window") Text(0.5, 1.0, 'Kaiser window') >>> plt.ylabel("Amplitude") Text(0, 0.5, 'Amplitude') >>> plt.xlabel("Sample") Text(0.5, 0, 'Sample') >>> plt.show()>>> plt.figure() <Figure size 640x480 with 0 Axes> >>> 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") Text(0.5, 1.0, 'Frequency response of Kaiser window') >>> plt.ylabel("Magnitude [dB]") Text(0, 0.5, 'Magnitude [dB]') >>> plt.xlabel("Normalized frequency [cycles per sample]") Text(0.5, 0, 'Normalized frequency [cycles per sample]') >>> plt.axis('tight') (-0.5, 0.5, -100.0, ...) # may vary >>> plt.show()
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.kaiser.html