designMultirateFIR

Многоскоростное КИХ-создание фильтра

Описание

пример

B = designMultirateFIR(L,M) проектирует многоскоростной КИХ-фильтр с коэффициентом интерполяции L и фактор децимации M. Выход B вектор из спроектированных КИХ-коэффициентов. Чтобы спроектировать чистый интерполятор, установите M на 1. Чтобы спроектировать чистый decimator, установите 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, или Система многоскоростного фильтра object™, если flag установлен в true.

Примеры

свернуть все

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

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

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

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

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

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

Figure Filter Visualization Tool - Impulse Response contains an axes object and other objects of type uitoolbar, uimenu. The axes object 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 object and other objects of type uitoolbar, uimenu. The axes object 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 object and other objects of type uitoolbar, uimenu. The axes object with title Impulse Response contains an object of type stem.

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

В этом примере функция проектирует многофазную КИХ-Систему интерполятора 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 object and other objects of type uitoolbar, uimenu. The axes object 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                      
 

Входные параметры

свернуть все

Коэффициент интерполяции в виде положительного скалярного целого числа. Чтобы спроектировать decimator только, установите 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 – Функция возвращает один из следующих Системных объектов многоскоростного фильтра:

Типы данных: логический

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

свернуть все

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

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

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

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

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

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

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

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

Алгоритмы

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

Отфильтруйте длину, 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 th полоса, ниже нуля импульсная характеристика фильтров Найквиста. Из-за этого свойства, когда фильтры Найквиста используются для чистой интерполяции, входные выборки остаются неизменными после интерполяции.

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

Окно Кайзера задано:

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, Софокл Дж. Введение в обработку сигналов. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1996.

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

Введенный в R2016a