dsp. LowpassFilter

КИХ или БИХ lowpass фильтр

Описание

Объект dsp.LowpassFilter независимо фильтрует каждый канал входа в зависимости от времени с помощью данных спецификаций проекта. Можно установить свойство FilterType dsp.LowpassFilter к 'FIR' или 'IIR' реализовывать объект как КИХ или БИХ lowpass фильтр.

Отфильтровать каждый канал вашего входа:

  1. Создайте объект dsp.LowpassFilter и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

LPF = dsp.LowpassFilter
LPF = dsp.LowpassFilter(Name,Value)

Описание

LPF = dsp.LowpassFilter возвращает КИХ минимального заказа lowpass фильтр, LPF, с настройками фильтра по умолчанию. Вызов объекта с настройками свойства по умолчанию фильтрует входные данные с частотой полосы пропускания 8 kHz, частотой полосы задерживания 12 kHz, пульсации полосы пропускания дБ 0.1 и затухания полосы задерживания дБ 80.

пример

LPF = dsp.LowpassFilter(Name,Value) возвращает фильтр lowpass, с дополнительными свойствами, заданными одним или большим количеством аргументов пары Name,Value. Name является именем свойства, и Value является соответствующим значением. Имя должно находиться внутри одинарных кавычек (' '). Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN.

Свойства

развернуть все

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

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Введите частоту дискретизации в Гц, заданном как пара, разделенная запятой, состоящая из 'SampleRate' и действительной положительной скалярной величины.

Типы данных: single | double

Отфильтруйте тип, заданный как одна из следующих опций:

  • 'FIR' — Объект разрабатывает КИХ lowpass фильтр.

  • 'IIR' — Объект разрабатывает БИХ lowpass (biquad) фильтр.

Проект фильтра минимального заказа, заданный как пара, разделенная запятой, состоящая из 'DesignForMinimumOrder' и логического значения. Если этим свойством является true, то фильтры проектов dsp.LowpassFilter с минимальным заказом, который встречает частоте полосы пропускания, частоте полосы задерживания, пульсации полосы пропускания и спецификациям затухания полосы задерживания. Установите эти спецификации с помощью соответствующих свойств. Если этим свойством является false, то объектные фильтры проектов с порядком, который вы задаете в свойстве FilterOrder. Этот проект фильтра встречает частоте полосы пропускания, пульсации полосы пропускания и спецификациям затухания полосы задерживания, что вы устанавливаете использование соответствующих свойств.

Порядок КИХ или БИХ-фильтра, заданного как пара, разделенная запятой, состоящая из 'FilterOrder' и положительного целочисленного скаляра.

Зависимости

Определение порядка фильтра только допустимо, когда значением 'DesignForMinimumOrder' является false.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Отфильтруйте частоту ребра полосы пропускания в Гц, заданном как пара, разделенная запятой 'PassbandFrequency' и действительной положительной скалярной величины. Значение частоты ребра полосы пропускания в Гц должно быть меньше чем половиной SampleRate.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Отфильтруйте частоту ребра полосы задерживания в Гц, заданном как пара, разделенная запятой, состоящая из 'StopbandFrequency' и действительной положительной скалярной величины. Значение частоты ребра полосы задерживания в Гц должно быть меньше чем половиной SampleRate.

Зависимости

Можно задать частоту ребра полосы задерживания только, когда 'DesignForMinimumOrder' является true.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Максимальная пульсация ответа фильтра в полосе пропускания, в дБ, заданном как пара, разделенная запятой, состоящая из 'PassbandRipple' и действительной положительной скалярной величины. Максимальная пульсация значений по умолчанию ответа фильтра к дБ 0.1.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Минимальное затухание в полосе задерживания в дБ, заданном как пара, разделенная запятой, состоящая из 'StopbandAttenuation' и действительной положительной скалярной величины. Минимальное затухание в значениях по умолчанию полосы задерживания к дБ 80.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Свойства фиксированной точки

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

Word и дробные длины коэффициентов, заданных как объект numerictype. Значение по умолчанию, numerictype(1,16) соответствует числовому текстовому объекту со знаком с 16-битными коэффициентами и дробной длиной, определенной на основе содействующих значений, чтобы дать самую лучшую точность.

