exponenta event banner

designMultirateFIR

Конструкция многоскоростного фильтра FIR

Описание

пример

B = designMultirateFIR(L,M) конструирует многоскоростной фильтр FIR с коэффициентом интерполяции L и коэффициент прореживания M. Продукция B - вектор проектируемых коэффициентов КИХ. Чтобы создать чистый интерполятор, установите значение M равным 1. Чтобы создать чистый прореживатель, задайте L равным 1.

пример

B = designMultirateFIR(L,M,P) конструирует многоскоростной FIR-фильтр с длиной половины полифазы P. По умолчанию полуполифазная длина равна 12.

B = designMultirateFIR(L,M,TW) конструирует многоскоростной фильтр FIR с коэффициентом интерполяции L, коэффициент прореживания Mи нормализованная ширина перехода TW.

пример

B = designMultirateFIR(L,M,P,Astop) конструирует многоскоростной фильтр FIR с затуханием стоп-полосы Astop. По умолчанию затухание полосы останова составляет 80 дБ.

B = designMultirateFIR(L,M,TW,Astop) конструирует многоскоростной фильтр FIR с коэффициентом интерполяции L, коэффициент прореживания M, нормированная ширина перехода TWи затухание полосы останова Astop, указано в дБ.

B = designMultirateFIR(___,'SystemObject',flag) возвращает вектор коэффициентов фильтра B если флаг установлен в значение falseили многоскоростной фильтр System object™ если flag имеет значение true.

Примеры

свернуть все

Для проектирования FIR-интерполятора с использованием designMultirateFIR необходимо указать интересующий коэффициент интерполяции (обычно больше 1) и коэффициент прореживания, равный 1. Можно использовать длину полуфазы по умолчанию 12 и затухание полосы останова по умолчанию 80 дБ. Кроме того, можно задать значения длины полуфазы и затухания полосы останова.

Создайте FIR-интерполятор с коэффициентом интерполяции, равным 5. Используйте длину полуфазы по умолчанию 12 и затухание полосы останова по умолчанию 80 дБ.

b = designMultirateFIR(5,1);
fvtool(b,'impulse')

Figure Filter Visualization Tool - Impulse Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Impulse Response contains an object of type stem.

Для проектирования дециматора FIR с помощью designMultirateFIR необходимо указать интересующий коэффициент прореживания (обычно больше 1) и коэффициент интерполяции, равный 1. Можно использовать длину полуфазы по умолчанию 12 и затухание полосы останова по умолчанию 80 дБ. Кроме того, можно задать значения длины полуфазы и затухания полосы останова. Создайте дециматор КИХ с коэффициентом прореживания, равным 3, и длиной половины полифазы, равной 14. Используйте затухание полосы останова по умолчанию 80 дБ.

b = designMultirateFIR(1,3,14);
fvtool(b,'impulse');

Figure Filter Visualization Tool - Impulse Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Impulse Response contains an object of type stem.

Чтобы сконструировать преобразователь скорости FIR с помощью designMultirateFIR необходимо указать интересующие коэффициенты интерполяции и прореживания (обычно больше 1). Кроме того, можно задать либо значения длины половины полифазы и затухания полосы останова, либо нормализованные значения ширины перехода и затухания полосы останова.

Сконструируйте преобразователь скорости КИХ с коэффициентом интерполяции, установленным на 3, коэффициентом прореживания, установленным на 4, длиной полуполифазы, установленным на 14, и затуханием полосы останова, установленным на 90 дБ.

b = designMultirateFIR(3,4,14,90);
fvtool(b,'impulse');

Figure Filter Visualization Tool - Impulse Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Impulse Response contains an object of type stem.

Создайте преобразователь скорости КИХ с коэффициентом интерполяции, установленным на 3, коэффициентом прореживания, установленным на 4, нормированной шириной перехода, установленной на 0,2, и затуханием полосы останова, установленным на 90 дБ.

bTW = designMultirateFIR(3,4,0.2,90);
fvtool(bTW,'impulse');

Figure Filter Visualization Tool - Impulse Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Impulse Response contains an object of type stem.

Установите 'SystemObject' флаг для true в designMultirateFIR для создания объекта многоскоростного фильтра. Параметры конструкции, указанные в функции, определяют тип объекта System, проектируемого функцией.

В этом примере функция создает многофазную object™ системы интерполятора FIR. Дополнительные сведения см. в разделе dsp.FIRInterpolator.

Создать dsp.FIRInterpolator объект с коэффициентом интерполяции, равным 5, шириной перехода, равной 0,01, и затуханием стоп-полосы, равным 60 дБ. Установите 'SystemObject' флаг для true для создания объекта многоскоростного фильтра.

