fdesign.nyquist

Спецификация фильтра Nyquist

Синтаксис

d = fdesign.nyquist
d = fdesign.nyquist(l, spec)
d = fdesign.nyquist(l,spec,specvalue1,specvalue2,...)
d = fdesign.nyquist(l,specvalue1,specvalue2)
d = fdesign.nyquist(...,fs)
d = fdesign.nyquist(...,magunits)

Описание

d = fdesign.nyquist создает объекта спецификации фильтров Nyquist или L-диапазона d, применение значений по умолчанию для свойств tw и ast. По умолчанию объект фильтра проектирует полупрозрачный фильтр Nyquist минимального порядка (L = 2).

Использование fdesign.nyquist наряду с design метод генерирует Системную object™, если 'SystemObject' флаг в design для метода задано значение true.

d = fdesign.nyquist(l, spec) создает d объекта и устанавливает его Specification свойство к spec. Использование l чтобы задать желаемое значение для L. L = 2 проекты полуполосы конечной импульсной характеристики фильтра, L = 3 конечные импульсные характеристики фильтра третьего диапазона и так далее. Когда вы используете фильтр Nyquist в качестве интерполятора, l или L является фактором интерполяции. Первый входной параметр должен быть l, когда вы не используете синтаксис по умолчанию d = fdesign.nyquist.

Записи в spec представляют различные функции фильтра, такие как порядок фильтра, которые управляют созданием фильтра. Допустимые значения для spec показаны ниже. Значения не учитываются в регистре.

  • tw, ast (опция по умолчанию)

  • n, tw

  • n

  • n, ast

где,

  • ast - ослабление в полосе упора в децибелах (единицах измерения по умолчанию).

  • n - порядок фильтрации.

  • tw - ширина переходной области между полосами пропускания и упора. Указывается в нормированных модулях.

Методы создания фильтра, которые применяются к объекту спецификации фильтров Nyquist, изменяются в зависимости от Specification опция. Использовать designmethods определить, какой метод проекта применяется к объекту и его опции спецификации. Различные методы создания фильтра также имеют опции, которые можно задать. Использовать designopts с методом проекта, чтобы увидеть доступные опции. Для примера:

f=fdesign.nyquist(4,'N,TW');
designmethods(f)

d = fdesign.nyquist(l,spec,specvalue1,specvalue2,...) создает объект d и устанавливает его спецификацию на spec, и значений спецификации, чтобы specvalue1, specvalue2и так далее во время конструкции.

d = fdesign.nyquist(l,specvalue1,specvalue2) создает объект d со значениями, которые вы предоставляете в l, specvalue1,specvalue2 как значения для l, tw и ast.

d = fdesign.nyquist(...,fs) добавляет аргумент fs, указанный в Гц для определения частоты дискретизации для использования. В этом случае все частоты в спецификациях также находятся в Гц.

d = fdesign.nyquist(...,magunits) задает модули для любой спецификации, заданной в входных параметрах. magunits может быть одним из

  • linear - задайте величину в линейных модулях

  • dB - задайте величину в дБ (децибелы)

  • squared - задайте величину в степенях

Когда вы опускаете magunits аргумент, fdesign принимает, что все величины указаны в децибелах. Обратите внимание, что fdesign сохраняет все спецификации величин в децибелах (преобразование в децибелы при необходимости) независимо от того, как вы задаете величины.

Ограничения объекта Nyquist fdesign

Использование объектов спецификации фильтров Nyquist с equiripple метод проекта накладывает несколько ограничений на полученный фильтр, вызванных equiripple алгоритм проекта.

  • Когда вы запрашиваете проект минимального порядка у equiripple с вашим объектом Nyquist, алгоритм проекта может не сходиться и может ошибиться с ошибкой сходимости фильтра.

  • Когда вы задаете порядок вашего необходимого фильтра и используете equiripple метод проектирования, проект может не сходиться.

  • Как правило, следующие спецификации, отдельно или в комбинации друг с другом, могут вызвать проблемы сходимости фильтров с объектами Nyquist и equiripple метод проекта.

    • очень высокий порядок

    • малая ширина перехода

    • очень большое затухание в полосе задерживания

Обратите внимание, что полуфазные фильтры (фильтры, в которых полоса = 2) не показывают проблем сходимости.

Когда возникают проблемы сходимости, или в упомянутых случаях, или в других, вы можете проектировать свой фильтр с kaiserwin способ.

В сложение, если вы используете объекты Nyquist для разработки дециматоров или интерполяторов (где коэффициент интерполяции или десятикратного уменьшения не является простым числом), использование многоступенчатых созданий фильтра может быть вашим лучшим подходом.

Примеры

свернуть все

Эти примеры показывают, как создать объект спецификации фильтров Nyquist.

Во-первых, создайте объект спецификаций по умолчанию, не используя входные параметры.

d = fdesign.nyquist; %#ok

Теперь создайте объект путем передачи типа спецификации 'n, ast' - получившийся объект использует значения по умолчанию для n и ast.

d = fdesign.nyquist(2,'n,ast'); %#ok

Создайте другой объект фильтра Nyquist, передав значения спецификаций объекту, а не приняв значения по умолчанию для n и ast.

d = fdesign.nyquist(3,'n,ast',42,80) %#ok
d = 
  nyquist with properties:

               Response: 'Nyquist'
          Specification: 'N,Ast'
            Description: {2x1 cell}
    NormalizedFrequency: 1
            FilterOrder: 42
                  Astop: 80
                   Band: 3

Наконец, передайте спецификации фильтра, которые соответствуют спецификации по умолчанию - tw, ast. Когда вы передаете только значения, fdesign.nyquist принимает опцию Спецификация по умолчанию.

d = fdesign.nyquist(4,.01,80)
d = 
  nyquist with properties:

               Response: 'Nyquist'
          Specification: 'TW,Ast'
            Description: {2x1 cell}
    NormalizedFrequency: 1
        TransitionWidth: 0.0100
                  Astop: 80
                   Band: 4

Теперь спроектируйте фильтр Nyquist с помощью метода kaiserwin design.

hd = design(d,'kaiserwin','SystemObject',true);

Создайте два равноудаленных фильтра Nyquist 4-го диапазона с неотрицательного нулевого фазового отклика и без нее:

f = fdesign.nyquist(4,'N,TW',12,0.2);

Фильтр Equiripple Nyquist 4-го диапазона с неотрицательным нулевым фазовым откликом

Hd1 = design(f,'equiripple','zerophase',true,'SystemObject',true);

Фильтр Equiripple Nyquist 4-го диапазона с 'ZeroPhase' установлен на false 'zerophase', false является значением по умолчанию

Hd2 = design(f,'equiripple','zerophase',false,'SystemObject',true);

Получите реальные амплитуды (не величины)

[Hr_zerophase,~] = zerophase(Hd1);
[Hr,W] = zerophase(Hd2);

Постройте график и сравните ответ

plot(W,Hr_zerophase,'k','linewidth',2);
xlabel('Radians/sample'); ylabel('Amplitude');
hold on;
plot(W,Hr,'r');
axis tight; grid on;
legend('with ''ZeroPhase'', true','with ''ZeroPhase'' false');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent with 'ZeroPhase', true, with 'ZeroPhase' false.

Обратите внимание, что амплитуда нулевого фазового отклика (черная линия) неотрицательна для всех частот.

Опция 'ZeroPhase' действительна только для equiripple проектов Найквиста с спецификацией 'N, TW'. Вы не можете задать 'MinPhase' и 'ZeroPhase', чтобы быть одновременно 'true'.

Введенный в R2011a