Конечная импульсная характеристика или БИХ lowpass фильтр
The dsp.LowpassFilter
объект независимо фильтрует каждый канал входа с течением времени, используя данные проектные спецификации. Можно задать FilterType
свойство dsp.LowpassFilter
на 'FIR'
или 'IIR'
для реализации объекта в виде конечных импульсных характеристик или БИХ lowpass.
Чтобы фильтровать каждый канал вашего входа:
Создайте dsp.LowpassFilter
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
возвращает фильтр lowpass минимального порядка, LPF
= dsp.LowpassFilterLPF
, с настройками фильтра по умолчанию. Вызов объекта с настройками свойства по умолчанию фильтрует входные данные с частотой полосы пропускания 8
кГц, частота полосы 12
кГц, неравномерность в полосе пропускания 0.1
дБ и затухание в полосе задерживания 80
дБ.
возвращает lowpass с дополнительными свойствами, заданными одним или несколькими LPF
= dsp.LowpassFilter(Name,Value
)Name,Value
аргументы в виде пар. Name
- имя свойства и Value
- соответствующее значение. Name
должен находиться внутри одинарных кавычек (''). Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN
.
Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release
функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
SampleRate
- Входная частота выборки44100
(по умолчанию) | реальная положительная скалярная величинаВходная частота выборки в Гц, заданная как разделенная разделенными запятой парами, состоящая из 'SampleRate'
и настоящая положительная скалярная величина.
Типы данных: single
| double
FilterType
- Тип фильтра'FIR'
(по умолчанию) | 'IIR'
Тип фильтра, заданный как один из следующих опций:
'FIR'
- Объект проектирует КИХ lowpass фильтр.
'IIR'
- Объект проектирует фильтр lowpass (biquad) БИХ.
DesignForMinimumOrder
- проект фильтра минимального порядкаtrue
(по умолчанию) | false
Проект фильтра минимального порядка, заданная как разделенная разделенными запятой парами, состоящая из 'DesignForMinimumOrder'
и логическое значение. Если это свойство true
, затем dsp.LowpassFilter
проектирует фильтры с минимальным порядком, который удовлетворяет спецификациям по частоте полосы пропускания, частоте полосы остановки, неравномерности в полосе пропускания и затуханию в полосе задерживания. Установите эти спецификации с помощью соответствующих свойств. Если это свойство false
, затем объект проектирует фильтры с тем порядком, который вы задаете в FilterOrder
свойство. Это создание фильтра соответствует спецификациям частоты, неравномерности в полосе пропускания и затухания в полосе задерживания полосы пропускания, которые вы задаете используя соответствующие свойства.
FilterOrder
- Порядок фильтра конечной импульсной характеристики или БИХ50
(по умолчанию) | положительный целочисленный скалярПорядок фильтра конечной импульсной характеристики или БИХ, заданный как разделенная разделенными запятой парами, состоящая из 'FilterOrder'
и положительный целочисленный скаляр.
Установка порядка фильтра действительна только тогда, когда значение 'DesignForMinimumOrder'
является false
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
PassbandFrequency
- Частота ребра полосы пропускания фильтра8000
(по умолчанию) | реальная положительная скалярная величинаРебро полосы пропускания фильтра в Гц, заданная как разделенная разделенными запятой парами 'PassbandFrequency'
и настоящая положительная скалярная величина. Значение ребра полосы пропускания в Гц должно быть менее половины SampleRate
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StopbandFrequency
- Частота ребра стоповой полосы фильтра12000
(по умолчанию) | реальная положительная скалярная величинаФильтруйте частоту ребра стоповой полосы в Гц, заданную как разделенную разделенными запятой парами, состоящую из 'StopbandFrequency'
и настоящая положительная скалярная величина. Значение частоты ребра стоповой полосы в Гц должно быть меньше половины SampleRate
.
Вы можете задать частоту ребра полосы упора только при 'DesignForMinimumOrder'
является true
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
PassbandRipple
- Максимальная пульсация фильтра в полосе пропускания0.1
(по умолчанию) | реальная положительная скалярная величинаМаксимальная пульсация фильтра в полосе пропускания, в дБ, задается как разделенная разделенными запятой парами, состоящая из 'PassbandRipple'
и настоящая положительная скалярная величина. Максимальная пульсация фильтра по умолчанию равна 0.1
дБ.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StopbandAttenuation
- Минимальное ослабление в полосе упора80
(по умолчанию) | реальная положительная скалярная величинаМинимальное ослабление в диапазоне остановок в дБ, заданное как разделенная разделенными запятой парами, состоящая из 'StopbandAttenuation'
и настоящая положительная скалярная величина. Минимальное ослабление в полосе остановок по умолчанию равняется 80
дБ.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
RoundingMethod
- Метод округления для выходных операций с фиксированной точкой'Floor'
(по умолчанию) | 'Ceiling'
| 'Convergent'
| 'Nearest'
| 'Round'
| 'Simplest'
| 'Zero'
Метод округления для выходных операций с фиксированной точкой, заданный как вектор символов. Для получения дополнительной информации о режимах округления см. Раздел «Точность и область значений».
CoefficientsDataType
- Длина слова и дроби коэффициентовnumerictype(1,16)
(по умолчанию) | numerictype
объектДлина слова и дроби коэффициентов, заданная как numerictype
объект. Значение по умолчанию, numerictype(1,16)
соответствует объекту числового типа со знаком с 16-битными коэффициентами и длиной дроби, определенной на основе значений коэффициентов, чтобы получить максимально возможную точность.
Это свойство не настраивается.
Размер слова на выходе совпадает с размером слова на входе. Длина дроби выхода вычисляется таким образом, чтобы вся динамическая область значений выхода могла быть представлен без переполнения. Для получения дополнительной информации о том, как вычисляется длина дроби выхода, смотрите Правила точности по фиксированной точке для предотвращения переполнения в конечную импульсную характеристику фильтрах.
x
- Шумный вход данныхЗашумленные данные, заданный как вектор или матрица. Если входной сигнал является матрицей, каждый столбец матрицы рассматривается как независимый канал. Количество строк в входном сигнале обозначает длину канала. Этот объект принимает входы переменного размера. После того, как объект заблокирован, можно изменить размер каждого входного канала, но вы не можете изменить количество каналов.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
Поддержка комплексного числа: Да
y
- Отфильтрованный выходОтфильтрованный выход, возвращенный как вектор или матрица. Выход имеет тот же размер, тип данных и характеристики сложности, что и вход.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
Поддержка комплексного числа: Да
Чтобы использовать функцию объекта, задайте Системную object™ в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
dsp.LowpassFilter
freqz | Частотная характеристика фильтра в дискретном времени Системного объекта |
fvtool | Визуализация частотной характеристики фильтров DSP |
impz | Импульсная характеристика фильтра в дискретном времени Системного объекта |
info | Информация о фильтре Системный объект |
coeffs | Возвращает фильтрация коэффициентов системного объекта в структуре |
cost | Оценка стоимости реализации фильтра Системный объект |
grpdelay | Групповая задержка фильтра в дискретном времени Системного объекта |
generatehdl | Сгенерируйте HDL-код для квантованного DSP-фильтра (требует Filter Design HDL Coder) |
measure | Измерьте характеристики частотной характеристики фильтра Системного объекта |
Создайте фильтр конечной импульсной характеристики 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
Когда FilterType
для свойства задано значение 'FIR'
, а dsp.LowpassFilter
объект действует как конечная импульсная характеристика lowpass фильтр.
В этом строении dsp.LowpassFilter
является альтернативой использованию firceqrip
и firgr
с dsp.FIRFilter
. Этот объект конденсирует двухэтапный процесс в один. Для проекта минимального порядка объект использует обобщенный алгоритм Ремеза конечной импульсной характеристики создания фильтра. Для заданного проекта порядка объект использует ограниченный алгоритм equiripple конечной импульсной характеристики создания фильтра. Разработанный фильтр затем реализуется как линейный фазовый Type-1 фильтр с Direct form
структура. Вы можете использовать measure
чтобы убедиться, что проект соответствует предписанным спецификациям.
Когда FilterType
для свойства задано значение 'IIR'
, а dsp.LowpassFilter
объект действует как БИХ- lowpass фильтр. В этом строении объект использует метод эллиптического проектирования для вычисления SOS и значений шкалы, необходимых для соответствия спецификациям создания фильтра. Объект использует SOS и значения шкалы для настройки Direct form I
биквадратичный БИХ, который формирует базис БИХ dsp.LowpassFilter
Системный объект. Вы можете использовать measure
чтобы убедиться, что проект соответствует предписанным спецификациям.
[1] Шпак, Д. Дж., и А. Антониу. «Обобщенный метод Ремеза для проекта конечной импульсной характеристики цифровых фильтров». IEEE® Транзакции по схемам и системам. Том 37, Выпуск 2, Февраль 1990, стр. 161-174.
[2] Selesnick, I.W., and C. S. Burrus. «Алгоритмы обмена, которые дополняют алгоритм Паркса-Макклеллана для КИХ-фильтра линейной фазы проекта». Транзакции IEEE по схемам и системам. Vol. 44, Issue 2, Feb. 1997, pp. 137-143.
Указания и ограничения по применению:
Смотрите Системные объекты в Генерации кода MATLAB (MATLAB Coder).
Этот объект поддерживает генерацию кода для ARM® Кора®Процессоры -M и ARM Cortex-A. Для получения дополнительной информации о генерации кода ARM Cortex смотрите Code Generation для процессоров ARM Cortex-M и ARM Cortex-A.
Этот объект также поддерживает генерацию кода SIMD с использованием технологии Intel AVX2 в следующих условиях:
FilterType
установлено в 'FIR'
.
Входной сигнал имеет тип данных single
или double
.
Технология SIMD значительно повышает эффективность сгенерированного кода.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.