kaiserord

Оценка параметров оконного КИХ-фильтра Кайзера

Описание

[n,Wn,beta,ftype] = kaiserord(f,a,dev) возвращает порядка фильтра n, нормированные ребра диапазона частот Wn, и масштабный фактор beta это задает окно Кайзера для использования с fir1 функция. Чтобы спроектировать КИХ фильтруют b это приблизительно выполняет техническим требованиям, данным fA, и dev, используйте b = fir1(n,Wn,kaiser(n+1,beta),ftype,'noscale').

пример

[n,Wn,beta,ftype] = kaiserord(f,a,dev,fs) использует частоту дискретизации fs в Гц.

пример

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

Примеры

свернуть все

Спроектируйте фильтр lowpass с полосой пропускания, заданной от 0 до 1 кГц и полосой задерживания, заданной от 1 500 Гц до 4 кГц. Задайте неравномерность в полосе пропускания 5% и затухание в полосе задерживания 40 дБ.

fsamp = 8000;
fcuts = [1000 1500];
mags = [1 0];
devs = [0.05 0.01];

[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

freqz(hh,1,1024,fsamp)

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

Спроектируйте полосовой фильтр нечетной длины. Обратите внимание на то, что нечетные средние значения длины даже заказывают, таким образом, вход к fir1 должно быть ровное целое число.

fsamp = 8000;
fcuts = [1000 1300 2210 2410];
mags = [0 1 0];
devs = [0.01 0.05 0.01];

[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
n = n + rem(n,2);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

[H,f] = freqz(hh,1,1024,fsamp);
plot(f,abs(H))
grid

Figure contains an axes object. The axes object contains an object of type line.

Спроектируйте фильтр lowpass с сокращением полосы пропускания 1 500 Гц, сокращением полосы задерживания 2 000 Гц, неравномерностью в полосе пропускания 0,01, пульсацией полосы задерживания 0,1 и частотой дискретизации 8 000 Гц. Спроектируйте эквивалентный фильтр с помощью 'cell' опция.

fs = 8000;
[n,Wn,beta,ftype] = kaiserord([1500 2000],[1 0],...
    [0.01 0.1],fs);
b = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

c = kaiserord([1500 2000],[1 0],[0.01 0.1],fs,'cell');
bcell = fir1(c{:});

hfvt = fvtool(b,1,bcell,1,'Fs',fs);
legend(hfvt,'b','bcell')

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

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

свернуть все

Ребра полосы в виде вектора. Длина f 2*length(a)-2.

Амплитуда полосы в виде вектора. Амплитуда задана на полосах, заданных f. Вместе, f и a задайте кусочно-постоянную функцию отклика.

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

Частота дискретизации в виде положительной скалярной величины, измеренной в Гц. Если вы не задаете аргумент fs, или если вы задаете его как пустой вектор [], значения по умолчанию частоты дискретизации к 2 Гц и частота Найквиста составляют 1 Гц. Используйте этот синтаксис, чтобы задать ребра полосы, масштабируемые к частоте дискретизации конкретного приложения. Ребра диапазона частот в f должен быть от 0 до fs/2.

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

свернуть все

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

Нормированные ребра диапазона частот, возвращенные как вектор действительных чисел.

Масштабный фактор, возвращенный как положительный действительный скаляр. Параметр beta влияет на затухание бокового лепестка преобразования Фурье окна.

Отфильтруйте тип, предназначенный для использования с fir1, возвращенный как:

  • 'low' — фильтр lowpass с частотой среза Wn.

  • 'high' — highpass фильтруют с частотой среза Wn.

  • 'bandpass' — полосовой фильтр, если Wn двухэлементный вектор.

  • 'stop' — заграждающий фильтр, если Wn двухэлементный вектор.

  • 'DC-0' — первая полоса многополосного фильтра является полосой задерживания.

  • 'DC-1' — первая полоса многополосного фильтра является полосой пропускания.

КИХ-параметры, возвращенные как массив ячеек.

Советы

  • Старайтесь различать значения длины фильтра и порядка фильтра. Длина фильтра является количеством выборок импульсной характеристики в КИХ-фильтре. Обычно импульсная характеристика индексируется от n = 0 к n = L – 1, где L является длиной фильтра. Порядок фильтра является самой высокой степенью в представлении Z-преобразования фильтра. Для КИХ-передаточной функции это представление является полиномом в z, где самой высокой степенью является zL–1 и самой низкой степенью является z0. Порядок фильтра является тем меньше, чем длина (L – 1) и также равен количеству нулей полинома z.

  • Если, в векторном dev, вы задаете неравные отклонения через полосы, минимальное заданное отклонение используется, поскольку метод окна Кайзера ограничивается произвести фильтры с минимальным отклонением во всех полосах.

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

  • Результаты неточны, если частоты среза близки 0 или частота Найквиста, или если dev является большим (больше, чем 10%).

Алгоритмы

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

kaiserord использование опытным путем вывело формулы для оценки порядков фильтров lowpass, а также дифференциаторов и Гильбертовых трансформаторов. Оценки для многополосных фильтров (таких как полосовые фильтры) выведены из формул проекта lowpass.

Формулы проекта, которые лежат в основе окна Кайзера и его приложения к КИХ-созданию фильтра,

β={0.1102(α8.7),α>500.5842(α21)0.4+0.07886(α21),21α500,α<21

где α = –20log10δ является затуханием в полосе задерживания, описанным в децибелах, и

n=α7.952.285(Δω)

где n является порядком фильтра, и Δω является шириной самой маленькой области перехода.

Ссылки

[1] Комитет по Цифровой обработке сигналов Акустики IEEE, Речи и Общества Обработки сигналов, редакторы Выбрали Papers in Digital Signal Processing. Издание II. Нью-Йорк: Нажатие IEEE, 1976.

[2] Кайзер, Джеймс Ф. “Нерекурсивное Создание цифровых фильтров Используя Функцию Окна I0-Sinh”. Продолжения 1 974 IEEE Международный Симпозиум по Схемам и Системам. 1974, стр 20–23.

[3] Оппенхейм, Алан V, Рональд В. Шафер и Джон Р. Бак. Обработка сигналов дискретного времени. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1999.

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

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

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

| |

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