dsp. PhaseExtractor

Извлеките развернутую фазу комплексного входа

Описание

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

Извлекать развернутую фазу входа сигнала:

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

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

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

Создание

Синтаксис

phase = dsp.PhaseExtractor
phase = dsp.PhaseExtractor(Name,Value)

Описание

пример

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

пример

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

Свойства

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

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

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

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

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

Когда вы устанавливаете это свойство на:

  • ложь Объект возвращает развернутую фазу при игнорировании контуров между входными кадрами.

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

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

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

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

Синтаксис

p = phase(input)

Описание

пример

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

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

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

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

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

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

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

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

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

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

Создать Системный объект dsp.TransferFunctionEstimator?.

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

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

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

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

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

Извлеките фазовый отклик передаточной функции. График с помощью Системного объекта dsp.ArrayPlot?.

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:

(x1x2xN)

Метод step действует на этот кадр и производит этот вывод:

(Φ1Φ2ΦN)

где:

Φi=Φi1+\angle(xi1*xi)

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

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

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

    • Φ0 0.

    • x0 1.

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

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

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

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

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

Блоки

Введенный в R2014b