firpmord

Оценка порядка оптимального КИХ-фильтра Parks-McClellan

Описание

[n,fo,ao,w] = firpmord(f,a,dev) возвращает приблизительный порядок n, нормированные ребра полосы частот fo, амплитуды полосы частот ao, и веса w которые соответствуют входным спецификациям f, a, и dev.

пример

[___] = firpmord(___,fs) задает частоту дискретизации fs. fs по умолчанию составляет 2 Гц, что подразумевает частоту Найквиста 1 Гц. Можно задать края полосы пропускания, масштабированные до частоты дискретизации конкретного приложения. Вы можете использовать это с любым из предыдущих входных синтаксисов.

пример

c = firpmord(___,'cell') возвращает массив ячеек c элементы которого являются параметрами, для firpm.

Примеры

свернуть все

Проектируйте lowpass минимального порядка с частотой отключения полосы пропускания 500 Гц и частотой отключения полосы отключения 600 Гц. Задайте частоту дискретизации 2000 Гц. Требуется, по меньшей мере, 40 дБ ослабления в полосе упора и менее 3 дБ ряби в полосе пропускания.

rp = 3;           % Passband ripple in dB 
rs = 40;          % Stopband ripple in dB
fs = 2000;        % Sampling frequency
f = [500 600];    % Cutoff frequencies
a = [1 0];        % Desired amplitudes

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

dev = [(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)]; 
[n,fo,ao,w] = firpmord(f,a,dev,fs);
b = firpm(n,fo,ao,w);
freqz(b,1,1024,fs)
title('Lowpass Filter Designed to Specifications')

Figure contains 2 axes. Axes 1 with title Lowpass Filter Designed to Specifications contains an object of type line. Axes 2 contains an object of type line.

Фильтр немного не удовлетворяет спецификациям затухания в полосе задерживания и неравномерности в полосе пропускания. Использование n+1 вместо n в вызове firpm достигает желаемых амплитудных характеристик.

Проектируйте lowpass с частотой отключения полосы пропускания 1500 Гц и частотой отключения полосы пропускания 2000 Гц. Задайте частоту дискретизации 8000 Гц. Требуйте максимальную амплитуду полосы упора 0,1 и максимальную ошибку полосы пропускания (пульсацию) 0,01.

[n,fo,ao,w] = firpmord([1500 2000],[1 0],[0.01 0.1],8000);
b = firpm(n,fo,ao,w);

Получите эквивалентный результат путем firpmord сгенерировать массив ячеек. Визуализируйте частотную характеристику фильтра.

c = firpmord([1500 2000],[1 0],[0.01 0.1],8000,'cell');
B = firpm(c{:});
freqz(B,1,1024,8000)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

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

свернуть все

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

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

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

Частота дискретизации, заданная как действительный скаляр.

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

свернуть все

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

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

Амплитудная характеристика, возвращенная как действительный вектор.

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

Параметры конечной импульсной характеристики, возвращенные как массив ячеек.

Алгоритмы

firpmord использует алгоритм, предложенный в [1]. Эта функция производит неточные результаты для ребер полосы, близких или к 0, или к частоте Найквиста, fs/2.

Примечание

В некоторых случаях firpmord занижает или переоценивает порядок n. Если фильтр не соответствует спецификациям, попробуйте более высокий порядок, например n+1 или n+2.

Ссылки

[1] Рабинер, Лоуренс Р. и Отто Херрманн. «Предсказуемость некоторых оптимальных цифровых фильтров с конечной импульсной характеристикой». IEEE® Транзакции по теории цепей. Том 20, № 4, 1973, с. 401-408.

[2] Рабинер, Лоуренс Р. и Бернард Голд. Теория и применение цифровой обработки сигналов. Englewood Cliffs, Нью-Джерси: Prentice Hall, 1975, pp . 156-157.

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

.

См. также

| | | | |

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