Биквадратические структуры БИХ-фильтров второго порядка
dsp.SOSFilter Система object™ реализует структуру фильтра БИХ с использованием секций второго порядка (SOS).
Для реализации структуры фильтра IIR с использованием SOS:
Создать dsp.SOSFilter и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
возвращает объект biquadratic IIR-фильтра System, 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-by-3, где N - число биквадратических сечений.
Размер этого свойства не может быть изменен после запуска алгоритма объекта System. Однако значения коэффициентов могут изменяться по мере настройки свойства.
Настраиваемый: Да
Чтобы включить это свойство, установите значение CoefficientSource свойство для 'Property'.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Denominator - Коэффициенты-знаменатели фильтра1 -0.9428 0.3333] (по умолчанию) | матрица 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 - Масштабные значения для каждого биквада второго порядка1 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' или numerictype (Конструктор фиксированных точек).
Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.
Это свойство применяется только при установке HasScaleValues свойство для true.
SectionOutputDataType - Обозначения выходных слов и длины дробей в разрезе'Same as section input' (по умолчанию) | numerictype объектВыходные обозначения слов и долей, указанные как 'Same as section input' или numerictype (Конструктор фиксированных точек).
Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.
Это свойство применяется только при установке HasScaleValues свойство для true.
NumeratorDataType - Числительные коэффициенты обозначений слов и долей длины'Same word length as input' (по умолчанию) | numerictype объектЧислительные коэффициенты обозначений слов и долей длины, указанные как 'Same word length as input' или в качестве numerictype объект.
Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением. Если не указано, длина дроби определяется на основе значений числительных коэффициентов для обеспечения наилучшей возможной точности.
Это свойство применяется только при установке CoefficientSource свойство для 'Property'.
DenominatorDataType - Коэффициенты знаменателя обозначений слов и долей длины'Same word length as input' (по умолчанию) | numerictype объектКоэффициенты знаменателя обозначений слов и длин дробей, указанные как 'Same word length as input' или в качестве numerictype объект.
Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением. Если не указано, длина дроби определяется на основе значений коэффициентов знаменателя, чтобы обеспечить наилучшую возможную точность.
Это свойство применяется только при установке CoefficientSource свойство для 'Property'.
ScaleValuesDataType - Значения шкалы обозначений слов и долей длины'Same word length as input' (по умолчанию) | numerictype объектМасштабировать значения обозначений длины слов и долей, указанные как 'Same word length as input' или в качестве numerictype объект.
Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением. Если не указана, длина дроби определяется на основе значений шкалы, чтобы обеспечить наилучшую возможную точность.
Это свойство применяется только при установке CoefficientSource свойство для 'Property' и HasScaleValues свойство для true.
MultiplicandDataType - Обозначения мультипликативных слов и долей длины'Same as output' (по умолчанию) | numerictype объектМультипликативные обозначения длины слов и долей, указанные как 'Same as output' или в качестве numerictype объект.
Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.
Это свойство применяется только при установке Structure свойство для 'Direct form I transposed'.
StateDataType - Обозначения слов и долек состояния'Full precision' (по умолчанию) | numerictype объектОбозначения слов и долевых значений состояния, указанные как 'Full precision' или в качестве numerictype объект.
Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.
Это свойство применяется только при установке Structure свойство для 'Direct form II'.
DenominatorAccumulatorDataType - Обозначения слов и длины дроби накопителя знаменателяnumerictype(1,64,48) (по умолчанию) | numerictype объектОбозначения слов и длины дроби накопителя знаменателя, указанные как numerictype объект.
OutputDataType - Выходные обозначения длины слов и долей'Full precision' (по умолчанию) | numerictype объектВыходные обозначения длины слов и долей, указанные как 'Full precision' или в качестве numerictype объект.
Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.
фильтрация входного сигнала y = sos(x)x и выводит отфильтрованные значения y. Объект sos-фильтра фильтрует каждый канал (столбец) входного сигнала независимо по последовательным вызовам алгоритма.
Этот синтаксис допустим только в том случае, если CoefficientSource свойство имеет значение 'Property'.
фильтрует входные данные с помощью y = sos(x,num,den)num в качестве числительных коэффициентов и den в качестве коэффициентов знаменателя sos-фильтра.
Этот синтаксис допустим только в том случае, если CoefficientSource свойство имеет значение 'Input port' и HasScaleValues свойство имеет значение false.
x - Ввод данныхВвод данных, заданный как вектор или матрица.
Этот объект также принимает входные данные переменного размера. После запуска алгоритма объекта System можно изменить размер каждого входного канала, но нельзя изменить количество каналов.
Если вход имеет фиксированную точку, он должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением. Если длина дроби не указана, объект определяет длину дроби на основе входных данных для обеспечения максимальной точности.
Тип данных всех входов должен быть одинаковым.
Типы данных: 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 - Масштабные значения для каждого биквада второго порядкаМасштабные значения биквадратического фильтра, заданного как вектор 1-by- (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
Поддержка комплексного номера: Да
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
dsp.SOSFilterfreqz | Частотная характеристика объекта системы дискретно-временного фильтра |
fvtool | Визуализация частотной характеристики фильтров DSP |
impz | Импульсная характеристика объекта системы дискретно-временного фильтра |
info | Сведения об объекте filter System |
coeffs | Возвращает коэффициенты объекта System фильтра в структуре |
cost | Оценка затрат на внедрение фильтра Объект системы |
scale | Масштабировать разделы второго порядка |
scaleopts | Создание объекта опций для масштабирования сечений второго порядка |
scalecheck | Проверить масштабирование биквадратического фильтра |
cumsec | Кумулятивная секция второго порядка биквадратического фильтра |
tf | Преобразовать дискретно-временной фильтр Системный объект в передаточную функцию |
reorder | Переупорядочить секции второго порядка биквадратического фильтра System object |
Фильтр нижних частот шумного синусоидального сигнала с использованием dsp.SOSFilter Системный объект. Визуализация исходных и отфильтрованных сигналов с помощью анализатора спектра.
Входной сигнал
Входной сигнал представляет собой синусоидальный сигнал с двумя тонами, один на 1 кГц, а другой на 3 кГц. Частота дискретизации составляет 8 кГц.
f1 = 1000; f2 = 3000; Fs = 8000; sine = dsp.SineWave('Frequency',[f1,f2],'SampleRate',Fs,... 'SamplesPerFrame',1024);
Создание фильтра Biquad SOS
Спроектируйте низкочастотный БИХ-фильтр Баттерворта 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 кГц, поскольку он падает в полосе пропускания фильтра нижних частот.
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-фильтра с изменяющимися во времени коэффициентами. Визуализируйте амплитудную характеристику фильтра с помощью динамического визуализатора фильтра.
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 создание максимально плоского фильтра нижних частот. Установите числитель и порядок знаменателей фильтра на 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).
На этих диаграммах показаны типы данных, используемые в dsp.SOSFilter объект при вводе с фиксированной точкой. Для каждой структуры фильтра, поддерживаемой объектом, типы данных, показанные на диаграммах, могут быть заданы с помощью соответствующих свойств объекта с фиксированной точкой.
Прямая форма I


На этой схеме показаны типы данных для одной секции фильтра для сигналов с фиксированной точкой.

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

При задании значения масштаба 1:

Прямая форма I транспонирована


На этой схеме показаны типы данных для одной секции фильтра для сигналов с фиксированной точкой.

Пунктирные слепки пропускаются при задании значений масштаба 1.
На этих диаграммах показаны типы данных с фиксированной точкой между секциями фильтра.
Если данные не оптимизированы:

При задании значения масштаба 1:

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


На этой схеме показаны типы данных для одной секции фильтра для сигналов с фиксированной точкой.

Пунктирные слепки пропускаются при задании значений масштаба 1.
На этих диаграммах показаны типы данных с фиксированной точкой между секциями фильтра.
Если данные не оптимизированы:

При установке значения масштаба 1:

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


На этой схеме показаны типы данных для одной секции фильтра для сигналов с фиксированной точкой.

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

При задании значения масштаба 1:

Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.