exponenta event banner

firls

Конструкция фильтра КИХ с линейной фазой методом наименьших квадратов

Описание

пример

b = firls(n,f,a) возвращает вектор строки b содержащий n+1 коэффициенты порядка -n Фильтр FIR. Частотно-амплитудные характеристики результирующего фильтра соответствуют характеристикам векторов f и a.

пример

b = firls(n,f,a,w) использование w для взвешивания частотных ячеек.

пример

b = firls(___,ftype) конструирует антисимметричные (нечетные) фильтры, где ftype задает фильтр как дифференциатор или преобразователь Гильберта. Вы можете использовать ftype с любым из предыдущих входных синтаксисов.

Примеры

свернуть все

Спроектируйте фильтр нижних частот FIR порядка 255 с переходной областью между 0.25δ и 0.3.d. Использовать fvtool для отображения значений и фазовых откликов фильтра.

b = firls(255,[0 0.25 0.3 1],[1 1 0 0]);
fvtool(b,1,'OverlayedAnalysis','phase')

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

Идеальный дифференциатор имеет частотную характеристику, заданную D (λ) = jλ. Спроектируйте дифференциатор порядка 30, который ослабляет частоты выше 0,9º. Включите в амплитуду коэффициент δ, потому что частоты нормализуются на δ. Отображение нулевого отклика фильтра.

b = firls(30,[0 0.9],[0 0.9*pi],'differentiator');

fvtool(b,1,'MagnitudeDisplay','zero-phase')

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

Проектирование антисимметричного фильтра 24-го порядка с кусочно-линейными полосами пропускания.

F = [0 0.3 0.4 0.6 0.7 0.9]; 
A = [0 1.0 0.0 0.0 0.5 0.5];
b = firls(24,F,A,'hilbert');

Постройте график требуемых и фактических частотных характеристик.

[H,f] = freqz(b,1,512,2);
plot(f,abs(H))
hold on
for i = 1:2:6, 
   plot([F(i) F(i+1)],[A(i) A(i+1)],'r--')
end
legend('firls design','Ideal')
grid on
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude')

Figure contains an axes. The axes contains 4 objects of type line. These objects represent firls design, Ideal.

Проектирование фильтра нижних частот FIR. Полоса пропускания находится в диапазоне от DC до 0,45δ рад/образец. Полоса останова находится в диапазоне от 0,55δ рад/образец до частоты Найквиста. Создайте три различные конструкции, изменяя вес полос в наименьших квадратах.

В первой конструкции сделать вес стоп-полосы более высоким, чем вес полосы пропускания, в 100 раз. Используйте эту спецификацию, когда важно, чтобы отклик величины в полосе останова был плоским и близким к 0. Пульсация полосы пропускания примерно в 100 раз превышает пульсацию полосы останова.

bhi = firls(18,[0 0.45 0.55 1],[1 1 0 0],[1 100]);

Во второй конструкции изменить вес так, чтобы вес полосы пропускания в 100 раз превышал вес полосы останова. Используйте эту спецификацию, когда важно, чтобы отклик величины в полосе пропускания был плоским и близким к 1. Пульсация полосы останова примерно в 100 раз превышает пульсацию полосы пропускания.

blo = firls(18,[0 0.45 0.55 1],[1 1 0 0],[100 1]);

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

b = firls(18,[0 0.45 0.55 1],[1 1 0 0],[1 1]);

Визуализируйте амплитудные характеристики трех фильтров.

hfvt = fvtool(bhi,1,blo,1,b,1,'MagnitudeDisplay','Zero-phase');
legend(hfvt,'bhi: w = [1 100]','blo: w = [100 1]','b: w = [1 1]')

Figure Filter Visualization Tool - Zero-phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Zero-phase Response contains 3 objects of type line. These objects represent bhi: w = [1 100], blo: w = [100 1], b: w = [1 1].

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

свернуть все

Порядок фильтра, заданный как действительный положительный скаляр.

Нормализованные частотные точки, заданные как действительный вектор. Аргумент должен находиться в диапазоне [0, 1], где 1 соответствует частоте Найквиста. Число элементов в векторе всегда кратно 2. Частоты должны быть в порядке, отличном от возрастания.

