exponenta event banner

dsp. PhaseExtractor

Извлечение развернутой фазы сложного входа

Описание

dsp.PhaseExtractor Система object™ извлекает развернутую фазу вещественного или сложного ввода.

Для извлечения развернутой фазы входного сигнала:

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

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

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

Создание

Описание

пример

phase = dsp.PhaseExtractor возвращает объект phase extractor System, извлекающий развернутую фазу входного сигнала.

пример

phase = dsp.PhaseExtractor(Name,Value) возвращает объект phase extractor System с указанным именем свойства, равным указанному значению.

Свойства

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

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

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

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

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

Если для этого свойства задано значение:

  • false - Объект возвращает развернутую фазу, игнорируя границы между входными кадрами.

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

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

Синтаксис

Описание

пример

p = phase(input) извлекает развернутую фазу, p, входного сигнала. Каждый столбец input сигнал обрабатывают как отдельный канал. Объект System развертывает фазу каждого канала входного сигнала независимо во времени.

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

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

Ввод данных, заданный как вектор или матрица. Этот объект поддерживает входные сигналы переменного размера. То есть изменить размер входного кадра (количество строк) можно даже после вызова алгоритма. Однако количество каналов (количество столбцов) должно оставаться постоянным.

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

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

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

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

Типы данных: single | double

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

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

release(obj)

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

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

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

Создать dsp.SineWave object™ системы. Укажите, что объект создает экспоненциальный вывод со сложной экспонентой.

sine = dsp.SineWave('Frequency',10,...
    'ComplexOutput',true,'SamplesPerFrame',128);

Создать dsp.PhaseExtractor Системный объект?. Укажите, что объект игнорирует границы кадра при возврате развернутой фазы.

phase = dsp.PhaseExtractor('TreatFramesIndependently',false);

Извлеките развернутую фазу синусоидальной волны. Постройте график зависимости фазы от времени с помощью timescope Системный объект.

timeplot = timescope('PlotType','Line','SampleRate',1000,...
    'TimeSpanSource','Property','TimeSpan',1.5,'YLimits',[0 80],...
    'ShowGrid',true,...
    'YLabel','Unwrapped Phase (rad)');
for ii = 1:10
    sineOutput = sine();
    phaseOutput = phase(sineOutput);
    timeplot(phaseOutput)
end

Примечание.При использовании R2016a или более ранней версии замените каждый вызов объекта эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Создать dsp.TransferFunctionEstimator object™ системы.

tfe = dsp.TransferFunctionEstimator('FrequencyRange','centered');

Создать dsp.PhaseExtractor object™ системы. Укажите, что объект должен обрабатывать каждый кадр данных независимо.

phase = dsp.PhaseExtractor('TreatFramesIndependently',true);

Создать dsp.IIRFilter object™ системы. Вычислите передаточную функцию БИХ-фильтра третьего порядка. Используйте butter для формирования коэффициентов для фильтра.

[b,a] = butter(3,.3);
iir = dsp.IIRFilter('Numerator',b,'Denominator',a);

Извлеките фазовый отклик передаточной функции. Печать с использованием dsp.ArrayPlot object™ системы.

sampleRate = 1e3;
phaseplot = dsp.ArrayPlot('PlotType','Line','XOffset',-sampleRate/2,...
    'YLimits',[-15 0],...
    'YLabel','Phase Response (rad)',...
    'XLabel','Frequency (Hz)',...
    'Title','System Phase response');
for ii = 1:100
    % Generate input
    input = 0.05*randn(1000,1);
    % Pass through IIR filter
    filterOutput = iir(input);
    % Estimate transfer function
    transferFunction = tfe(input,filterOutput);
    % Plot transfer function phase
    phaseOutput = phase(transferFunction);
    phaseplot(phaseOutput);
end

Алгоритмы

Рассмотрим входной кадр длиной N:

(x1x2⋮xN)

Объект действует на этот кадр и выдает следующие выходные данные:

(Φ1Φ2⋮ΦN)

где:

Фi = Фi − 1 + угол (xi − 1 * xi)

Здесь я пробегаю от 1 до N. angle функция возвращает фазовый угол в радианах.

Если входной сигнал состоит из нескольких кадров:

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

    • Φ0 равно 0.

    • x0 равно 1.

  • Если установить TreatFramesIndependently кому falseобъект игнорирует границы между кадрами. Поэтому в каждом кадре step способ вычисляет фазу по предыдущей формуле, где:

    • Φ0 - последняя развернутая фаза из предыдущего кадра.

    • x0 - последняя выборка из предыдущего кадра.

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

.

См. также

Блоки

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