БИХ биквадратного уравнения секции второго порядка фильтруют структуры
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
— Коэффициенты числителя фильтра
] (значение по умолчанию) | N-by-3 матрицаКоэффициенты числителя фильтра в виде N-by-3 матрица, где N является количеством биквадратных разделов.
Размер этого свойства не может быть изменен, если вы запустили алгоритм Системного объекта. Однако содействующие значения могут измениться, когда свойство является настраиваемым.
Настраиваемый: да
Чтобы включить это свойство, установите CoefficientSource
свойство к 'Property'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Denominator
— Коэффициенты знаменателя фильтра
] (значение по умолчанию) | N-by-3 матрицаКоэффициенты знаменателя фильтра в виде N-by-3 матрица, где N является количеством биквадратных разделов.
Ведущий коэффициент знаменателя всегда принимается, чтобы быть 1. Если значение задано в первом столбце, объект игнорирует это значение и обрабатывает его как 1.
Размер этого свойства не может быть изменен, если вы продвигаетесь через алгоритм. Однако значения знаменателя могут быть изменены, когда свойство настраиваемое.
Настраиваемый: да
Чтобы включить это свойство, установите CoefficientSource
свойство к 'Property'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
HasScaleValues
— Задайте, имеет ли фильтр значения шкалы для каждого разделаfalse
(значение по умолчанию) | true
Задайте, имеет ли фильтр значения шкалы для каждого раздела. Когда установлено в true
, использование ScaleValues
свойство, можно задать значения шкалы, которые будут применены до и после каждого раздела биквадратного фильтра.
ScaleValues
— Масштабируйте значения для каждой biquad секции второго порядка
] (значение по умолчанию) | векторМасштабируйте значения, чтобы применяться до и после каждого раздела биквадратного фильтра в виде вектора. Длина 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'
или как a numerictype
объект.
Когда задано как a numerictype
объект, тип данных должен быть подписанной фиксированной точкой с наклоном степени двойки и нулевым смещением. Если не заданный, дробная длина полна решимости на основе содействующих значений числителя дать самую лучшую точность.
Это свойство применяется только, когда вы устанавливаете CoefficientSource
свойство к 'Property'
.
DenominatorDataType
— Содействующее слово знаменателя - и обозначения дробной длины'Same word length as input'
(значение по умолчанию) | numerictype
объектСодействующее слово знаменателя - и обозначения дробной длины в виде любого 'Same word length as input'
или как a numerictype
объект.
Когда задано как a numerictype
объект, тип данных должен быть подписанной фиксированной точкой с наклоном степени двойки и нулевым смещением. Если не заданный, дробная длина полна решимости на основе содействующих значений знаменателя дать самую лучшую точность.
Это свойство применяется только, когда вы устанавливаете CoefficientSource
свойство к 'Property'
.
ScaleValuesDataType
— Масштабируйте слово значений - и обозначения дробной длины'Same word length as input'
(значение по умолчанию) | numerictype
объектМасштабируйте слово значений - и обозначения дробной длины в виде любого 'Same word length as input'
или как a numerictype
объект.
Когда задано как a numerictype
объект, тип данных должен быть подписанной фиксированной точкой с наклоном степени двойки и нулевым смещением. Если не заданный, дробная длина полна решимости на основе значений шкалы дать самую лучшую точность.
Это свойство применяется только, когда вы устанавливаете CoefficientSource
свойство к 'Property'
и HasScaleValues
свойство к true
.
MultiplicandDataType
— Слово множимого - и обозначения дробной длины'Same as output'
(значение по умолчанию) | numerictype
объектСлово множимого - и обозначения дробной длины в виде любого 'Same as output'
или как a numerictype
объект.
Когда задано как a numerictype
объект, тип данных должен быть подписанной фиксированной точкой с наклоном степени двойки и нулевым смещением.
Это свойство применяется только, когда вы устанавливаете Structure
свойство к 'Direct form I transposed'
.
StateDataType
— Слово состояния - и обозначения дробной длины'Full precision'
(значение по умолчанию) | numerictype
объектСлово состояния - и обозначения дробной длины в виде любого 'Full precision'
или как a numerictype
объект.
Когда задано как a numerictype
объект, тип данных должен быть подписанной фиксированной точкой с наклоном степени двойки и нулевым смещением.
Это свойство применяется только, когда вы устанавливаете Structure
свойство к 'Direct form II'
.
DenominatorAccumulatorDataType
— Слово аккумулятора знаменателя - и обозначения дробной длиныnumerictype(1,64,48)
(значение по умолчанию) | numerictype
объектСлово аккумулятора знаменателя - и обозначения дробной длины в виде a numerictype
объект.
OutputDataType
— Выведите слово - и обозначения дробной длины'Full precision'
(значение по умолчанию) | numerictype
объектВыведите слово - и обозначения дробной длины в виде любого 'Full precision'
или как a numerictype
объект.
Когда задано как a numerictype
объект, тип данных должен быть подписанной фиксированной точкой с наклоном степени двойки и нулевым смещением.
x
— Ввод данныхВвод данных в виде вектора или матрицы.
Этот объект также принимает входные параметры переменного размера. Если вы запустили алгоритм Системного объекта, можно изменить размер каждого входного канала, но вы не можете изменить количество каналов.
Если вход является фиксированной точкой, это должна быть подписанная фиксированная точка с наклоном степени двойки и нулевым смещением. Когда дробная длина не задана, объект определяет дробную длину на основе входных данных, чтобы дать самую лучшую точность.
Тип данных всех входных параметров должен быть тем же самым.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
Поддержка комплексного числа: Да
num
— Коэффициенты числителяКоэффициенты числителя в виде N-by-3 матрица, где N является количеством биквадратных разделов.
Если вы продвигаетесь через алгоритм, размер этого входа не может быть изменен. Однако содействующие значения числителя могут быть изменены, когда вход настраиваемый.
Если num
фиксированная точка, это должна быть подписанная фиксированная точка с наклоном степени двойки и нулевым смещением. Когда дробная длина не задана, объект определяет дробную длину на основе содействующих значений числителя, чтобы дать самую лучшую точность.
Тип данных всех входных параметров должен быть тем же самым.
Настраиваемый: да
Этот вход применяется только, когда вы устанавливаете CoefficientSource
свойство к 'Input port'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
den
— Коэффициенты знаменателяКоэффициенты знаменателя фильтра в виде N-by-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
— Filtered выходФильтрованный выходной параметр, возвращенный как вектор или матрица. Размер и сложность соответствий выходного сигнала тот из входного сигнала.
Тип данных выхода определяется на основе значения OutputDataType
свойство. Если установлено в 'Full precision'
, тип выходных данных вычисляется на основе схем потока сигналов, показанных в разделе Fixed-Point Conversion. Если установлено в пользовательский числовой тип, тип выходных данных брошен к заданному числовому типу.
Типы данных: 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);
Создайте фильтр SOS Biquad
Спроектируйте 10-й порядок lowpass БИХ-фильтр Баттерворта с частотой среза 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
Спроектируйте фильтр SOS биквадратного уравнения lowpass с изменяющимися во времени коэффициентами. Визуализируйте ответ величины фильтра с помощью динамического фильтра visualizer.
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:
Прямая форма я транспонированный
Эта схема показывает типы данных для одного раздела фильтра для сигналов фиксированной точки.
Пунктирные броски не использованы, когда вы задаете значения шкалы к 1.
Эти схемы показывают типы данных с фиксированной точкой между разделами фильтра.
Когда данные не оптимизированы:
Когда вы задаете значения шкалы к 1:
Типы данных продукта числителя выход, аккумулятор числителя и продукт знаменателя выход всегда собираются действовать в полной точности.
Прямая форма II
Эта схема показывает типы данных для одного раздела фильтра для сигналов фиксированной точки.
Пунктирные броски не использованы, когда вы задаете значения шкалы к 1.
Эти схемы показывают типы данных с фиксированной точкой между разделами фильтра.
Когда данные не оптимизированы:
Когда вы устанавливаете значения шкалы к 1:
Типы данных продукта числителя выход, аккумулятор числителя и продукт знаменателя выход всегда собираются действовать в полной точности.
Прямая форма II транспонированный
Эта схема показывает типы данных для одного раздела фильтра для сигналов фиксированной точки.
Типы данных продукта числителя выход, аккумулятор числителя и продукт знаменателя выход всегда собираются действовать в полной точности.
Эти схемы показывают типы данных с фиксированной точкой между разделами фильтра.
Когда данные не оптимизированы:
Когда вы задаете значения шкалы к 1:
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.