firls

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

Описание

пример

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

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

пример

b = firls(n,f,a,ftype) задает тип фильтра, где ftype является:

  • 'hilbert'

  • 'differentiator'

b = firls(n,f,a,w,ftype) использует веса в векторных w для взвешивания ошибки. Он также задает тип фильтра, где ftype является:

  • 'hilbert'

  • 'differentiator'

Примеры

свернуть все

Ниже показано, как спроектировать lowpass порядка 225 с переходной полосой.

Создайте векторы частоты и амплитуды, f и a.

f = [0 0.25 0.3 1]
f = 1×4

         0    0.2500    0.3000    1.0000

a = [1 1 0 0]
a = 1×4

     1     1     0     0

Использование firls для получения n+1 коэффициенты порядка n lowpass конечная импульсная характеристика фильтр.

b = firls(255,f,a);

Покажите импульсную характеристику фильтра

fvtool(b,'impulse')

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

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

Создайте векторы частоты и амплитуды, f и a.

f = [0 0.3 0.4 0.6 0.7 0.9];
a = [0 1 0 0 0.5 0.5];

Использование firls для получения 25 коэффициентов фильтра.

b = firls(24,f,a,'hilbert');

Постройте график идеальной амплитудной характеристики наряду с переходными областями.

plot(f.*pi,a,'o','markerfacecolor',[1 0 0]);
hold on;
plot(f.*pi,a,'r--','linewidth',2);

Figure contains an axes. The axes contains 2 objects of type line.

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

[H,F] = freqz(b,1);
plot(F,abs(H));
set(gca,'xlim',[0 pi])
legend('Filter Specification','Transition Regions','Magnitude Response')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Filter Specification, Transition Regions, Magnitude Response.

Входные параметры

свернуть все

Порядок фильтра, заданный как целочисленный скаляр. Для нечетных порядков частотная характеристика на частоте Найквиста обязательно равна 0. По этой причине firls всегда использует четный порядок фильтра для строений с полосой пропускания на частоте Nyquist. Если вы задаете нечетное n, firls увеличивает его на 1.

Пример: 8

Типы данных: int8 | int16 | int32 | int64

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

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

Пример: [0 0.3 0.4 1]

Типы данных: double | single

Амплитудные значения функции в каждой частотной точке, заданные как вектор той же длины, что и f. Эта длина должна быть четным числом.

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

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

Пример: [1 1 0 0]

Типы данных: double | single

Веса для взвешивания подгонки для каждой полосы частот, заданные как вектор длины вдвое меньше длины f и a, так что на полосу приходится только один вес. w указывает, какой акцент следует делать на минимизации интегральной квадратичной невязки в каждой полосе по сравнению с другими полосами.

Пример: [0.5 1]

Типы данных: double | single

Тип фильтра, заданный как 'hilbert' или 'differentiator'.

Пример: «гильберт»

Типы данных: char

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

свернуть все

Фильтруйте коэффициенты, возвращенные как числовой вектор n+1 значений, где n - порядок фильтра.

b = firls(n,f,a) проектирует линейно-фазовый фильтр типа I (n нечетный) и тип II (n) . Коэффициенты выхода, или «отводы», в b подчиниться отношению:

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

b = firls(n,f,a,'hilbert') проектирует линейно-фазовый фильтр с нечетной симметрией (тип III и тип IV). Коэффициенты выхода, или «отводы», в b подчиниться отношению:

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

b = firls(n,f,a,'differentiator') проектирует фильтры типа III и типа IV, применяя специальный метод взвешивания. Для ненулевых полос амплитуд интегрированная квадратичная невязка имеет вес (1/f)2. Это взвешивание заставляет ошибку на низких частотах быть намного меньше, чем на высоких частотах. Для конечной импульсной характеристики дифференциаторов, которые имеют амплитудную характеристику, пропорциональную частоте, фильтры минимизируют относительную интегрированную квадратичную невязку. Это значение является интегралом квадрата отношения ошибки к желаемой амплитуде.

Подробнее о

свернуть все

Диагностика

Ошибки и предупреждающие сообщения

Одно из следующих диагностических сообщений отображается при использовании неправильного аргумента:

F must be even length.
F and A must be equal lengths.
Requires symmetry to be 'hilbert' or 'differentiator'.
Requires one weight per band.
Frequencies in F must be nondecreasing.
Frequencies in F must be in range [0,1].

Более серьезное предупреждающее сообщение

Warning: Matrix is close to singular or badly scaled.

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

Алгоритмы

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

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

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

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

Тип 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] Parks, T.W., and C.S. Burrus, Digital Filter Design, John Wiley & Sons, 1987, pp. 54-83.

[2] Oppenheim, A.V., and R.W. Schafer, Discrete-Time Signal Processing, Prentice Hall, 1989, pp. 256-266.

См. также

| | |

Введенный в R2011a