dsp. Дифференциатор

Прямой КИХ формы fullband фильтр дифференциатора

Описание

Система dsp.Differentiator object™ применяет fullband фильтр дифференциатора на входной сигнал, чтобы дифференцировать все его частотные составляющие. Этот объект использует КИХ equiripple проект фильтра, чтобы разработать фильтр дифференциатора. Идеальная частотная характеристика дифференциатора D(ω)=jω для πωπ. Можно разработать фильтр с минимальным заказом с заданным порядком. Эта фиксированная точка поддержки объектов операции.

Отфильтровать каждый канал вашего входа:

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

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

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

Создание

Синтаксис

DF = dsp.Differentiator
DF = dsp.Differentiator(Name,Value)

Описание

пример

DF = dsp.Differentiator возвращает дифференциатор, DF, который независимо фильтрует каждый канал входа в зависимости от времени с помощью данных спецификаций проекта.

DF = dsp.Differentiator(Name,Value) наборы каждое имя свойства к заданному значению. Незаданные свойства имеют значения по умолчанию.

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

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

  • tRUE Объект разрабатывает фильтр с минимальным заказом, который встречает значению PassbandRipple.

  • ложь Объект разрабатывает фильтр с порядком, который вы задаете в свойстве FilterOrder.

Это свойство не является настраиваемым.

Порядок фильтра, заданного как нечетное положительное целое число.

Это свойство не является настраиваемым.

Зависимости

Можно указать, что фильтр заказывает только, когда 'DesignForMinimumOrder' установлен в false.

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

Максимальная пульсация полосы пропускания в дБ, заданном как положительный действительный скаляр.

Это свойство не является настраиваемым.

Зависимости

Можно задать пульсацию полосы пропускания только, когда 'DesignForMinimumOrder' установлен в true.

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

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

Это свойство не является настраиваемым.

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

Word и дробные длины коэффициентов, заданных как объект numerictype без знака или со знаком. Значение по умолчанию, numerictype(1,16), соответствует числовому текстовому объекту со знаком с 16-битными коэффициентами. Чтобы дать самую лучшую точность, дробная длина вычисляется на основе содействующих значений.

Это свойство не является настраиваемым.

Размер слова вывода совпадает с размером слова входа. Объект вычисляет дробную продолжительность вывода, таким образом, что целый динамический диапазон вывода может быть представлен без переполнения. Для получения дополнительной информации о том, как объект вычисляет дробную продолжительность вывода, см. Правила Точности Фиксированной точки для Предотвращения Переполнения в КИХ-Фильтрах.

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

Это свойство не является настраиваемым.

Использование

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

y = DF(x)

Описание

пример

y = DF(x) применяет fullband фильтр дифференциатора к входному сигналу, x. y является дифференцируемой версией x.

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

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

Ввод данных, заданный как вектор или матрица. Если входной сигнал является матрицей, каждый столбец матрицы обработан как независимый канал. Количество строк во входном сигнале обозначает длину канала. Характеристики типа данных (двойная, одна, или фиксированная точка) и действительно-комплексные характеристики (действительный или оцененный комплекс) должны быть тем же самым для входных данных и выходных данных.

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

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

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

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

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

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

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

release(obj)

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

getFilterПолучите базовый КИХ-фильтр
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

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

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным синтаксисом step. Например, myObject (x) становится шагом (myObject, x).

Оцените групповую задержку линейного фильтра фазы FIR с помощью объекта dsp.TransferFunctionEstimator, сопровождаемого объектами dsp.Differentiator и dsp.PhaseExtractor. Групповой задержкой линейного фильтра фазы FIR дают, где информация о фазе фильтра, действительно ли частота, вектор, и N является порядком фильтра.

Настройте объекты

Создайте линейную фазу FIR lowpass фильтр. Установите порядок к 200, частоту полосы пропускания к 255 Гц, пульсацию полосы пропускания к 0,1 дБ и затухание полосы задерживания к 80 дБ. Задайте частоту дискретизации 512 Гц.

Fs = 512;
LPF = dsp.LowpassFilter('SampleRate',Fs,'PassbandFrequency',255,...
    'DesignForMinimumOrder',false,'FilterOrder',200);

Чтобы оценить передаточную функцию фильтра lowpass, создайте средство оценки передаточной функции. Задайте окно, чтобы быть Hann. Установите длину БПФ на 1 024 и количество спектральных средних значений к 200.

TFE = dsp.TransferFunctionEstimator('FrequencyRange','twosided',...
    'SpectralAverages',200,'FFTLengthSource','Property',...
    'FFTLength',1024);

Чтобы извлечь развернутую фазу из частотной характеристики фильтра, создайте экстрактор фазы.

PE = dsp.PhaseExtractor;

Чтобы дифференцировать фазу, создайте фильтр дифференциатора. Это значение используется в вычислении групповой задержки.

DF = dsp.Differentiator;

Чтобы сгладить вход, создайте переменный КИХ-фильтр пропускной способности.

Gain1 = 512/pi;
Gain2 = -1;
VBFilter = dsp.VariableBandwidthFIRFilter('CutoffFrequency',10,...
    'SampleRate',Fs);

Чтобы просмотреть групповую задержку фильтра, создайте объект графика массивов.

AP = dsp.ArrayPlot('PlotType','Line','YLimits',[-500 400],...
    'YLabel','Amplitude','XLabel','Number of samples');

Запустите алгоритм

for - цикл является циклом потоковой передачи, который оценивает групповую задержку фильтра. В цикле алгоритм фильтрует входной сигнал, оценивает передаточную функцию фильтра и дифференцирует фазу фильтра, чтобы вычислить групповую задержку.

Niter = 1000; % Number of iterations
for k = 1:Niter
        x = randn(512,1);  % Input signal = white Gaussian noise
        y = LPF(x);   % Filter noise with Lowpass FIR filter
        H = TFE(x,y); % Compute transfer function estimate
        Phase = PE(H); % Extract the Unwrapped phase
        phaseaftergain1 = Gain1*Phase;
        DiffOut = DF(phaseaftergain1); % Differentiate the phase
        phaseaftergain2 = Gain2 * DiffOut;
        VBFOut = VBFilter(phaseaftergain2); % Smooth the group delay
        AP(VBFOut); % Display the group delay
end

Как вы видите, групповая задержка фильтра lowpass равняется 100.

Создайте волну FM на сигнале поставщика услуг на 100 Гц, выбранном на уровне 1,5 кГц.

Fc = 1e2;   % Carrier
Fs = 1.5e3; % Sample rate
sinewave = dsp.SineWave('Frequency',10,...
                            'SamplesPerFrame',1e3,...
                            'SampleRate',Fs);

Преобразуйте сигнал FM в сигнал AM.

ts = dsp.TimeScope(2,...
                      'TimeSpan',0.3,...
                      'BufferLength',10*Fs,...
                      'SampleRate',Fs,...
                      'ShowGrid',true,...
                      'YLimits',[-1.5 1.5],...
                      'LayoutDimensions',[2 1]);

df = dsp.Differentiator;

tic
while toc<2.2
    x = step(sinewave);
    fm_y = modulate(x,Fc,Fs,'fm');
    am_y = step(df,fm_y);
    step(ts,fm_y,am_y);
end

release(df);
release(ts);

Алгоритмы

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

Ссылки

[1] Orfanidis, Софокл Дж. Введение в обработку сигналов. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1996.

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

Преобразование фиксированной точки
Преобразуйте алгоритмы с плавающей точкой в фиксированную точку с помощью Fixed-Point Designer™.

Введенный в R2016a

Для просмотра документации необходимо авторизоваться на сайте