kaiserord

КИХ окна Kaiser фильтрует параметры оценки проекта

Синтаксис

[n,Wn,beta,ftype] = kaiserord(f,a,dev)
[n,Wn,beta,ftype] = kaiserord(f,a,dev,fs)
c = kaiserord(f,a,dev,fs,'cell')

Описание

[n,Wn,beta,ftype] = kaiserord(f,a,dev) возвращается фильтр заказывают n, нормированным ребрам диапазона частот Wn и форм-фактор beta, которые задают окно Kaiser для использования с функцией fir1. Чтобы разработать КИХ фильтруют b, который приблизительно соответствует спецификациям, данным f, a и 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 является двухэлементным вектором.

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

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

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

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

Советы

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

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

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

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

Алгоритмы

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

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

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

β={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