Требуемые амплитуды в точках, указанных в f, указан как вектор. f и a должна быть одинаковой длины. Длина должна быть четным числом.

  • Желаемая амплитуда на частотах между парами точек (f (k), f (k + 1)) для k нечетных является отрезком линии, соединяющим точки (f (k), a (k) и (f (k + 1), a (k + 1)).

  • Желаемая амплитуда на частотах между парами точек (f (k), f (k + 1)) для k четных не определена. Области между такими точками являются переходными областями или областями, которые не важны для конкретного приложения.

Веса, используемые для настройки соответствия в каждой полосе частот, определяемой как действительный вектор. Длина w составляет половину длины f и aТаким образом, существует ровно один вес на полосу.

Тип фильтра для фильтров линейной фазы с нечетной симметрией (тип III и тип IV), указанный как 'hilbert' или 'differentiator':

  • 'hilbert' - Выходные коэффициенты в b подчиняются соотношению b (k ) = -b  (n + 2 - k), k = 1,... ,  n + 1. Этот класс фильтров включает трансформатор Гильберта, который имеет желаемую амплитуду 1 по всей полосе.

  • 'differentiator' - Для ненулевых диапазонов амплитуд фильтр взвешивает ошибку на коэффициент 1/f2, так что погрешность на низких частотах намного меньше, чем на высоких частотах. Для КИХ-дифференциаторов, имеющих амплитудную характеристику, пропорциональную частоте, эти фильтры минимизируют максимальную относительную погрешность (максимум отношения погрешности к желаемой амплитуде).

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

свернуть все

Коэффициенты фильтра, возвращаемые в виде вектора строки длины n + 1. Коэффициенты увеличиваются.

Подробнее

свернуть все

Несовместимость длины фильтра и ширины перехода

При проектировании фильтра таким образом, чтобы произведение длины фильтра и ширины перехода было большим, может появиться следующее предупреждение: Matrix is close to singular or badly scaled. Следующий пример иллюстрирует это ограничение.

b = firls(100,[0 0.15 0.85 1],[1 1 0 0]);
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND =  3.860608e-18.
fvtool(b,1,'OverlayedAnalysis','phase')

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

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

Алгоритмы

firls конструирует линейно-фазовый КИХ-фильтр, который минимизирует взвешенную интегрированную квадратичную ошибку между идеальной кусочно-линейной функцией и амплитудной характеристикой фильтра по набору желаемых полос частот.

В [2] приводится описание теоретического подхода firls. Функция решает систему линейных уравнений с использованием внутренней матрицы произведения примерно такого же размера n\2 использование MATLAB ®\ оператор.

Это тип I (n нечетный) и тип II (n является четным) линейно-фазовые фильтры. Векторы f и a задать частотно-амплитудные характеристики фильтра:

  • f - вектор пар частотных точек, заданный в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста. Частоты должны быть в возрастающем порядке. Допускаются повторяющиеся частотные точки, которые фактически могут использоваться для проектирования фильтра, точно такого же, как фильтры, возвращаемые fir1 и fir2 функции с прямоугольником (rectwin) окно.

  • a - вектор, содержащий требуемые амплитуды в точках, указанных в f.

    Желательной амплитудной функцией на частотах между парами точек (f (k) , f (k + 1)) для k нечетных является отрезок линии, соединяющий точки (f (k), a (k) и (f (k + 1), a (k + 1)).

    Желательная амплитудная функция на частотах между парами точек (f (k) , f (k + 1)) для k четных не определена. Это переходные («плевать») регионы.

  • f и a одинаковая длина. Эта длина должна быть четным числом.

На этом рисунке показана взаимосвязь между f и a векторы при определении желаемой амплитудной характеристики.

Эта функция проектирует линейные фазовые фильтры типа I, II, III и IV. Типы I и II являются фильтрами по умолчанию, когда n является четным и нечетным, соответственно, в то время как 'hilbert' и 'differentiator' флаги образуют фильтры типа III (n является четным) и IV (n является нечетным). Различные типы фильтров имеют различные симметрии и ограничения на их частотные характеристики (подробнее см. [1]).

Тип фильтра линейной фазыПорядок фильтрацииСимметрия коэффициентовОтвет H (f), f = 0Ответ H (f), f = 1 (Найквист)

Тип I

Даже

b (k) = b (n + 2 k), k = 1,..., n + 1

Без ограничений

Без ограничений

Тип II

Странный

b (k) = b (n + 2 k), k = 1,..., n + 1

Без ограничений

H (1) = 0

Тип III

Даже

b (k) = b (n + 2 k), k = 1,..., n + 1

H (0) = 0

H (1) = 0

Тип IV

Странный

b (k) = b (n + 2 k), k = 1,..., n + 1

H (0) = 0

Без ограничений

Ссылки

[1] Оппенгейм, Алан В., Рональд В. Шефер и Джон Р. Бак. Дискретно-временная обработка сигналов. Река Верхнее Седло, Нью-Джерси: Прентис Холл, 1999.

[2] Парки, Томас В. и К. Сидни Беррус. Проектирование цифрового фильтра. Хобокен, Нью-Джерси: John Wiley & Sons, 1987, стр. 54-83.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

| | |

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