firls

Создание КИХ-фильтра линейной фазы наименьших квадратов

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

Спроектируйте конечную импульсную характеристику lowpass фильтр порядка 255 с переходной областью между 0.25π и 0.3π. Использование 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.

Проектируйте конечную импульсную характеристику lowpass фильтр. Диапазон пропускания областей значений от постоянного тока до 0.45π рад/образец. Диапазон пробок колеблется от 0.55π рад/выборка на частоту Найквиста. Создайте три различных проекта, изменяя веса полос в метод наименьших квадратов.

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

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 (Nyquist)

Тип I

Даже

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

Никаких ограничений

Никаких ограничений

Тип II

Странный

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

Никаких ограничений

H (1) = 0

Тип III

Даже

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

H (0) = 0

H (1) = 0

Тип IV

Странный

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

H (0) = 0

Никаких ограничений

Ссылки

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Обработка сигнала в дискретном времени. Верхняя Седл-Ривер, Нью-Джерси: Prentice Hall, 1999.

[2] Parks, Thomas W., and C. Sidney Burrus. Создание цифровых фильтров. Hoboken, NJ: John Wiley & Sons, 1987, pp. 54-83.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

| | |

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