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)

Спроектируйте полосовой фильтр нечетной длины. Обратите внимание на то, что нечетные средние значения длины даже заказывают, таким образом, вход к 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

Спроектируйте фильтр 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')

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

свернуть все

Ребра полосы, заданные как вектор. Длина 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, где самой высокой степенью является z, L –1 и самой низкой степенью является z 0. Порядок фильтра является тем меньше, чем длина (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] Кайзер, Джеймс Ф. “Нерекурсивное Создание цифровых фильтров Используя Функцию Окна I0-sinh”. Продолжения 1 974 IEEE Международный Симпозиум по Схемам и Системам. 1974, стр 20–23.

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

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

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

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

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

| |

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