Windows — функции окон
#
DSP.Windows.rect
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘│
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
0 │ │
└──────────────────────────────────────────────────────────────────────┘
0 70
rect(n::Integer; padding::Integer=0, zerophase::Bool=false)
rect(dims; padding=0, zerophase=false)
Прямоугольное окно длиной n
, заполненное padding
нулями. Внутри окна значение равно 1, а за его пределами — 0.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.hanning
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▗▄▞▀▀▀▀▀▀▀▄▄ │
│ ▄▞▘ ▀▄▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▞▘ ▝▚▖ │
│ ▗▀ ▝▚ │
│ ▞▘ ▀▖ │
│ ▗▞ ▝▄ │
│ ▄▘ ▚▖ │
│ ▗▞ ▝▄ │
│ ▄▘ ▚▖ │
│ ▗▀ ▝▚ │
│ ▗▞▘ ▀▄ │
│ ▄▀▘ ▀▚▖ │
0 │ ▄▄▄▄▀▀ ▝▀▚▄▄▄▖│
└──────────────────────────────────────────────────────────────────────┘
0 70
hanning(n::Integer; padding::Integer=0, zerophase::Bool=false)
hanning(dims; padding=0, zerophase=false)
Окно Хеннинга длиной n
с заполнением padding
нулями. Окно Хеннинга (или Ханна) — это окно приподнятого косинуса с нулевыми значениями в конечных точках.
Данное окно определяется путем дискретизации непрерывной функции:
1 + cos(2πx) w(x) = ──────────── = cos²(πx) 2
в диапазоне [-0.5, 0.5]
.
Окно hanning
отвечает условию постоянного сложения с перекрытием (COLA) со скачком 0,5. Это означает, что сложение последовательности окон с запаздыванием с перекрытием 50 % даст постоянный сигнал. Это полезно при синтезе сигнала на основе ряда перекрывающихся кадров (каждый из которых представляет собой примерно прямоугольное окно), так как позволяет устранить амплитудную модуляцию при кадрировании.
Обратите внимание, что окно hanning
представляет собой окно cosine
, возведенное в квадрат.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.hamming
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▗▄▀▀▀▀▀▀▀▀▚▄ │
│ ▄▀▘ ▀▚▖ │
│ ▞▀ ▝▀▖ │
│ ▄▀ ▝▚ │
│ ▗▀ ▀▚ │
│ ▗▞▘ ▀▄ │
│ ▄▘ ▚▖ │
│ ▗▞ ▝▄ │
│ ▞▘ ▀▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▄▞▘ ▀▄▖ │
│ ▗▄▀ ▝▚▄ │
│ ▄▄▄▞▀▘ ▀▀▄▄▄▖│
0 │ │
└──────────────────────────────────────────────────────────────────────┘
0 70
hamming(n::Integer; padding::Integer=0, zerophase::Bool=false)
hamming(dims; padding=0, zerophase=false)
Окно Хэмминга длиной n
с заполнением padding
нулями. В конечных точках окна Хэмминга значения не достигают нуля, поэтому оно имеет более плавный спад частоты по сравнению с окном Хеннинга, но при этом устраняется первый боковой лепесток.
Данное окно определяется путем дискретизации непрерывной функции:
w(x) = 0.54 + 0.46*cos(2pi*x)
в диапазоне [-0.5, 0.5]
.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.tukey
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▗▞▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄ │
│ ▞▘ ▌ │
│ ▗▘ ▝▌ │
│ ▗▌ ▝▖ │
│ ▞ ▚ │
│ ▗▘ ▝▌ │
│ ▞ ▐ │
│ ▐▘ ▌ │
│ ▌ ▐▖ │
│ ▐ ▚ │
│ ▌ ▝▖ │
│ ▞ ▚ │
│ ▞▘ ▌ │
│ ▗▘ ▝▚ │
0 │ ▄▄▘ ▚▄▖│
└──────────────────────────────────────────────────────────────────────┘
0 70
tukey(n::Integer, α::Real; padding::Integer=0, zerophase::Bool=false)
tukey(dims, α; padding=0, zerophase=false)
Окно Тьюки длиной n
с заполнением padding
нулями. Окно Тьюки имеет плоскую вершину, значение ноль в конечных точках и синусоидальную переходную область, параметризуемую по α
. При α == 0
это окно эквивалентно прямоугольному окну. При α == 1
оно представляет собой окно Ханна.
Данное окно определяется путем дискретизации непрерывной функции:
⎛ ⎛ ⎛ 1 - α⎞⎞ ⎜ 1 + cos ⎜2πα ⎜x + ─────⎟⎟ 1 - α ⎜ ⎝ ⎝ 2 ⎠⎠ x ≤ ───── ⎜ ───────────────────────── 2 ⎜ 2 ⎜ w(x) = ⎜ 1 -α/2 < x ≤ α/2 ⎜ ⎜ ⎛ ⎛ 1 - α⎞⎞ ⎜ 1 + cos ⎜2πα ⎜x - ─────⎟⎟ 1 - α ⎜ ⎝ ⎝ 2 ⎠⎠ x > ───── ⎜ ───────────────────────── 2 ⎝ 2
в диапазоне [-0.5, 0.5]
.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае α
, padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.cosine
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▗▄▞▀▀▀▀▀▀▀▀▀▀▀▄▄ │
│ ▄▞▀▘ ▀▀▄▖ │
│ ▗▞▀ ▝▚▄ │
│ ▄▀▘ ▀▚▖ │
│ ▄▀ ▝▚▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▞▘ ▀▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▄▘ ▚▖ │
│ ▗▞ ▝▄ │
│ ▄▘ ▚▖ │
│ ▗▞ ▝▄ │
0 │ ▄▘ ▚▖│
└──────────────────────────────────────────────────────────────────────┘
0 70
cosine(n::Integer; padding::Integer=0, zerophase::Bool=false)
cosine(dims; padding=0, zerophase=false)
Окно косинуса длиной n
с заполнением padding
нулями. Окно косинуса — это первый лепесток функции косинуса (с переходами функции через ноль при +/- π в конечных точках). Также называется окном синуса.
Данное окно определяется путем дискретизации непрерывной функции:
w(x) = cos(πx)
в диапазоне [-0.5, 0.5]
.
Обратите внимание, что окно косинуса представляет собой квадратный корень из окна hanning
, поэтому оно иногда используется при применении окна дважды, например на шагах анализа и синтеза кратковременного преобразования Фурье (КВПФ).
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.lanczos
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▗▄▞▀▀▀▀▀▀▀▀▀▄▄ │
│ ▗▞▀▘ ▀▀▄ │
│ ▄▀▘ ▀▚ │
│ ▄▀ ▀▚▖ │
│ ▄▀ ▝▚▖ │
│ ▗▀ ▝▚ │
│ ▗▞▘ ▀▄ │
│ ▞▘ ▀▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▞▘ ▀▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▗▞▘ ▀▄ │
0 │ ▄▞▘ ▀▄▖│
└──────────────────────────────────────────────────────────────────────┘
0 70
lanczos(n::Integer; padding::Integer=0, zerophase::Bool=false)
lanczos(dims; padding=0, zerophase=false)
Окно Ланцоша длиной n
с заполнением padding
нулями. Окно Ланцоша — это главный лепесток функции sinc
.
Данное окно определяется путем дискретизации непрерывной функции:
sin(2πx) w(x) = sinc(2x) = ──────── 2πx
в диапазоне [-0.5, 0.5]
.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.triang
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▄▞▀▀▀▄▖ │
│ ▗▄▞▀ ▝▀▄▖ │
│ ▗▄▀▘ ▝▀▄▖ │
│ ▗▄▀▘ ▝▀▄▖ │
│ ▗▄▀▘ ▝▀▄▖ │
│ ▗▄▀▘ ▝▀▄▄ │
│ ▗▄▀▘ ▀▚▄ │
│ ▗▄▀▘ ▀▙▄ │
│ ▄▄▀▘ ▀▚▄ │
│ ▄▞▀ ▀▚▄ │
│ ▄▞▀ ▀▚▄ │
│▀ ▀│
│ │
│ │
0 │ │
└──────────────────────────────────────────────────────────────────────┘
1 7
triang(n::Integer; padding::Integer=0, zerophase::Bool=false)
triang(dims; padding=0, zerophase=false)
Треугольное окно длиной n
с заполнением padding
нулями. В конечных точках треугольного окна значения не достигают нуля. При нечетном n
окно triang
представляет собой n
центральных точек окна bartlett
из n+2
точек (то есть отсчеты, находящиеся сразу за пределами окна, имеют нулевые значения). При четном n
это окно имеет такой же наклон, как и окно n-1
, но с запаздыванием на половину отсчета, поэтому нулевые точки находятся на 1/2 отсчета за краями окна.
Данное окно определяется путем дискретизации непрерывной функции:
⎛ 2(n-1) ⎜1 - ────── abs(x) n is even ⎜ n w(x) = ⎜ ⎜ 2(n-1) ⎜1 - ────── abs(x) n is odd ⎝ n+1
в диапазоне [-0.5, 0.5]
.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
Если zerophase
имеет значение true
, следует заменить n
на n+1
в приведенных выше выражениях окна.
#
DSP.Windows.bartlett
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▄▀▀▚▖ │
│ ▗▄▀ ▝▚▄ │
│ ▗▞▘ ▀▄ │
│ ▄▞▘ ▀▄▖ │
│ ▄▀ ▝▚▖ │
│ ▗▄▀ ▝▄▄ │
│ ▗▞▘ ▀▄ │
│ ▄▞▘ ▀▄▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞▀ ▝▀▄ │
│ ▗▞▘ ▀▄ │
│ ▄▀▘ ▀▚▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞▀ ▝▀▄ │
0 │ ▄▞▘ ▀▄▖│
└──────────────────────────────────────────────────────────────────────┘
0 70
bartlett(n::Integer; padding::Integer=0, zerophase::Bool=false)
bartlett(dims; padding=0, zerophase=false)
Окно Бартлетта длиной n
. Окно Бартлетта — это треугольное окно, в конечных точках которого значения достигают нуля. Это равносильно свертке двух прямоугольных окон длиной (n-1)/2
и добавлению нулевых конечных точек. См. также описание окна triang
, в конечных точках которого значения не достигают нуля.
Данное окно определяется путем дискретизации непрерывной функции:
1 - abs(2x)
в диапазоне [-0.5, 0.5]
.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.gaussian
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▄▞▀▀▀▀▀▀▀▄▖ │
│ ▄▀ ▝▚▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▄▘ ▚ │
│ ▗▞ ▚▄ │
│ ▄▘ ▚▖ │
│ ▗▀ ▝▚ │
│ ▞▘ ▀▖ │
│ ▄▀ ▝▚▖ │
│ ▄▀ ▝▚▖ │
│ ▄▀ ▝▚▖ │
│ ▄▞▀ ▝▀▄▖ │
│ ▗▄▄▀▀ ▝▀▚▄▄ │
0 │ ▀▀▘ ▀▀▘│
└──────────────────────────────────────────────────────────────────────┘
0 70
gaussian(n::Integer, σ::Real; padding::Integer=0, zerophase::Bool=false)
gaussian(dims, σ; padding=0, zerophase=false)
Гауссово окно размером n отсчетов, определяемое путем дискретизации функции:
⎛ 2⎞ ⎜-1 ⎛x⎞ ⎟ ⎜── ⋅ ⎜─⎟ ⎟ ⎝ 2 ⎝σ⎠ ⎠ w(x) = e
в диапазоне [-0.5,0.5]
. Это означает, что при σ=0.5
конечные точки окна будут соответствовать единичному среднеквадратичному отклонению от центра.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае σ
, padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.bartlett_hann
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▗▄▞▀▀▀▀▀▄▄ │
│ ▄▀▘ ▀▚▖ │
│ ▄▀ ▝▚▖ │
│ ▄▀ ▝▚▖ │
│ ▗▀ ▝▖ │
│ ▗▞▘ ▝▀▄ │
│ ▄▘ ▚▖ │
│ ▗▞ ▝▄ │
│ ▞▘ ▀▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▗▞▘ ▀▄ │
│ ▗▞▘ ▀▄ │
│ ▄▞▘ ▀▄▖ │
0 │ ▄▄▄▀▀ ▝▀▚▄▄▖│
└──────────────────────────────────────────────────────────────────────┘
0 70
bartlett_hann(n::Integer; padding::Integer=0, zerophase::Bool=false)
bartlett_hann(dims; padding=0, zerophase=false)
Окно Бартлетта-Ханна длиной n
с заполнением padding
нулями. Окно Бартлетта-Ханна — это взвешенная сумма окон Бартлетта и Ханна.
Данное окно определяется путем дискретизации непрерывной функции:
w(x) = 0.62 - 0.48*abs(x) + 0.38*cos(2π*x)
в диапазоне [-0.5, 0.5]
.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.blackman
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▄▀▀▀▀▀▀▚▖ │
│ ▄▀ ▝▚▖ │
│ ▗▀ ▝▚ │
│ ▞▘ ▀▖ │
│ ▗▞ ▝▄ │
│ ▗▘ ▚ │
│ ▞▘ ▝▚▖ │
│ ▞ ▝▖ │
│ ▗▀ ▝▚ │
│ ▄▘ ▚▖ │
│ ▗▞ ▝▄ │
│ ▞▘ ▀▖ │
│ ▗▄▀ ▝▚▄ │
│ ▗▄▞▘ ▀▄▄ │
0 │ ▄▄▄▄▄▄▞▀▘ ▀▀▄▄▄▄▄▄▖│
└──────────────────────────────────────────────────────────────────────┘
0 70
blackman(n::Integer; padding::Integer=0, zerophase::Bool=false)
blackman(dims; padding=0, zerophase=false)
Аппроксимирует «точное» окно Блэкмана. Это обобщенное окно Блэкмана с α = 0,16.
Данное окно определяется путем дискретизации непрерывной функции:
w(x) = 0.42 + 0.5*cos(2π*x) + 0.08*cos(4π*x)
в диапазоне [-0.5, 0.5]
.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.kaiser
— Function
┌──────────────────────────────────────────────────────────────────────┐
1 │ ▄▞▀▀▀▀▀▄▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▗▘ ▚ │
│ ▞▘ ▀▖ │
│ ▞ ▝▖ │
│ ▗▞ ▐▖ │
│ ▗▘ ▝▚ │
│ ▄▘ ▚▖ │
│ ▞ ▝▖ │
│ ▗▀ ▝▚ │
│ ▗▞▘ ▀▄ │
│ ▗▞▘ ▀▄ │
│ ▗▄▞▘ ▀▄▄ │
0 │ ▄▄▄▄▄▄▄▞▀▘ ▀▀▄▄▄▄▄▄▄▖│
└──────────────────────────────────────────────────────────────────────┘
0 70
kaiser(n::Integer, α::Real; padding::Integer=0, zerophase::Bool=false)
kaiser(dims, α; padding=0, zerophase=false)
Окно Кайзера длиной α
, параметризуемое по n
. Окно Кайзера аппроксимирует окно DPSS (заданное функцией dpss
) с использованием упрощенного определения на основе функции Бесселя. Чем больше значение α
, тем шире главный лепесток, но уже боковые. Обычно для α
задается значение около 3.
Данное окно определяется путем дискретизации непрерывной функции:
⎛ ⎛ _________⎞⎞ ⎜ ⎜ ╱ 2⎟⎟ w(x) = I₀⎝πα⎝╲╱ 1 - (2x) ⎠⎠ ──────────────────── I₀(πα)
в диапазоне [-0.5, 0.5]
.
Здесь I₀(⋅) — это модифицированная функция Бесселя первого рода нулевого порядка.
Если в dims
передать кортеж (Tuple
), а не одно значение n
, создается двухмерное окно. В этом случае α
, padding
и zerophase
можно задать как одно значение для горизонтали и вертикали или как двухэлементный кортеж для указания значений по отдельности.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.dpss
— Function
┌──────────────────────────────────────────────────────────────────────┐
0.2 │ ▄▄▀▀▀▀▀▀▚▄▖ │
│ ▗▞▀ ▝▀▄ │
│ ▗▞▘ ▀▄ │
│ ▄▘ ▚▖ │
│ ▗▀ ▝▖ │
│ ▞▘ ▝▀▖ │
│ ▄▀ ▝▚▖ │
│ ▗▞ ▝▄ │
│ ▄▘ ▚▖ │
│ ▗▞ ▝▄ │
│ ▗▞▘ ▀▄ │
│ ▗▞▘ ▀▄ │
│ ▄▞▘ ▀▄▖ │
│ ▄▞▀ ▝▀▄▖ │
0 │ ▄▞▀▀ ▝▀▀▄▖│
└──────────────────────────────────────────────────────────────────────┘
0 70
dpss(n::Integer, nw::Real, ntapers::Integer=iceil(2*nw)-1;
padding::Integer=0, zerophase::Bool=false)
Первые ntapers
дискретных последовательностей вытянутых сфероидов (коэффициентов сглаживания Слепяна) в виде матрицы n
× ntapers
. Знаки коэффициентов сглаживания следуют тому соглашению, что первый элемент кососимметричных (нечетных) коэффициентов сглаживания положительный. Произведение длительности на ширину полосы задается аргументом nw
.
В окне DPSS максимальная концентрация энергии приходится на главный лепесток.
Если zerophase
имеет значение false
(по умолчанию), окно центрируется относительно индекса (n+1)/2
, что часто применяется при синтезе КИХ-фильтров. При этом длина обычно нечетная. Обратите внимание, что центр окна четной длины в этом случае будет находиться между отсчетами.
Если zerophase
имеет значение true
, окно центрируется относительно индекса 1 (отрицательная половина переносится в конец вектора). Кроме того, создается «периодическое» окно, то есть если заполнения нет, левая и правая конечные точки окна переносятся в один отсчет, так что длина окна будет такой же, как у окна без zerophase
длиной n+1
. Непрерывное окно с zerophase
можно представить как окно шириной n
, а окно без zerophase
— как окно длиной n-1
. Окна zerophase
часто применяются в обработке БПФ и обычно имеют четную длину.
#
DSP.Windows.dpsseig
— Function
dpsseig(A, nw)