exponenta event banner

dsp. SOSFilter

Биквадратические структуры БИХ-фильтров второго порядка

Описание

dsp.SOSFilter Система object™ реализует структуру фильтра БИХ с использованием секций второго порядка (SOS).

Для реализации структуры фильтра IIR с использованием SOS:

  1. Создать dsp.SOSFilter и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

sos = dsp.SOSFilter возвращает объект biquadratic IIR-фильтра System, sos, который независимо фильтрует каждый канал (столбец) ввода во времени с использованием заданной биквадратической структуры.

sos = dsp.SOSFilter(num,den) возвращает объект биквадратического фильтра с помощью Numerator свойство имеет значение num и Denominator свойство имеет значение den.

sos = dsp.SOSFilter(Name,Value) возвращает объект биквадратического фильтра, для каждого свойства которого задано заданное значение. Заключите каждое имя свойства в отдельные кавычки.

Пример: sos = dsp.SOSFilter('CoefficientSource','Input port')

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Структура фильтра, указанная как одна из 'Direct form I', 'Direct form I transposed', 'Direct form II', или 'Direct form II transposed'.

Источник коэффициентов фильтра, указанных как один из следующих:

  • 'Property' - Коэффициенты фильтра определяются через Numerator, Denominator, и ScaleValues свойства.

  • 'Input port' - Числительные коэффициенты, коэффициенты знаменателя и значения шкалы задаются как входные данные объекта при выполнении алгоритма. Дополнительные сведения см. в разделе Использование.

Числительные коэффициенты фильтра, заданные как матрица N-by-3, где N - число биквадратических сечений.

Размер этого свойства не может быть изменен после запуска алгоритма объекта System. Однако значения коэффициентов могут изменяться по мере настройки свойства.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, установите значение CoefficientSource свойство для 'Property'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Коэффициенты знаменателя фильтра, заданные как матрица N-by-3, где N - число биквадратических сечений.

Коэффициент ведущего знаменателя всегда принимается равным 1. Если в первом столбце указано любое другое значение, объект игнорирует это значение и рассматривает его как 1.

Размер этого свойства не может быть изменен после перехода к алгоритму. Однако значения знаменателя могут быть изменены по мере настройки свойства.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, установите CoefficientSource свойство для 'Property'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Укажите, имеет ли фильтр значения масштаба для каждого сечения. Если установлено значение true, с использованием ScaleValues можно указать значения масштаба, применяемые до и после каждого раздела биквадратического фильтра.

Масштабировать значения, применяемые до и после каждого раздела биквадратического фильтра, заданного как вектор. Длина ScaleValues вектор должен быть N + 1, где N - число бикаудратичных сечений. Если для этого свойства задано скалярное значение, скалярное значение используется в качестве значения усиления только перед первой секцией фильтра. Остальные значения коэффициента усиления устанавливаются в значение 1. Если для этого свойства задано значение вектора N + 1, каждое значение используется для отдельного раздела фильтра.

Настраиваемый: Да

Зависимости

Это свойство применяется только при установке CoefficientSource свойство для 'Property' и HasScaleValues свойство для true.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Свойства с фиксированной точкой

Метод округления для операций с фиксированной точкой, указанный как одно из следующих:

  • 'Floor'

  • 'Ceiling'

  • 'Convergent'

  • 'Nearest'

  • 'Round'

  • 'Simplest'

  • 'Zero'

Дополнительные сведения см. в разделе Режимы округления.

Действие переполнения для операций с фиксированной точкой, указанное как одно из следующих:

  • 'Wrap' - Объект переносит результат операций с фиксированной точкой.

  • 'Saturate' - Объект насыщает результат операций с фиксированной точкой.

Дополнительные сведения о действиях по переполнению см. в разделе Обработка переполнения для операций с фиксированной точкой.

Входные обозначения слов и длин долей в разрезе, указанные как 'Same as input' или numerictype (Конструктор фиксированных точек).

Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.

Зависимости

Это свойство применяется только при установке HasScaleValues свойство для true.

Выходные обозначения слов и долей, указанные как 'Same as section input' или numerictype (Конструктор фиксированных точек).

Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.

Зависимости

Это свойство применяется только при установке HasScaleValues свойство для true.

Числительные коэффициенты обозначений слов и долей длины, указанные как 'Same word length as input' или в качестве numerictype объект.

Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением. Если не указано, длина дроби определяется на основе значений числительных коэффициентов для обеспечения наилучшей возможной точности.

Зависимости

Это свойство применяется только при установке CoefficientSource свойство для 'Property'.

Коэффициенты знаменателя обозначений слов и длин дробей, указанные как 'Same word length as input' или в качестве numerictype объект.

Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением. Если не указано, длина дроби определяется на основе значений коэффициентов знаменателя, чтобы обеспечить наилучшую возможную точность.

Зависимости

Это свойство применяется только при установке CoefficientSource свойство для 'Property'.

Масштабировать значения обозначений длины слов и долей, указанные как 'Same word length as input' или в качестве numerictype объект.

Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением. Если не указана, длина дроби определяется на основе значений шкалы, чтобы обеспечить наилучшую возможную точность.

Зависимости

Это свойство применяется только при установке CoefficientSource свойство для 'Property' и HasScaleValues свойство для true.