firInterp = designMultirateFIR(5,1,0.01,60,'SystemObject',true);
fvtool(firInterp)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

Вычислите стоимость внедрения фильтра.

cost(firInterp)
ans = struct with fields:
                  NumCoefficients: 582
                        NumStates: 145
    MultiplicationsPerInputSample: 582
          AdditionsPerInputSample: 578

Измерьте характеристики частотной характеристики объекта фильтра.

measure(firInterp)
ans = 
Sample Rate      : N/A (normalized frequency)
Passband Edge    : 0.195                     
3-dB Point       : 0.19884                   
6-dB Point       : 0.2                       
Stopband Edge    : 0.205                     
Passband Ripple  : 0.016474 dB               
Stopband Atten.  : 60.1827 dB                
Transition Width : 0.01                      
 

Входные аргументы

свернуть все

Коэффициент интерполяции, заданный как положительное скалярное целое число. Чтобы создать только прореживатель, задайте L равным 1.

Пример: 2

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Коэффициент прореживания, заданный как положительное скалярное целое число. Для конструирования только интерполятора установите для M значение 1.

Пример: 2

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Полуполифазная длина, заданная как положительное скалярное целое число.

Пример: 12

Пример: 20

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Нормализованная ширина перехода многоскоростного FIR-фильтра, заданная как действительный скаляр в диапазоне (0 1).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Затухание стоп-полосы в дБ, определяемое как неотрицательный действительный скаляр, больший или равный 0.

Пример: 0.0

Пример: 80.5

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Флаг системного объекта установлен в значение:

  • false Функция возвращает вектор коэффициентов фильтра.

  • true -- Функция возвращает один из следующих объектов системы многоскоростного фильтра:

Типы данных: logical

Выходные аргументы

свернуть все

Коэффициенты многоскоростного КИХ-фильтра, возвращаемые как вектор N-длины с действительным значением.

Если и L, и M равны 1, то N равно 1.

Если max(L,M) > 1, то N = 2 * P * R, где P - длина полуфазы, а R определяется следующими уравнениями:

  • Если L > 1, R = L.

  • Если L = 1, R = М.

Дополнительные сведения см. в разделе Алгоритмы.

Когда 'SystemObject' флаг установлен в значение trueфункция возвращает один из следующих объектов системы многоскоростного фильтра:

Типы данных: double

Алгоритмы

designMultirateFIR конструирует (N-1) -й порядковый, Rth-полосный FIR-фильтр Найквиста с использованием N-длинного оконного вектора Кайзера для окошка усеченной импульсной характеристики FIR-фильтра.

Длина фильтра N определяется как N = 2 * P * R, а R определяется как объяснено в В.

Усеченная импульсная характеристика d (n) задерживается N/2 выборками, чтобы сделать ее причинной. Усеченная и задержанная импульсная характеристика задается :

d (n N/2) = sin (wc (n N/2)) δ (n N/2), n=0,⋯,N2,⋯,N

где wc = δ/R.

Для каждой полосы Rh импульсная характеристика фильтров Найквиста равна ровно нулю. Из-за этого свойства, когда фильтры Найквиста используются для чистой интерполяции, входные выборки остаются неизменными после интерполяции.

Окно Кайзера используется из-за его почти оптимальной производительности, обеспечивая надежный способ проектирования фильтра Найквиста. Окно зависит от двух параметров: длины N + 1 и параметра формы β.

Окно Кайзера определяется следующим образом:

w (n) = I0 (β1 (n N/2N/2) 2) I0 (β), 0≤n≤N,

где I0 - модифицированная функция Бесселя первого рода нулевого порядка.

Параметр формы β рассчитывается из:

β = {0,1102 (Astop  8,7), если Astop≥500.5842 (Astop − 21) 0,4 + 0,07886 ( Astop 21), если 21 < Astop < 500if Astop≤21,

где Astop - затухание полосы останова в дБ.

Оконная импульсная характеристика задается

h (n) = w (n) d (n N/2) = w (n) sin (wc (n N/2)) δ (n − N/2), n=0,⋯,N2,⋯,N

h (n) для n = 0,..,N/2,...N являются коэффициентами многоскоростного фильтра. Эти коэффициенты определяются коэффициентом интерполяции, L, и коэффициентом прореживания, М.

Ссылки

[1] Орфанидис, Софокл Дж. Введение в обработку сигналов. Река Верхнее Седло, Нью-Джерси: Прентис-Холл, 1996.

Расширенные возможности

.
Представлен в R2016a