designMultirateFIR

Многоразовые конечные импульсные характеристики создания фильтра

Описание

пример

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

пример

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

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

пример

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

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

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

Примеры

свернуть все

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

Спроектируйте конечную импульсную характеристику интерполятор с установленным коэффициентом интерполяции 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.

Чтобы спроектировать конечную импульсную характеристику дециматор, используя 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.

Чтобы спроектировать конечная импульсная характеристика скорости с помощью 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™. Для получения дополнительной информации смотрите 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

Нормированная ширина перехода многоразовой конечной импульсной характеристики, заданная как действительный скаляр в области значений (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 -length.

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

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

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

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

Для получения дополнительной информации смотрите раздел Алгоритмы.

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

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

Алгоритмы

designMultirateFIR проектирует (N - 1) КИХ-фильтр Nyquist R го порядка с помощью вектора окна Кайзера N-length, чтобы отобразить усеченную импульсную характеристику КИХ-фильтра.

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

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

d(nN/2)=sin(wc(nN/2))π(nN/2),n=0,,N2,,N

где wc=π/R.

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

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

Окно Кайзера определяется:

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

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

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

β={0.1102(Astop8.7)если Astop500.5842(Astop21)0.4+0.07886(Astop21)если 21<Astop<500если Astop21,

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

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

h(n)=w(n)d(nN/2)=w(n)sin(wc(nN/2))π(nN/2),n=0,,N2,,N

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

Ссылки

[1] Orfanidis, Sophocles J. Введение в обработку сигналов. Upper Saddle River, NJ: Prentice Hall, 1996.

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

.
Введенный в R2016a