firpmord

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

Синтаксис

[n,fo,ao,w] = firpmord(f,a,dev)
[n,fo,ao,w] = firpmord(f,a,dev,fs)
c = firpmord(f,a,dev,fs,'cell')

Описание

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

  • f вектор ребер диапазона частот (между 0 и F s/2, где F s является частотой дискретизации), и a вектор, задающий желаемую амплитуду на полосах, заданных f. Длина f два меньше, чем дважды длина a. Желаемая функция является кусочной константой.

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

Используйте firpm с получившимся порядком n, вектор частоты fo, амплитудный вектор отклика ao, и веса w спроектировать фильтр b который приблизительно соответствует спецификациям, данным firpmord введите параметры fA, и dev.

b = firpm(n,fo,ao,w)

[n,fo,ao,w] = firpmord(f,a,dev,fs) задает частоту дискретизации fs. fs значения по умолчанию к 2 Гц, подразумевая частоту Найквиста 1 Гц. Можно поэтому задать ребра полосы, масштабируемые к частоте дискретизации конкретного приложения.

c = firpmord(f,a,dev,fs,'cell') генерирует массив ячеек, элементы которого являются параметрами к firpm.

Примечание

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

Примеры

свернуть все

Спроектируйте минимальный порядок фильтр lowpass с частотой среза полосы пропускания на 500 Гц и частотой среза полосы задерживания на 600 Гц. Задайте частоту дискретизации 2 000 Гц. Потребуйте по крайней мере 40 дБ затухания в полосе задерживания и меньше чем 3 дБ пульсации в полосе пропускания.

rp = 3;           % Passband ripple
rs = 40;          % Stopband ripple
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')

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

Спроектируйте фильтр lowpass с частотой среза полосы пропускания на 1 500 Гц и частотой среза полосы задерживания на 2 000 Гц. Задайте частоту дискретизации 8 000 Гц. Потребуйте максимальной амплитуды полосы задерживания 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)

Алгоритмы

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

Ссылки

[1] Rabiner, Лоуренс Р. и Отто Херрманн. “Предсказуемость Определенных Оптимальных Цифровых фильтров Конечной импульсной характеристики”. IEEE® Transactions на Теории Схемы. Издание 20, Номер 4, 1973, стр 401–408.

[2] Rabiner, Лоуренс Р. и Бернард Голд. Теория и Приложение Цифровой обработки сигналов. Englewood Cliffs, NJ: Prentice Hall, 1975, стр 156–157.

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

Смотрите также

| | | | |

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