fircls

Создание многополосного КИХ-фильтра наименьших квадратов с ограничениями

Синтаксис

b = fircls(n,f,amp,up,lo)
fircls(n,f,amp,up,lo,'design_flag')

Описание

b = fircls(n,f,amp,up,lo) генерирует n+1 длины КИХ-фильтр линейной фазы b. Характеристики частота-амплитуда этого фильтра совпадают с характеристиками, заданными векторами f и amp:

  • f является вектором переходных частот в области значений от 0 до 1, где 1 соответствует частоте Найквиста. Первая точка f должен быть 0 и последняя точка 1. Частотные точки должны быть в порядке возрастания.

  • amp - вектор, описывающий кусочно-постоянную желаемую амплитуду частотной характеристики. Длина amp равен количеству полос в отклике и должен быть равен length(f)-1.

  • up и lo являются векторами с той же длиной, что и amp. Они определяют верхнюю и нижнюю границы для частотной характеристики в каждой полосе.

fircls всегда использует четный порядок фильтра для строений с полосой пропускания на частоте Nyquist (то есть фильтры highpass и bandstop). Это потому, что для нечетных порядков частотная характеристика на частоте Найквиста обязательно равна 0. Если вы задаете нечетное n, fircls увеличивает его на 1.

fircls(n,f,amp,up,lo,'design_flag') позволяет контролировать создание фильтра, где 'design_flag' может быть

  • 'trace', для текстового отображения ошибки проектирования на каждом шаге итерации.

  • 'plots'для набора графиков, показывающих полнополосную величину характеристику фильтра и увеличенное представление величины характеристики в каждой поддиапазоне. Все графики обновляются на каждом шаге итерации. O на графике являются предполагаемыми экстремалами новой итерации, а X являются предполагаемыми экстремалами предыдущей итерации, где экстремалы являются peaks (максимальными и минимальными) пульсаций фильтра. Только рябь, которая имеет соответствующие O и X, сделаны равными.

  • 'both', как для текстового отображения, так и для графиков.

Примечание

Обычно меньшее значение в полосе остановки будет задано как отрицательное. Путем настройки lo равно 0 в стоповых полосах может быть получена неотрицательная амплитуда частотной характеристики. Такие фильтры могут быть спектрально факторизованы, чтобы получить минимальные фазовые фильтры.

Примеры

свернуть все

Спроектируйте lowpass 150-го порядка с нормализованной частотой среза 0.4π рад/образец. Задайте максимальную абсолютную ошибку 0,02 в полосе пропускания и 0,01 в полосе остановки. Отображение графиков полос данных.

n = 150;
f = [0 0.4 1];
a = [1 0];
up = [1.02 0.01];
lo = [0.98 -0.01];
b = fircls(n,f,a,up,lo,'both');
  Bound Violation = 0.0788344298966  
  Bound Violation = 0.0096137744998  
  Bound Violation = 0.0005681345753  
  Bound Violation = 0.0000051519942  
  Bound Violation = 0.0000000348656  

Figure contains 3 axes. Axes 1 contains 3 objects of type line. Axes 2 contains 3 objects of type line. Axes 3 contains 3 objects of type line.

  Bound Violation = 0.0000000006231  

Связанные нарушения обозначают итерации процедуры при сходимости проекта. Отобразите величину ответ фильтра.

fvtool(b)

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 an object of type line.

Алгоритмы

fircls использует итерационный алгоритм наименьших квадратов, чтобы получить ответ equiripple. Алгоритм является алгоритмом множественного обмена, который использует множители Лагранжа и условия Куна-Такера на каждой итерации.

Ссылки

[1] Selesnick, I. W., M. Lang, and C. S. Burrus. «Ограниченный Проект методом наименьших квадратов из конечной импульсной характеристики фильтров без заданных Полос перехода». Материалы Международной конференции по акустике, речи и обработке сигналов 1995 года. Том 2, 1995, стр. 1260-1263.

[2] Selesnick, I. W., M. Lang, and C. S. Burrus. «Ограниченный Проект методом наименьших квадратов из конечной импульсной характеристики фильтров без заданных Полос перехода». IEEE® Транзакции по обработке сигналов. Том 44, № 8, 1996, стр. 1879-1892.

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

.

См. также

| |

Представлено до R2006a