Мультипликативные обозначения длины слов и долей, указанные как 'Same as output' или в качестве numerictype объект.

Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.

Зависимости

Это свойство применяется только при установке Structure свойство для 'Direct form I transposed'.

Обозначения слов и долевых значений состояния, указанные как 'Full precision' или в качестве numerictype объект.

Если указано как numerictype объект, тип данных должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.

Зависимости

Это свойство применяется только при установке Structure свойство для 'Direct form II'.

Обозначения слов и длины дроби накопителя знаменателя, указанные как 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.

y = sos(x,num,den,g) задание значений масштаба g sos-фильтра.

Этот синтаксис допустим только в том случае, если CoefficientSource свойство имеет значение 'Input port' и HasScaleValues свойство имеет значение true.

Входные аргументы

развернуть все

Ввод данных, заданный как вектор или матрица.

Этот объект также принимает входные данные переменного размера. После запуска алгоритма объекта System можно изменить размер каждого входного канала, но нельзя изменить количество каналов.

Если вход имеет фиксированную точку, он должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением. Если длина дроби не указана, объект определяет длину дроби на основе входных данных для обеспечения максимальной точности.

Тип данных всех входов должен быть одинаковым.

Типы данных: single | double | int8 | int16 | int32 | int64 | fi
Поддержка комплексного номера: Да

Числительные коэффициенты, определенные как N-by-3 матрица, где N - число биквадратических сечений.

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

Если num является фиксированной точкой, она должна быть подписана фиксированной точкой с наклоном мощности два и нулевым смещением. Если длина дроби не указана, объект определяет длину дроби на основе значений числительных коэффициентов, чтобы получить наилучшую возможную точность.

Тип данных всех входов должен быть одинаковым.

Настраиваемый: Да

Зависимости

Этот ввод применяется только при установке CoefficientSource свойство для 'Input port'.

Типы данных: single | double | int8 | int16 | int32 | int64 | fi

Коэффициенты знаменателя фильтра, заданные как матрица N-by-3, где N - число биквадратических сечений.

Коэффициент ведущего знаменателя всегда принимается равным 1. Если в первом столбце указано любое другое значение, объект игнорирует это значение и рассматривает его как 1.

Размер этого входного сигнала не может быть изменен после перехода к алгоритму. Однако значения знаменателя могут быть изменены по мере настройки входных данных.

Если den является фиксированной точкой, она должна быть подписана фиксированной точкой с наклоном мощности два и нулевым смещением. Если длина дроби не указана, объект определяет длину дроби на основе значений коэффициентов знаменателя, чтобы получить наилучшую возможную точность.

Тип данных всех входов должен быть одинаковым.

Настраиваемый: Да

Зависимости

Этот ввод применяется только при установке CoefficientSource свойство для 'Input port'.

Типы данных: single | double | int8 | int16 | int32 | int64 | fi

Масштабные значения биквадратического фильтра, заданного как вектор 1-by- (N + 1), где N - количество секций биквадратического фильтра.

Если g является фиксированной точкой, она должна быть подписана фиксированной точкой с наклоном мощности два и нулевым смещением. Если длина дроби не указана, объект определяет длину дроби на основе значений масштаба, чтобы обеспечить максимальную точность.

Тип данных всех входов должен быть одинаковым.

Настраиваемый: Да

Зависимости

Этот ввод применяется только при установке CoefficientSource свойство для 'Input port' и HasScaleValues свойство для true.

Типы данных: single | double | int8 | int16 | int32 | int64 | fi

Выходные аргументы

развернуть все

Отфильтрованные выходные данные, возвращаемые в виде вектора или матрицы. Размер и сложность выходного сигнала совпадают с размером и сложностью входного сигнала.

Тип данных вывода определяется на основе значения OutputDataType собственность. Если установлено значение 'Full precision'тип выходных данных вычисляется на основе диаграмм потока сигналов, показанных в разделе «Преобразование с фиксированной точкой». Если задан пользовательский числовой тип, выходной тип данных приводится к указанному числовому типу.

Типы данных: single | double | int8 | int16 | int32 | int64 | fi
Поддержка комплексного номера: Да

Функции объекта

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

release(obj)

развернуть все

freqzЧастотная характеристика объекта системы дискретно-временного фильтра
fvtoolВизуализация частотной характеристики фильтров DSP
impzИмпульсная характеристика объекта системы дискретно-временного фильтра
infoСведения об объекте filter System
coeffsВозвращает коэффициенты объекта System фильтра в структуре
costОценка затрат на внедрение фильтра Объект системы
scaleМасштабировать разделы второго порядка
scaleoptsСоздание объекта опций для масштабирования сечений второго порядка
scalecheckПроверить масштабирование биквадратического фильтра
cumsecКумулятивная секция второго порядка биквадратического фильтра
tfПреобразовать дискретно-временной фильтр Системный объект в передаточную функцию
reorderПереупорядочить секции второго порядка биквадратического фильтра System object
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Фильтр нижних частот шумного синусоидального сигнала с использованием 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)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

Вытекание

Добавьте нулевое среднее значение белого гауссова шума со стандартным отклонением 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

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type line. These objects represent Input signal, Filtered signal.

Проектирование низкочастотного биквадратического 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

Расширенные возможности

.

См. также

Функции

Объекты

Блоки

Представлен в R2020a