Это свойство не является настраиваемым.

Размер слова вывода - то же самое как размер слова входа. Дробная продолжительность вывода вычисляется таким образом, что целый динамический диапазон вывода может быть представлен без переполнения. Для получения дополнительной информации о том, как дробная продолжительность вывода вычисляется, см. Правила Точности Фиксированной точки для Предотвращения Переполнения в КИХ-Фильтрах.

Использование

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить Систему object™ алгоритм. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

y = LPF(x)

Описание

пример

y = LPF(x) lowpass фильтрует входной сигнал, x. y является lowpass-отфильтрованной версией x.

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

развернуть все

Шумный ввод данных, заданный как вектор или матрица. Если входной сигнал является матрицей, каждый столбец матрицы обработан как независимый канал. Количество строк во входном сигнале обозначает длину канала. Этот объект принимает входные параметры переменного размера. После того, как объект заблокирован, можно изменить размер каждого входного канала, но вы не можете изменить количество каналов.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

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

развернуть все

Фильтрованный выходной параметр, возвращенный как вектор или матрица. Вывод имеет тот же размер, тип данных и характеристики сложности как вход.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

freqzЧастотная характеристика фильтра
fvtoolВизуализируйте частотную характеристику фильтров DSP
impzИмпульсный ответ дискретного времени фильтрует Системный объект
infoИнформация о Системном объекте фильтра
coeffsОтфильтруйте коэффициенты
costОценка стоится за реализацию Системных объектов фильтра
grpdelayОтвет групповой задержки дискретного времени фильтрует Системный объект
generatehdlСгенерируйте HDL-код для квантованного фильтра DSP (требует Filter Design HDL Coder),
measureИзмерьте характеристики частотной характеристики Системного объекта фильтра
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

развернуть все

Создайте КИХ минимального заказа lowpass фильтр для данных, выбранных на уровне 44,1 кГц. Задайте частоту полосы пропускания 8 кГц, частоту полосы задерживания 12 кГц, пульсацию полосы пропускания 0,1 дБ и затухание полосы задерживания 80 дБ.

Fs = 44.1e3; 
filtertype = 'FIR';
Fpass = 8e3;
Fstop = 12e3; 
Rp = 0.1;
Astop = 80;
FIRLPF = dsp.LowpassFilter('SampleRate',Fs, ...
                             'FilterType',filtertype, ...
                             'PassbandFrequency',Fpass, ...
                             'StopbandFrequency',Fstop, ...
                             'PassbandRipple',Rp, ...
                             'StopbandAttenuation',Astop);

Разработайте БИХ минимального заказа lowpass фильтр с теми же свойствами как КИХ lowpass фильтр. Измените свойство FilterType клонированного фильтра к IIR.

IIRLPF = clone(FIRLPF);
IIRLPF.FilterType = 'IIR';

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

fvtool(FIRLPF,'Analysis','impulse')

Постройте импульсный ответ БИХ lowpass фильтр.

fvtool(IIRLPF,'Analysis','impulse')

Постройте значение и фазовый отклик КИХ lowpass фильтр.

fvtool(FIRLPF,'Analysis','freq')

Постройте значение и фазовый отклик БИХ lowpass фильтр.

fvtool(IIRLPF,'Analysis','freq')

Вычислите стоимость реализации КИХ lowpass фильтр.

cost(FIRLPF)
ans = struct with fields:
                  NumCoefficients: 39
                        NumStates: 38
    MultiplicationsPerInputSample: 39
          AdditionsPerInputSample: 38

Вычислите стоимость реализации БИХ lowpass фильтр. БИХ-фильтр более эффективен, чтобы реализовать, чем КИХ-фильтр.

cost(IIRLPF)
ans = struct with fields:
                  NumCoefficients: 18
                        NumStates: 14
    MultiplicationsPerInputSample: 18
          AdditionsPerInputSample: 14

Вычислите групповую задержку КИХ lowpass фильтр.

grpdelay(FIRLPF)

Вычислите групповую задержку БИХ lowpass фильтр. КИХ-фильтр имеет постоянную групповую задержку (линейная фаза), в то время как ее БИХ-дубликат не делает.

