numpy.kaiser
-
numpy.kaiser(M, beta)[source] -
Возвращает окно Кайзера.
Окно Кайзера — это обрезание, сформированное с использованием функции Бесселя.
- Параметры
-
-
Mint -
Количество точек в выходном окне. Если ноль или меньше, возвращается пустой массив.
-
betafloat -
Параметр формы окна.
-
- Возвращает
-
-
outarray -
Окно, с максимальным значением, нормированным до единицы (значение единицы появляется только если количество выборок нечетное).
-
Примечания
Окно Кайзера определяется как
где
где
— модифицированная функция Бесселя нулевого порядка.
Окно Кайзера названо в честь Джима Кайзера, который обнаружил простое приближение окна DPSS, основанное на функциях Бесселя. Окно Кайзера является очень хорошим приближением к цифровым пролатным сфероидным последовательностям или окну Слепиана, которое является преобразованием, максимизирующим энергию в главной доле окна по отношению к общей энергии.
Окно Кайзера может приближать многие другие окна, изменяя параметр beta.
beta
Форма окна
0
Прямоугольное
5
Похоже на окно Хэмминга
6
Похоже на окно Хэннинга
8.6
Похоже на окно Блэкмана
Значение beta 14, вероятно, является хорошей отправной точкой. Обратите внимание, что по мере увеличения beta окно сужается, и поэтому количество выборок должно быть достаточно большим, чтобы выборочно брать всё более узкий импульс, иначе будут возвращаться NaN.
Большинство ссылок на окно Кайзера взяты из литературы по обработке сигналов, где оно используется как одна из многих функций окон для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление ступни», то есть сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезания.
Ссылки
-
1 -
Джеймс Ф. Кайзер, «Цифровые фильтры» — гл. 7 в «Анализ систем с помощью цифрового компьютера», ред.: Ф.Ф. Куо и Дж.Ф. Кайзер, стр. 218-285. John Wiley and Sons, Нью-Йорк, (1966).
-
2 -
Э.Р. Канасевич, «Анализ временных последовательностей в геофизике», Университет Альберты Press, 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.19/reference/generated/numpy.kaiser.html