Документация Engee

Windows — функции окон

# DSP.Windows.rectFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.hanningFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.hammingFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.tukeyFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.cosineFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.lanczosFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.triangFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.bartlettFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.gaussianFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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_hannFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.blackmanFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.kaiserFunction

  ┌──────────────────────────────────────────────────────────────────────┐
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.dpssFunction

    ┌──────────────────────────────────────────────────────────────────────┐
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.dpsseigFunction

dpsseig(A, nw)

Собственные значения матрицы DPSS, представляющие отношения мощности в главном лепестке к общей мощности (в главном и боковых лепестках). A — это результат функции dpss, а nw — произведение длительности на ширину полосы, переданное на вход функции dpss.