Каскад allpass фильтров дискретного времени
hd = dfilt.cascadeallpass(c1,c2,...)
hd = dfilt.cascadeallpass(c1,c2,...)
создает каскад фильтров allpass, каждый из которых использует минимальное количество множителей, учитывая коэффициенты фильтра, обеспеченные в c1
, c2
, и так далее.
Каждый векторный c
представляет один раздел в каскадном фильтре. векторы c
должны содержать один, два, три, или четыре элемента как коэффициенты фильтра для каждого раздела. В результате алгоритма проекта каждый раздел является структурой 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