grpdelay(IIRLPF)

Создайте фильтр lowpass со свойствами по умолчанию.

LPF = dsp.LowpassFilter;

Создайте спектр объект анализатора.

hSA = dsp.SpectrumAnalyzer('SampleRate',44.1e3,...
    'PlotAsTwoSidedSpectrum',false,'ShowLegend',true,'YLimits',...
           [-150 30],...
           'Title',...
           'Input Signal and Output Signal of Lowpass Filter');
hSA.ChannelNames = {'Input','Output'};

Реализуйте step на LPF, чтобы отфильтровать белый Гауссов шумный входной сигнал. Просмотрите сигналы ввода и вывода с помощью спектра анализатор.

for k = 1:100
    Input = randn(1024,1);

    Output = step(LPF,Input);

    step(hSA,[Input,Output]);
end

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным синтаксисом step. Например, myObject (x) становится шагом (myObject, x).

Настройте БИХ lowpass фильтр. Уровень выборки белого Гауссова шума составляет 44 100 Гц. Частота полосы пропускания фильтра составляет 8 кГц, частота полосы задерживания составляет 12 кГц, пульсация полосы пропускания составляет 0,1 дБ, и затухание полосы задерживания составляет 80 дБ.

Fs = 44.1e3;
filtertype = 'IIR';
Fpass = 8e3;
Fstop = 12e3;
Rp = 0.1;
Astop = 80;
LPF = dsp.LowpassFilter('SampleRate',Fs,...
                             'FilterType',filtertype,...
                             'PassbandFrequency',Fpass,...
                             'StopbandFrequency',Fstop,...
                             'PassbandRipple',Rp,...
                             'StopbandAttenuation',Astop);

Просмотрите ответ значения фильтра lowpass.

fvtool(LPF)

Создайте спектр объект анализатора.

hSA = dsp.SpectrumAnalyzer('SampleRate',44.1e3,...
    'PlotAsTwoSidedSpectrum',false,'ShowLegend',true,'YLimits',...
           [-150 30],...
           'Title',...
           'Input Signal and Output Signal of IIR Lowpass Filter');
hSA.ChannelNames = {'Input','Output'};

Отфильтруйте белый Гауссов шумный входной сигнал. Просмотрите сигналы ввода и вывода с помощью спектра анализатор.

for k = 1:100
    Input = randn(1024,1);

    Output = LPF(Input);

    hSA([Input,Output]);
end

Измерьте характеристики частотной характеристики фильтра lowpass. Создайте Системный объект dsp.LowpassFilter со свойствами по умолчанию. Измерьте характеристики частотной характеристики фильтра.

LPF = dsp.LowpassFilter
LPF = 
  dsp.LowpassFilter with properties:

               FilterType: 'FIR'
    DesignForMinimumOrder: true
        PassbandFrequency: 8000
        StopbandFrequency: 12000
           PassbandRipple: 0.1000
      StopbandAttenuation: 80
               SampleRate: 44100

  Show all properties

LPFMeas = measure(LPF)
LPFMeas = 
Sample Rate      : 44.1 kHz  
Passband Edge    : 8 kHz     
3-dB Point       : 9.1311 kHz
6-dB Point       : 9.5723 kHz
Stopband Edge    : 12 kHz    
Passband Ripple  : 0.08289 dB
Stopband Atten.  : 81.6141 dB
Transition Width : 4 kHz     
 

Алгоритмы

развернуть все

Ссылки

[1] Shpak, D.J., и А. Антонайоу. "Обобщенный метод Remez для проекта КИХ цифровые фильтры". IEEE® Transactions на Схемах и Системах. Издание 37, Выпуск 2, февраль 1990, стр 161–174.

[2] Selesnick, I.W., и К. С. Беррус. "Алгоритмы Exchange, которые дополняют алгоритм Парков-McClellan для КИХ-проекта фильтра линейной фазы". Транзакции IEEE на Схемах и Системах. Издание 44, Выпуск 2, февраль 1997, стр 137–143.

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

Преобразование фиксированной точки
Преобразуйте алгоритмы с плавающей точкой в фиксированную точку с помощью Fixed-Point Designer™.

Представленный в R2015a