dsp.SOSFilter

БИХ биквадратного уравнения секции второго порядка фильтруют структуры

Описание

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

Чтобы реализовать БИХ фильтруют структуру с помощью SOS:

  1. Создайте dsp.SOSFilter объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

пример

sos = dsp.SOSFilter возвращается биквадратный БИХ фильтруют Системный объект, 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 является количеством биквадратных разделов.

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

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

Зависимости

Чтобы включить это свойство, установите 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' или a numerictype Объект (Fixed-Point Designer).

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

Зависимости

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

Разделите выходное слово - и обозначения дробной длины в виде любого 'Same as section input' или a numerictype Объект (Fixed-Point Designer).

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

Зависимости

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

Содействующее слово числителя - и обозначения дробной длины в виде любого 'Same word length as input' или как a numerictype объект.

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

Зависимости

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

Содействующее слово знаменателя - и обозначения дробной длины в виде любого 'Same word length as input' или как a numerictype объект.

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

Зависимости

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

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

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

Зависимости

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

Слово множимого - и обозначения дробной длины в виде любого 'Same as output' или как a numerictype объект.

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

Зависимости

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

Слово состояния - и обозначения дробной длины в виде любого 'Full precision' или как a numerictype объект.

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

Зависимости

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

Слово аккумулятора знаменателя - и обозначения дробной длины в виде a numerictype объект.

Выведите слово - и обозначения дробной длины в виде любого 'Full precision' или как a numerictype объект.

Когда задано как a 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.

Входные параметры

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

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

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

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

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

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

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

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

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

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

Размер и сложность num и den входные параметры должны быть тем же самым.

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

Зависимости

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

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

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

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

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

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

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

Размер и сложность num и den входные параметры должны быть тем же самым.

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

Зависимости

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

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

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

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

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

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

Зависимости

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

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

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

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

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

Тип данных выхода определяется на основе значения OutputDataType свойство. Если установлено в 'Full precision', тип выходных данных вычисляется на основе схем потока сигналов, показанных в разделе Fixed-Point Conversion. Если установлено в пользовательский числовой тип, тип выходных данных брошен к заданному числовому типу.

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

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

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

release(obj)

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

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

Примеры

свернуть все

Фильтр 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)

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

Потоковая передача

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

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

Спроектируйте фильтр 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

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

Смотрите также

Функции

Объекты

Блоки

Введенный в R2020a