dsp.Differentiator

Фильтр дифференциатора конечной импульсной характеристики прямой формой

Описание

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

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

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

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

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

Создание

Описание

пример

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

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

Свойства

расширить все

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

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

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

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

  • true - Объект проектирует фильтр с минимальным порядком, который соответствует PassbandRipple значение.

  • false - Объект проектирует фильтр с порядком, который вы задаете в 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объект масштабирует коэффициенты фильтра, чтобы сохранить входную динамическую область значений.

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

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

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

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

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

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

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

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

Синтаксис

Описание

пример

y = DF(x) применяет к входному сигналу полнополосный дифференцирующий фильтр, 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).

Оцените групповую задержку КИХ-фильтра линейной фазы, используя dsp.TransferFunctionEstimator объект, за которым следуют dsp.PhaseExtractor и dsp.Differentiator объекты. Групповая задержка линейного фазового КИХ-фильтра задается, $GD = -(d\theta(\omega)/d\omega) = - \frac{N}{2}$где$\theta(\omega)$ - информация о фазе фильтра$\omega$ - вектором частоты, а N - порядком фильтра.

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

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

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

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

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

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

PE = dsp.PhaseExtractor;

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

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');

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

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

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 = timescope(2,...
                      'TimeSpanSource','Property',...
                      '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, Sophocles J. Введение в обработку сигналов. Upper Saddle River, NJ: Prentice Hall, 1996.

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

.

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

Введенный в R2016a