Секция второго порядка биквадратичные структуры БИХ фильтра
The dsp.SOSFilter
Система object™ реализует структуру БИХ, используя секции второго порядка (SOS).
Реализация структуры БИХ с использованием SOS:
Создайте dsp.SOSFilter
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
возвращает биквадратичный фильтр БИХ Системного объекта, sos
= dsp.SOSFiltersos
, который независимо фильтрует каждый канал (столбец) входа с течением времени с помощью заданной биквадратической структуры.
возвращает объект биквадратичного фильтра со sos
= dsp.SOSFilter(num
,den
)Numerator
значение свойства установлено в num
и Denominator
значение свойства установлено в den
.
возвращает объект биквадратичного фильтра с каждым набором свойств заданное значение. Заключайте каждое имя свойства в одинарные кавычки.sos
= dsp.SOSFilter(Name,Value
)
sos = dsp.SOSFilter('CoefficientSource','Input port')
Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release
функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
Structure
- Структура фильтра'Direct form II transposed'
(по умолчанию) | 'Direct form I'
| 'Direct form I transposed'
| 'Direct form II'
Структура фильтра, заданная как одно из 'Direct form I'
, 'Direct form I transposed'
, 'Direct form II'
, или 'Direct form II transposed'
.
CoefficientSource
- Источник коэффициентов фильтра'Property'
(по умолчанию) | 'Input port'
Источник коэффициентов фильтра, заданный как один из следующих:
'Property'
- Коэффициенты фильтра заданы посредством Numerator
, Denominator
, и ScaleValues
свойства.
'Input port'
- Коэффициенты числителя, коэффициенты знаменателя и значения шкалы заданы как входы объекта при запуске алгоритма. Для получения дополнительной информации см. раздел Использование.
Numerator
- Коэффициенты числителя фильтра0.0975 0.195 0.0975
] (по умолчанию) | N -by-3 матрицаКоэффициенты числителя фильтра, заданные как матрица N-на-3, где N - количество биквадратических сечений .
Размер этого свойства не может быть изменен после запуска алгоритма системного объекта. Однако значения коэффициентов могут измениться, когда свойство настраивается.
Настраиваемый: Да
Чтобы включить это свойство, установите CoefficientSource
свойство к 'Property'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Denominator
- Коэффициенты знаменателя фильтра1 -0.9428 0.3333
] (по умолчанию) | N -by-3 матрицаКоэффициенты знаменателя фильтра, заданные как матрица N-на-3, где N - количество биквадратических сечений .
Начальный коэффициент знаменателя всегда принимается равным 1. Если в первом столбце задано любое другое значение, объект игнорирует это значение и рассматривает его как 1.
Размер этого свойства не может быть изменен после прохождения алгоритма. Однако значения знаменателя могут быть изменены, так как свойство настраивается.
Настраиваемый: Да
Чтобы включить это свойство, задайте CoefficientSource
свойство к 'Property'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
HasScaleValues
- Задайте, имеет ли фильтр масштабные значения для каждого сеченияfalse
(по умолчанию) | true
Укажите, имеет ли фильтр шкалы значения для каждого раздела. Когда установлено значение true
, с использованием ScaleValues
свойство можно задать значения шкалы, которые будут применяться до и после каждой секции биквадратического фильтра.
ScaleValues
- Масштабные значения для каждого раздела второго порядка biquad1 1
] (по умолчанию) | векторМасштабные значения для применения до и после каждой секции биквадратического фильтра, заданные как вектор. Длина ScaleValues
вектор должен быть N + 1, где N - количество бикаудратических сечений. Если вы устанавливаете это свойство в скалярное значение, скалярное значение используется в качестве значения усиления только перед первой секцией фильтра. Остальные значения усиления установлены в 1
. Если вы задаете это свойство в вектор N + 1 значений, каждое значение используется для отдельной секции фильтра.
Настраиваемый: Да
Это свойство применяется только при установке CoefficientSource
свойство к 'Property'
и HasScaleValues
свойство к true
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
RoundingMethod
- Метод округления для операций с фиксированной точкой'Floor'
(по умолчанию) | 'Ceiling'
| 'Convergent'
| 'Nearest'
| 'Round'
| 'Simplest'
| 'Zero'
Метод округления для операций с фиксированной точкой, заданный как одно из следующего:
'Floor'
'Ceiling'
'Convergent'
'Nearest'
'Round'
'Simplest'
'Zero'
Для получения дополнительной информации см. Раздел «Режимы округления»
OverflowAction
- Действие переполнения для операций с фиксированной точкойWrap
(по умолчанию) | Saturate
Действие переполнения для операций с фиксированной точкой, заданное как одно из следующего:
'Wrap'
- Объект переносит результат своих операций с фиксированной точкой.
'Saturate'
- Объект насыщает результат своих операций с фиксированной точкой.
Для получения дополнительной информации о действиях по переполнению смотрите Обработку переполнения для операций с фиксированной точкой.
SectionInputDataType
- Обозначения входных слов и дробей в разделе'Same as input'
(по умолчанию) | numerictype
объектВходные обозначения слов и дробей в разделе, заданные как 'Same as input'
или a numerictype
(Fixed-Point Designer) объект.
Когда задан как a numerictype
объект, тип данных должен быть подписан фиксированной точкой с степенью двойки и нулевым смещением.
Это свойство применяется только при установке HasScaleValues
свойство к true
.
SectionOutputDataType
- Обозначения выходного слова и длины дроби раздела'Same as section input'
(по умолчанию) | numerictype
объектВыходные обозначения слов и дробей в разделе, заданные как 'Same as section input'
или a numerictype
(Fixed-Point Designer) объект.
Когда задан как a numerictype
объект, тип данных должен быть подписан фиксированной точкой с степенью двойки и нулевым смещением.
Это свойство применяется только при установке HasScaleValues
свойство к true
.
NumeratorDataType
- Обозначения коэффициентов числителя в виде слов и дробей'Same word length as input'
(по умолчанию) | numerictype
объектКоэффициенты числителя слово- и дробно-длинные обозначения, заданные как 'Same word length as input'
или как numerictype
объект.
Когда задан как a numerictype
объект, тип данных должен быть подписан фиксированной точкой с степенью двойки и нулевым смещением. Если не задано, длина дроби определяется на основе значений коэффициентов числителя, чтобы получить максимально возможную точность.
Это свойство применяется только при установке CoefficientSource
свойство к 'Property'
.
DenominatorDataType
- Коэффициенты знаменателя, обозначения длин слов и дробей'Same word length as input'
(по умолчанию) | numerictype
объектКоэффициенты знаменателя, слово- и дробно-длинные обозначения, заданные как 'Same word length as input'
или как numerictype
объект.
Когда задан как a numerictype
объект, тип данных должен быть подписан фиксированной точкой с степенью двойки и нулевым смещением. Если не задано, длина дроби определяется на основе значений коэффициентов знаменателя, чтобы получить максимально возможную точность.
Это свойство применяется только при установке CoefficientSource
свойство к 'Property'
.
ScaleValuesDataType
- Значения шкалы, обозначения длин слов и дробей'Same word length as input'
(по умолчанию) | numerictype
объектШкалы, слово- и обозначения длины дроби, заданные как 'Same word length as input'
или как numerictype
объект.
Когда задан как a numerictype
объект, тип данных должен быть подписан фиксированной точкой с степенью двойки и нулевым смещением. Если не указано, длина дроби определяется на основе значений шкалы, чтобы получить максимально возможную точность.
Это свойство применяется только при установке CoefficientSource
свойство к 'Property'
и HasScaleValues
свойство к true
.
MultiplicandDataType
- Multiplicand word - и draction-length обозначения'Same as output'
(по умолчанию) | numerictype
объектМножительные обозначения слов и дробей, заданные как 'Same as output'
или как numerictype
объект.
Когда задан как a numerictype
объект, тип данных должен быть подписан фиксированной точкой с степенью двойки и нулевым смещением.
Это свойство применяется только при установке Structure
свойство к 'Direct form I transposed'
.
StateDataType
- Обозначения в виде слов и дробей в состоянии'Full precision'
(по умолчанию) | numerictype
объектСостояния обозначений длин слов и дробей, заданные как 'Full precision'
или как numerictype
объект.
Когда задан как a numerictype
объект, тип данных должен быть подписан фиксированной точкой с степенью двойки и нулевым смещением.
Это свойство применяется только при установке Structure
свойство к 'Direct form II'
.
DenominatorAccumulatorDataType
- Обозначения слов и длин дробей аккумулятора знаменателяnumerictype(1,64,48)
(по умолчанию) | numerictype
объектОбозначения слов и длин дробей аккумулятора знаменателя, заданные как numerictype
объект.
OutputDataType
- Выходные обозначения длин слов и дробей'Full precision'
(по умолчанию) | numerictype
объектВыходные обозначения длин слов и дробей, заданные как 'Full precision'
или как numerictype
объект.
Когда задан как a numerictype
объект, тип данных должен быть подписан фиксированной точкой с степенью двойки и нулевым смещением.
фильтрует входной сигнал y
= sos(x
)x
и выводит отфильтрованные значения y
. Объект фильтра sos фильтрует каждый канал (столбец) входного сигнала независимо от последовательных вызовов алгоритма.
Этот синтаксис действителен только тогда, когда CoefficientSource
для свойства задано значение 'Property'
.
x
- Вход данныхВход данных, заданный как вектор или матрица.
Этот объект также принимает входы переменного размера. После запуска алгоритма Системного объекта можно изменить размер каждого входного канала, но вы не можете изменить количество каналов.
Если вход является фиксированной точкой, он должен быть подписан фиксированной точкой с степенью двойки и нулевым смещением. Когда длина дроби не задана, объект определяет длину дроби на основе входных данных, чтобы получить максимально возможную точность.
Тип данных всех входов должен быть одинаковым.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
Поддержка комплексного числа: Да
num
- Коэффициенты числителяКоэффициенты числителя, заданные как матрица N -на-3, где N - количество биквадратических сечений.
Когда вы проходите через алгоритм, размер этого входа не может быть изменен. Однако значения коэффициентов числителя могут быть изменены, когда вход настраивается.
Если num
является фиксированной точкой, она должна быть подписана фиксированной точкой с степенью наклона два и нулевым смещением. Когда длина дроби не задана, объект определяет длину дроби на основе значений коэффициентов числителя, чтобы получить максимально возможную точность.
Тип данных всех входов должен быть одинаковым.
Настраиваемый: Да
Этот вход применяется только, когда вы устанавливаете CoefficientSource
свойство к 'Input port'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
den
- Коэффициенты знаменателяКоэффициенты знаменателя фильтра, заданные как матрица N-на-3, где N - количество биквадратических сечений .
Начальный коэффициент знаменателя всегда принимается равным 1. Если в первом столбце задано любое другое значение, объект игнорирует это значение и рассматривает его как 1.
Размер этого входа не может быть изменен, когда вы проходите алгоритм. Однако значения знаменателя могут быть изменены, когда вход настраивается.
Если den
является фиксированной точкой, она должна быть подписана фиксированной точкой с степенью наклона два и нулевым смещением. Когда длина дроби не задана, объект определяет длину дроби на основе значений коэффициентов знаменателя, чтобы получить максимально возможную точность.
Тип данных всех входов должен быть одинаковым.
Настраиваемый: Да
Этот вход применяется только, когда вы устанавливаете CoefficientSource
свойство к 'Input port'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
g
- Масштабные значения для каждого раздела второго порядка biquadШкалы значений биквадратичного фильтра, заданные как вектор 1 бай- (N + 1), где N количество биквадратичных фильтров.
Если g
является фиксированной точкой, она должна быть подписана фиксированной точкой с степенью наклона два и нулевым смещением. Когда длина дроби не задана, объект определяет длину дроби на основе значений шкалы, чтобы получить максимально возможную точность.
Тип данных всех входов должен быть одинаковым.
Настраиваемый: Да
Этот вход применяется только, когда вы устанавливаете CoefficientSource
свойство к 'Input port'
и HasScaleValues
свойство к true
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
y
- Отфильтрованный выходОтфильтрованный выход, возвращенный как вектор или матрица. Размер и сложность выходного сигнала совпадают с размером и сложностью входного сигнала.
Тип данных выхода определяется на основе значения OutputDataType
свойство. Если установлено значение 'Full precision'
тип данных выходов вычисляется на основе потока сигналов схем, показанных в разделе «Преобразование с фиксированной точкой». Если установить пользовательский числовой тип, то выход данных будет приведен к указанному числовому типу.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
Поддержка комплексного числа: Да
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
dsp.SOSFilter
freqz | Частотная характеристика фильтра в дискретном времени Системного объекта |
fvtool | Визуализация частотной характеристики фильтров DSP |
impz | Импульсная характеристика фильтра в дискретном времени Системного объекта |
info | Информация о фильтре Системный объект |
coeffs | Возвращает фильтрация коэффициентов системного объекта в структуре |
cost | Оценка стоимости реализации фильтра Системный объект |
scale | Масштабируйте секции второго порядка |
scaleopts | Создайте объект опции для масштабирования секции второго порядка |
scalecheck | Проверяйте масштабирование биквадратичного фильтра |
cumsec | Кумулятивная секция второго порядка биквадратичного фильтра |
tf | Преобразуйте Системный объект фильтра в дискретном времени в передаточную функцию |
reorder | Переупорядочить секции второго порядка биквадратичного фильтра Системного объекта |
Lowpass фильтрация шумного синусоидального сигнала с помощью dsp.SOSFilter
Системный объект. Визуализируйте исходные и отфильтрованные сигналы с помощью анализатора спектра.
Входной сигнал
Входной сигнал является синусоидальным сигналом с двумя тонами, один на 1 кГц, а другой на 3 кГц. Частота дискретизации составляет 8 кГц.
f1 = 1000; f2 = 3000; Fs = 8000; sine = dsp.SineWave('Frequency',[f1,f2],'SampleRate',Fs,... 'SamplesPerFrame',1024);
Создайте фильтр Biquad SOS
Разработайте lowpass Butterworth БИХ фильтра 10-го порядка с частотой отключения 2 кГц. Коэффициенты числителя и знаменателя извлекаются из спроектированной матрицы SOS.
Fcutoff = 2000; [z,p,k] = butter(10,Fcutoff/(Fs/2)); [s, g] = zp2sos(z,p,k); num = s(:,1:3); den = s(:,4:6); sosFilter = dsp.SOSFilter(num, den,'HasScaleValues',true,'ScaleValues',g)
sosFilter = dsp.SOSFilter with properties: Structure: 'Direct form II transposed' CoefficientSource: 'Property' Numerator: [5x3 double] Denominator: [5x3 double] HasScaleValues: true ScaleValues: [0.0029 1 1 1 1 1] Show all properties
Визуализация частотной характеристики проектируемого фильтра SOS.
fvtool(sosFilter,'Fs',8000)
Вытекание
Добавьте средний белый Гауссов шум со стандартным отклонением 0,1 к сумме синусоид. Фильтрация шумного синусоидального сигнала с помощью разработанного фильтра SOS.
Во время симуляции спектральный анализатор показывает, что высокочастотный тон выше 2 кГц в исходном сигнале ослаблен. Полученный сигнал поддерживает пик на 1 кГц, потому что он падает в полосе пропускания фильтра lowpass.
SA = dsp.SpectrumAnalyzer('PlotAsTwoSidedSpectrum',false, ... 'SampleRate',Fs, ... 'NumInputPorts',2,... 'ShowLegend',true,... 'YLimits',[-200 100],... 'ChannelNames',{'Input signal', 'Filtered signal'}); % Stream processing loop for k = 1:100 input = sum(sine(),2) + 0.1.*randn(sine.SamplesPerFrame,1); filteredOutput = sosFilter(input); SA(input,filteredOutput); end
Создайте lowpass biquadratic SOS фильтр с изменяющимися во времени коэффициентами. Визуализируйте амплитудную характеристику фильтра с помощью динамического фильтра-визуализатора.
dfv = dsp.DynamicFilterVisualizer('YLimits',[-120 10])
dfv = DynamicFilterVisualizer with properties: FFTLength: 2048 SampleRate: 44100 FrequencyRange: [0 22050] XScale: 'Linear' MagnitudeDisplay: 'Magnitude (dB)' Visualization Name: 'Dynamic Filter Visualizer' Title: 'Magnitude Response' YLimits: [-120 10] ShowLegend: 0 FilterNames: {''} UpperMask: Inf LowerMask: -Inf Position: [240 262 800 500]
Создайте dsp.SOSFilter
объект.
sosfilt = dsp.SOSFilter
sosfilt = dsp.SOSFilter with properties: Structure: 'Direct form II transposed' CoefficientSource: 'Property' Numerator: [0.0975 0.1950 0.0975] Denominator: [1 -0.9428 0.3333] HasScaleValues: false Show all properties
Используйте maxflat
функция для разработки lowpass максимально плоского фильтра. Установите порядок числителя и знаменателя фильтра равным 2, так как SOS-фильтр является биквадратичным. Измените частоту отключения с шагом 0,001 и спроектируйте фильтр для каждого шага. Передайте вычисленные коэффициенты в фильтр SOS. Визуализируйте изменяющуюся во времени величину реакцию фильтра SOS с помощью dsp.DynamicFilterVisualizer
объект.
for Wn = 0.1:0.001:0.6 [b,a] = maxflat(2,2,Wn); sosfilt.Numerator = b; sosfilt.Denominator = a; dfv(sosfilt) end
Указания и ограничения по применению:
Смотрите Системные объекты в Генерации кода MATLAB (MATLAB Coder).
Эти схемы показывают типы данных, используемые в dsp.SOSFilter
объект, когда вход является фиксированной точкой. Для каждой структуры фильтра, поддерживаемой объектом, типы данных, показанные на схемах, могут быть установлены через соответствующие свойства с фиксированной точкой объекта.
Прямая форма I
Эта схема показывает типы данных для одной секции фильтра для сигналов с фиксированной точкой.
Типы данных выхода продукта числителя, аккумулятора числителя и выхода продукта знаменателя всегда настроены на работу с полной точностью.
Эти схемы показывают типы данных с фиксированной точкой между секциями фильтра.
Когда данные не оптимизированы:
Когда вы задаете значения шкалы 1:
Прямая форма I транспонирована
Эта схема показывает типы данных для одной секции фильтра для сигналов с фиксированной точкой.
Штриховые отливки опускаются, если заданы значения шкалы 1.
Эти схемы показывают типы данных с фиксированной точкой между секциями фильтра.
Когда данные не оптимизированы:
Когда вы задаете значения шкалы 1:
Типы данных выхода продукта числителя, аккумулятора числителя и выхода продукта знаменателя всегда настроены на работу с полной точностью.
Прямая форма II
Эта схема показывает типы данных для одной секции фильтра для сигналов с фиксированной точкой.
Штриховые отливки опускаются, если заданы значения шкалы 1.
Эти схемы показывают типы данных с фиксированной точкой между секциями фильтра.
Когда данные не оптимизированы:
Когда вы устанавливаете значения шкалы 1:
Типы данных выхода продукта числителя, аккумулятора числителя и выхода продукта знаменателя всегда настроены на работу с полной точностью.
Прямая форма II транспонирована
Эта схема показывает типы данных для одной секции фильтра для сигналов с фиксированной точкой.
Типы данных выхода продукта числителя, аккумулятора числителя и выхода продукта знаменателя всегда настроены на работу с полной точностью.
Эти схемы показывают типы данных с фиксированной точкой между секциями фильтра.
Когда данные не оптимизированы:
Когда вы задаете значения шкалы 1:
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.