Каскад allpass фильтров дискретного времени
hd = dfilt.cascadeallpass(c1,c2,...)
hd = dfilt.cascadeallpass(c1,c2,...)
создает каскад фильтров allpass, каждый из которых использует минимальное количество множителей, учитывая коэффициенты фильтра, обеспеченные в c1
C2
, и так далее.
Каждый векторный c
представляет один раздел в каскадном фильтре. c
векторы должны содержать один, два, три, или четыре элемента как коэффициенты фильтра для каждого раздела. В результате алгоритма проекта каждый раздел является a dfilt.allpass
структура, коэффициенты которой даны в соответствующем c
вектор, такой как c1
вектор содержит коэффициенты для первой стадии.
Состояния для каждого раздела совместно используются разделами.
Векторы c
не должна быть та же длина. Можно объединить различные векторы длины во входных параметрах. Например, можно расположить каскадом разделы четвертого порядка с секциями второго порядка или разделы первого порядка.
Для получения дополнительной информации о векторах ci
и о передаточной функции каждого раздела, обратитесь к dfilt.allpass
.
Обычно вы не создаете эти каскадные фильтры allpass непосредственно. Вместо этого они следуют из процесса проектирования для БИХ-фильтра. Обратитесь к первому примеру в Примерах для больше об использовании dfilt.cascadeallpass
спроектировать БИХ-фильтр.
В следующей таблице записи строки являются свойствами фильтра и кратким описанием каждого свойства.
PropertyName | Краткое описание |
---|---|
| Содержит коэффициенты для allpass объекта фильтра |
| Описывает поток сигналов для объекта фильтра, включая все активные элементы, которые выполняют операции во время фильтрации — усиления, задержки, суммы, продукты и ввод/вывод. |
| Задает, сбросить ли состояния фильтра и память перед каждой операцией фильтрации. Позволяет вам решить, сохраняет ли ваш фильтр состояния от предыдущих запусков фильтрации. |
| Это свойство содержит состояния фильтра прежде, во время, и после работы фильтра. Состояния действуют как память фильтра между фильтрацией запусков или сеансов. Они также обеспечивают рычажное устройство между разделами фильтра мультираздела, такими как каскадный фильтр. Для получения дополнительной информации обратитесь к |
Два примера показывают как dfilt.cascadeallpass
работает в совсем других приложениях — разработка фильтра полуполосы IIR и построение allpass каскада dfilt
объекты.
Во-первых, спроектируйте БИХ-использование полуленточного фильтра расположенные каскадом фильтры allpass. Каждая ветвь параллельной каскадной конструкции является cascadeallpass объектом фильтра.
tw = 100; % Transition width of filter to be designed, 100 Hz. ast = 80; % Stopband attenuation of filter to be designed, 80dB. fs = 2000; % Sampling frequency of signal to be filtered. % Store halfband design specs in the specifications object d. d = fdesign.halfband('tw,ast',tw,ast,fs);
Теперь выполните фактическое создание фильтра. hd
содержит два dfilt.cascadeallpass
объекты.
hd = design(d,'ellip','filterstructure','cascadeallpass'); % Get summary information about one dfilt.cascadeallpass stage. StageInfo = hd.Stage(1).Stage(1);
Этот второй пример создает dfilt.cascadeallpass
объект фильтра непосредственно данные allpass коэффициенты для входных векторов.
section1 = 0.8; section2 = [1.2,0.7]; section3 = [1.3,0.9]; hd = dfilt.cascadeallpass(section1,section2,section3); % Get information about the filter % return informatio in character array S = info(hd);
dfilt
| dfilt.allpass
| dfilt.cascadewdfallpass
| dsp.IIRHalfbandDecimator
| dsp.IIRHalfbandDecimator