numpy.kaiser
- numpy.kaiser(M, beta)[source]
-
Возвращает окно Кайзера.
Окно Кайзера — это обрезка, сформированная с использованием функции Бесселя.
- Параметры:
-
- Mint
-
Количество точек в выходном окне. Если значение равно нулю или меньше, возвращается пустой массив.
- betafloat
-
Параметр формы окна.
- Возвращаемые значения:
-
- outмассив
-
Окно, с максимальным значением, нормированным до единицы (значение один появляется только если количество выборок нечетное).
Примечания
Окно Кайзера определяется как
\[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.
Большинство ссылок на окно Кайзера взяты из литературы по обработке сигналов, где оно используется в качестве одной из многих функций окон для сглаживания значений. Оно также известно как функция аподизации (что означает «удаление ноги», т.е. сглаживание разрывов в начале и конце выборочного сигнала) или функция обрезки.
Ссылки
[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])Постройте окно и частотную характеристику.
import matplotlib.pyplot as plt from numpy.fft import fft, fftshift window = np.kaiser(51, 14) plt.plot(window) plt.title("Kaiser window") plt.ylabel("Amplitude") plt.xlabel("Sample") plt.show()plt.figure() 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) plt.title("Frequency response of Kaiser window") plt.ylabel("Magnitude [dB]") plt.xlabel("Normalized frequency [cycles per sample]") plt.axis('tight') plt.show()
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.kaiser.html