Объект спецификации создания фильтра
Используйте fdesign
функция для создания объекта спецификации создания фильтра, который содержит спецификации для фильтра, такие как неравномерности в полосе пропускания, затухание в полосе задерживания и порядок фильтра. Затем используйте design
функция для разработки фильтра из объекта спецификаций создания фильтра. Для получения примера смотрите Проект Lowpass Decimator.
Вот схема рабочего процесса, которая показывает простую процедуру разработки, анализа и, наконец, применения фильтра к потоковым данным.
Дополнительные опции управления см. в разделе Процедура создании фильтра. Полный рабочий процесс см. в проекте фильтра в Fdesign - Обзор процесса.
возвращает объект спецификации проекта для фильтра с заданным designSpecs
= fdesign.response
.response
задает используемые переменные, определяющие создание фильтра. Параметры создания фильтра применяются к методу создания фильтра, который вы выбираете для вашего фильтра. Выбранная опция спецификации определяет, какие методы проекта применяются к designSpecs
= fdesign.response
(spec
)fdesign
объект.
задает частоту дискретизации в Гц для использования в спецификациях фильтра. Скаляр скорости дискретизации должен быть последним входным параметром. Если вы задаете частоту дискретизации, все частотные спецификации находятся в Гц.designSpecs
= fdesign.response
(___,Fs
)
задает модули для любой спецификации, заданной в входных параметрах.designSpecs
= fdesign.response
(___,magunits
)
Создайте 100-таповую конечную импульсную характеристику lowpass дециматорный фильтр, который уменьшает частоту дискретизации сигнала с 60 кГц до 20 кГц. Ширина полосы пропускания фильтра составляет до 6 кГц. Задайте неравномерность в полосе пропускания 0,01 дБ и затухание в полосе задерживания 100 дБ.
Fs = 60e3; N = 99; Fpass = 6e3; Apass = 0.01; Astop = 100; M = Fs/20e3;
Настройте объект спецификаций создания фильтра с помощью fdesign.decimator
функция.
filtSpecs = fdesign.decimator(M,'lowpass','N,Fp,Ap,Ast',N,Fpass,Apass,Astop,Fs);
Спроектируйте конечную импульсную характеристику lowpass дециматор, используя design
функция.
Получившийся фильтр является dsp.FIRDecimator
Системные object™. Для получения дополнительной информации о том, как применить этот фильтр к потоковым данным, см. dsp.FIRDecimator
.
decimFIR = design(filtSpecs,'SystemObject',true)
decimFIR = dsp.FIRDecimator with properties: NumeratorSource: 'Property' Numerator: [1x100 double] DecimationFactor: 3 Structure: 'Direct form' Show all properties
Использование info
отображение информации о фильтре.
info(decimFIR)
ans = 10x56 char array
'Discrete-Time FIR Multirate Filter (real) '
'----------------------------------------- '
'Filter Structure : Direct-Form FIR Polyphase Decimator'
'Decimation Factor : 3 '
'Polyphase Length : 34 '
'Filter Length : 100 '
'Stable : Yes '
'Linear Phase : Yes (Type 2) '
' '
'Arithmetic : double '
Визуализируйте величину ответ фильтра с помощью fvtool
.
fvtool(decimFIR,'Fs',Fs)
Разработайте lowpass для использования на сигнале, дискретизированном с частотой 96 кГц. Ширина полосы пропускания фильтра составляет до 20 кГц. Диапазон остановки фильтра начинается с 24 кГц. Задайте неравномерность в полосе пропускания 0,01 дБ и затухание в полосе задерживания 80 дБ. Автоматическое определение порядка, необходимого для соответствия спецификациям.
Настройте объект спецификаций создания фильтра с помощью fdesign.lowpass
функция.
Fs = 96e3; Fpass = 20e3; Fstop = 24e3; Apass = 0.01; Astop = 80; filtSpecs = fdesign.lowpass(Fpass,Fstop,Apass,Astop,Fs);
Определите доступные алгоритмы проекта, используя designmethods
функция.
designmethods(filtSpecs,'SystemObject',true)
Design Methods that support System objects for class fdesign.lowpass (Fp,Fst,Ap,Ast): butter cheby1 cheby2 ellip equiripple ifir kaiserwin multistage
Использование design
функция, проектируйте фильтр конечной импульсной характеристики equiripple и эллиптический БИХ фильтр, которые соответствуют спецификациям.
lpFIR = design(filtSpecs,'equiripple','SystemObject',true)
lpFIR = dsp.FIRFilter with properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [1x101 double] InitialConditions: 0 Show all properties
lpIIR = design(filtSpecs,'ellip','SystemObject',true)
lpIIR = dsp.BiquadFilter with properties: Structure: 'Direct form II' SOSMatrixSource: 'Property' SOSMatrix: [5x6 double] ScaleValues: [6x1 double] InitialConditions: 0 OptimizeUnityScaleValues: true Show all properties
Можно также measure
проекты, чтобы убедиться, что фильтры удовлетворяют ограничениям.
FIRmeas = measure(lpFIR)
FIRmeas = Sample Rate : 96 kHz Passband Edge : 20 kHz 3-dB Point : 21.4297 kHz 6-dB Point : 21.8447 kHz Stopband Edge : 24 kHz Passband Ripple : 0.0092309 dB Stopband Atten. : 80.6014 dB Transition Width : 4 kHz
IIRmeas = measure(lpIIR)
IIRmeas = Sample Rate : 96 kHz Passband Edge : 20 kHz 3-dB Point : 20.5524 kHz 6-dB Point : 20.7138 kHz Stopband Edge : 24 kHz Passband Ripple : 0.01 dB Stopband Atten. : 80 dB Transition Width : 4 kHz
Оцените и отобразите вычислительные cost
каждого фильтра. Фильтр конечной импульсной характеристики equiripple требует намного больше коэффициентов, чем фильтр эллиптического БИХ.
FIRcost = cost(lpFIR)
FIRcost = struct with fields:
NumCoefficients: 101
NumStates: 100
MultiplicationsPerInputSample: 101
AdditionsPerInputSample: 100
IIRcost = cost(lpIIR)
IIRcost = struct with fields:
NumCoefficients: 20
NumStates: 10
MultiplicationsPerInputSample: 20
AdditionsPerInputSample: 20
Использование fvtool
функция, чтобы визуализировать получившиеся проекты и сравнить их свойства.
fvtool(lpFIR,lpIIR,'Fs',Fs); legend('FIR Equiripple','Elliptic IIR')
Создайте lowpass фильтр Баттерворта, который имеет частоту ребра полосы пропускания рад/выборка, частота в полосе остановок рад/образец, неравномерность в полосе пропускания 1 дБ и затухание в полосе задерживания 80 дБ.
Создайте lowpass
отфильтровать объект спецификации проекта с помощью fdesign.lowpass
функция. Задайте расчётные параметры.
lowpassSpecs = fdesign.lowpass(0.4,0.5,1,80);
Чтобы просмотреть список методов проекта, доступных для объекта спецификации, используйте designmethods
функция. Если доступно несколько методов, выберите метод, который наилучшим образом соответствует критериям проекта. В данном примере выберите 'butter'
.
designmethods(lowpassSpecs,'SystemObject',true)
Design Methods that support System objects for class fdesign.lowpass (Fp,Fst,Ap,Ast): butter cheby1 cheby2 ellip equiripple ifir kaiserwin multistage
Кроме того, можно задать опции проекта, используемые при разработке фильтра. Чтобы увидеть список доступных опций, запустите designoptions
функция на lowpassSpecs
. Опции проекта зависят от выбранного метода проектирования. Метод проекта, в этом случае, 'butter'
, должен быть задан как аргумент для designoptions
функция.
designoptions(lowpassSpecs,'butter','Systemobject',true)
ans = struct with fields:
FilterStructure: {1x6 cell}
SOSScaleNorm: 'ustring'
SOSScaleOpts: 'fdopts.sosscaling'
MatchExactly: {'passband' 'stopband'}
DefaultFilterStructure: 'df2sos'
DefaultMatchExactly: 'stopband'
DefaultSOSScaleNorm: ''
DefaultSOSScaleOpts: [1x1 fdopts.sosscaling]
Порядок фильтра, необходимый для соответствия набору проекта ограничений, также должен быть округлен до целого значения. Это ослабляет некоторые ограничения, и, как следствие, некоторые проекты спецификации выполняются, в то время как другие превышены. The 'MatchExactly'
опция позволяет вам точно соответствовать полосе пропускания или полосе остановки при превышении спецификации для другой полосы пропускания. Спроектируйте фильтр так, чтобы он точно совпадал с полосой пропускания.
Получившийся фильтр является dsp.BiquadFiter
Системные object™. Для получения дополнительной информации о том, как применить этот фильтр к потоковым данным, см. dsp.BiquadFilter
.
IIRbutter = design(lowpassSpecs,'butter','MatchExactly','passband', ... 'SystemObject',true)
IIRbutter = dsp.BiquadFilter with properties: Structure: 'Direct form II' SOSMatrixSource: 'Property' SOSMatrix: [16x6 double] ScaleValues: [17x1 double] InitialConditions: 0 OptimizeUnityScaleValues: true Show all properties
Использование fvtool
для визуализации амплитудной характеристики фильтра.
fvtool(IIRbutter)
response
- Желаемая реакция фильтраТаблица задает возможные ответы фильтра.
Метод отклика fdesign | Описание |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Используйте doc fdesign.
response
синтаксис в подсказке MATLAB для получения справки по определенной структуре. Для примера эта команда предоставляет дополнительные сведения об объекте спецификации lowpass:
doc fdesign.lowpass
Каждый response
имеет Specification
свойство, которое определяет спецификации, используемые для разработки фильтра. Можно использовать значения по умолчанию или задать Specification
свойство при построении объекта спецификаций.
Использование Specification
свойство, можно задать ограничения фильтра, такие как порядок фильтра или ослабление полосы пропускания, которые будут использоваться при построении фильтра из объекта спецификации.
spec
- спецификации к созданию фильтраСоздания фильтра, заданные как вектор символов. Набор доступных опций спецификации зависит от fdesign.
функция. Для получения дополнительной информации обратитесь к индивидууму response
fdesign.
страниц.response
Создание фильтра основано на спецификациях, предоставленных fdesign.
объект. Для примера, когда вы создаете lowpass по умолчанию создания фильтра объект спецификации, response
fdesign.lowpass
, выражение спецификации установлено в 'Fp,Fst,Ap,Ast'
. Параметры создания фильтра - Fp
(частота полосы пропускания), Fst
(частота полосы упора), Ap
(пульсация полосы пропускания), и Ast
(ослабление полосы остановок) - устанавливаются значения по умолчанию. design
функция проектирует фильтр на основе этих параметров.
Спецификации, которые не содержат порядок фильтра, приводят к проектам минимального порядка при вызове design
функция:
d = fdesign.lowpass; % Specification is 'Fp,Fst,Ap,Ast' FIReq = design(d,'equiripple','SystemObject',true); length(FIReq.Numerator) % Returns 43. The filter order is 42
Выбранная опция спецификации определяет, какие методы проекта применяются. Вы можете использовать setspecs
функция для одновременной установки всех спецификаций.
Можно задать значения спецификаций фильтра, передав их после Specification
аргумент, или путем передачи значений без Specification
.
Конструкторы объектов Filter берут входные параметры в том же порядке, что и setspecs
и Specification
.
Когда первый вход в fdesign.
не является допустимым response
Specification
опция, fdesign
принимает, что входной параметр является спецификацией фильтра, и применяет его с помощью Specification
по умолчанию опция. Для примера,
'Fp,Fst,Ap,Ast'
является значением по умолчанию для объекта lowpass.
Fs
- Частота дискретизацииЧастота дискретизации для использования в спецификациях фильтра, заданная в Гц. Скаляр скорости дискретизации должен быть последним входным параметром. Если вы задаете частоту дискретизации, все частотные спецификации находятся в Гц.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
magunits
- Модули измерения для спецификации величины'dB'
(по умолчанию) | 'linear'
| 'squared'
Модули измерения для спецификации величины, заданные как:
'dB'
-- децибелы
'linear'
-- линейные модули
'squared'
- силовые модули
Когда вы опускаете magunits
аргумент, fdesign
принимает, что все величины указаны в дБ. Обратите внимание, что fdesign
хранит все спецификации величины в дБ. Если вы задаете magunits
на опцию, отличную от 'dB'
, функция преобразует модуль в 'dB'
.
designSpecs
- Объект спецификации создания фильтраfdesign. response
объектfdesign
возвращает объект спецификации создания фильтра. Каждый объект спецификации создания фильтра имеет следующие свойства:
Имя свойства | Значение по умолчанию | Описание |
---|---|---|
| Зависит от выбранного типа | Определяет тип проектируемого фильтра, такого как интерполятор или полосно-пропускающий фильтр. Это значение доступно только для чтения. |
| Зависит от выбранного типа | Задает характеристики фильтра, используемые для определения требуемой эффективности фильтра, например частоту отключения |
| Зависит от выбранного типа фильтра | Содержит описание спецификаций фильтра, используемых для определения объекта, и спецификаций фильтра, используемых при создании фильтра из объекта. Это значение доступно только для чтения. |
| Логический | Определяет, использует ли вычисление фильтра нормированную частоту от 0 до 1 или частоту, полосу от 0 до Fs/2, частоту дискретизации. Принимает либо |
В дополнение к этим свойствам объекты спецификаций создания фильтра могут иметь и другие свойства, в зависимости от того, проектируют ли они односкоростные фильтры или многоскоростные фильтры.
Добавлены свойства для многоскоростных фильтров | Описание |
---|---|
| Задает величину для уменьшения частоты дискретизации. Всегда положительное целое число. |
| Задает величину для увеличения частоты дискретизации. Всегда положительное целое число. |
| Длина полифазы - это длина каждого полифазного подфильтера, который составляет дециматор или интерполятор или фильтры коэффициента изменения скорости. Общая длина фильтра является продуктом |
Вот схема рабочего процесса общей процедуры разработки и анализа фильтра.
Вот шаги в деталях:
Создайте fdesign.
объект спецификации для определения расчётных параметров.response
Использовать designmethods
чтобы определить методы создания фильтра, которые работают для вашего нового объекта спецификации фильтров. Если вы принимаете решение использовать метод проекта по умолчанию, этот шаг является необязательным.
Если вы предпочитаете изменять опции проекта и хотите увидеть список доступных опций, запустите designoptions
функция на объекте спецификации. Выходные выходы также показывают опции проекта, используемые фильтром по умолчанию.
Использовать design
для разработки фильтра из объекта спецификации фильтров. Задайте метод проекта (определенный из шага 2) как вход. Если опции проекта должны измениться от значений по умолчанию, задайте их как пары "имя-значение", следуя методу проекта.
Если вы вызываете design
функция без каких-либо выходных аргументов, FVTool запускается и показывает величину реакцию проектируемого фильтра.
Кроме того, используйте fvtool
функция.
Последующий анализ, такой как просмотр частотной характеристики фильтра, вычисление стоимости реализации фильтра и измерение характеристик характеристики фильтра, может быть выполнен с использованием одного из поддерживаемых методов анализа для системных объектов фильтра.
Если вы анализируете фильтр и определяете, что фильтр удовлетворяет ограничениям проекта, можно применить объект фильтра к потоковым входным данным. Для получения дополнительной информации о том, как передать данные объекту фильтра, см. соответствующие страницы с описанием System object™.
Подробный пример по проекту и анализу см. в разделе Lowpass Фильтра Баттерворта Спецификации и Проекта.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.