numpy.kaiser
-
numpy.kaiser(M, beta)[source] -
Возвращает окно Кайзера.
Окно Кайзера — это окно, сформированное с использованием функции Бесселя.
- Параметры
-
-
Mint -
Количество точек в выходном окне. Если значение равно нулю или меньше, возвращается пустой массив.
-
betafloat -
Параметр формы окна.
-
- Возвращает
-
-
outarray -
Окно с максимальным значением, нормированным до единицы (значение единицы появляется только если количество образцов нечетное).
-
См. также
-
bartlett, blackman, hamming,hanning
Примечания
Окно Кайзера определяется как
с
где
— модифицированная функция Бесселя нулевого порядка.
Окно Кайзера названо в честь Джима Кайзера, который открыл простое приближение окна DPSS на основе функций Бесселя. Окно Кайзера является очень хорошим приближением цифрового пролатного сферического ряда или окна Слепиана, которое является преобразованием, максимизирующим энергию в основной доле окна по отношению к полной энергии.
Окно Кайзера может аппроксимировать многие другие окна путем изменения параметра бета.
beta
Форма окна
0
Прямоугольное
5
Подобное Хаммингу
6
Подобное Ханнингу
8.6
Подобное Блэкману
Значение бета 14, вероятно, является хорошей отправной точкой. Обратите внимание, что по мере увеличения бета окно сужается, и количество образцов должно быть достаточно большим для отбора образцов все более узкой пики, в противном случае будут возвращаться NaN.
Большинство ссылок на окно Кайзера взяты из литературы по обработке сигналов, где оно используется в качестве одной из многих функций окон для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление стопы», т.е. сглаживание разрывов в начале и конце выборочного сигнала) или функция сужения.
Ссылки
-
1 -
J. F. Kaiser, «Цифровые фильтры» - Глава 7 в «Системном анализе с помощью цифрового компьютера», Редакторы: Ф.Ф. Куо и Дж.Ф. Кайзер, стр. 218-285. John Wiley and Sons, Нью-Йорк, (1966).
-
2 -
E.R. Канасевич, «Анализ временных рядов в геофизике», Университет Альберты, 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.kaiser.html