dsp.SpectrumEstimator

Оценка спектра степени или спектра плотности степени

Описание

The dsp.SpectrumEstimator Система object™ вычисляет спектр степени или спектр плотности степени сигнала с помощью алгоритма Уэлча или подхода набора фильтров.

Когда вы выбираете метод Уэлча, объект вычисляет усредненные измененные периодограммы, чтобы вычислить спектральную оценку. При выборе подхода банка фильтров банк фильтров анализа разделяет широкополосный входной сигнал на несколько узких поддиапазонов. Объект вычисляет степень в каждой узкой полосе частот, и вычисленное значение является спектральной оценкой в соответствующей полосе частот. Для сигналов с относительно малыми длинами БПФ подход группы фильтров производит спектральную оценку с более высоким разрешением, более точным шумовым полом и более точным peaks, чем метод Уэлча, с низкой или без спектральных утечек. Эти преимущества заключаются в увеличении расчетов и замедлении отслеживания.

Спектр может быть выражен в ваттах или децибелах. Этот объект может также оценить спектры max-hold и min-hold сигнала.

Для оценки спектра плотности степени:

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

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

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

Создание

Описание

SE = dsp.SpectrumEstimator возвращает Системный объект, SE, который вычисляет частотный спектр степени или спектр плотности степени действительных или комплексных сигналов. Этот системный объект использует усредненный метод модифицированной периодограммы Уэлча или метод спектральной оценки на основе банка фильтров.

пример

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

Свойства

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

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

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

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

Тип спектра, заданный как 'Power' или 'Power density'. Когда тип спектра 'Power', спектр плотности степени масштабируется эквивалентной шумовой полосой окна (в Гц).

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

Источник значения длины БПФ, заданный как 'Auto' или 'Property'. Если вы задаете это свойство равным 'Auto'устройство оценки спектра устанавливает длину БПФ на размер входного кадра. Если вы задаете это свойство равным 'Property', затем вы задаете количество точек БПФ используя FFTLength свойство.

Задайте длину БПФ, которую оценщик спектра использует для вычисления спектральных оценок в качестве положительного целого числа.

Зависимости

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

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

Задайте метод спектральной оценки:

  • 'Welch' - Объект использует усредненный метод модифицированных периодограмм Уэлча.

  • 'Filter bank' - Группа фильтров анализа разделяет широкополосный входной сигнал на несколько узких поддиапазонов. Объект вычисляет степень в каждой узкой полосе частот, и вычисленное значение является спектральной оценкой в соответствующей полосе частот.

Задайте оконную функцию для спектральной оценки как одну из 'Rectangular', 'Chebyshev', 'Flat Top', 'Hamming', 'Hann', или 'Kaiser'.

Зависимости

Это свойство применяется при установке Method на 'Welch'.

Задайте количество коэффициентов фильтра, или ответвлений, для каждой полосы частот. Это значение соответствует количеству коэффициентов фильтра на полифазную ветвь. Общее количество коэффициентов фильтра определяется NumTapsPerBand × FFTLength.

Зависимости

Это свойство применяется при установке Method на 'Filter bank'.

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

Задайте частотную область значений оценщика спектра как один из 'twosided', 'onesided', или 'centered'.

Если вы задаете FrequencyRange на 'onesided'затем устройство оценки спектра вычисляет односторонний спектр действительного входного сигнала. Когда длина БПФ, NFFT, является четным, оценка спектра имеет длину (NFFT/ 2) + 1 и вычисляется в частотной области значений [0, SampleRate/2], где SampleRate - скорость дискретизации входного сигнала. Когда NFFT является нечетным, оценка спектра имеет длину (NFFT + 1) / 2 и вычисляется в частотной области значений [0, SampleRate/2).

Если вы задаете FrequencyRange на 'twosided'затем устройство оценки спектра вычисляет двусторонний спектр комплексного или действительного входного сигнала. Длина оценки спектра равна длине БПФ. Оценка спектра вычисляется в частотной области значений [0, SampleRate), где SampleRate - скорость дискретизации входного сигнала.

Если вы задаете FrequencyRange на 'centered'затем устройство оценки спектра вычисляет центрированный двусторонний спектр комплексного или действительного входного сигнала. Длина оценки спектра равна длине БПФ. Оценка спектра вычисляется в частотной области значений (-SampleRate/2, SampleRate/2] когда длина БПФ четная и (-SampleRate/2, SampleRate/2) когда длина БПФ нечетна.

Укажите модули степени как одну из 'Watts', 'dBW', или 'dBm'.

Укажите метод усреднения следующим 'Running' или 'Exponential'. В выполняющемся методе усреднения объект вычисляет одинаково взвешенное среднее заданное количество оценок спектра, заданных SpectralAverages свойство. В экспоненциальном методе объект вычисляет среднее значение по выборкам, взвешенным экспоненциально разрушающимся коэффициентом забывания.

Количество спектральных средних значений, заданное как положительное целое число. Устройство оценки спектра вычисляет текущий спектр степени или оценку спектра плотности степени путем усреднения последних оценок N. N - количество спектральных средних значений, определенных в SpectralAverages свойство.

Зависимости

Это свойство применяется при установке AveragingMethod на 'Running'.

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

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

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

Зависимости

Это свойство применяется при установке AveragingMethod на 'Exponential'.

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

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

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

Задайте ослабление бокового лепестка окна как действительный, положительный скаляр, в децибелах (дБ).

Зависимости

Это свойство применяется при установке Method на 'Welch' и Window на 'Chebyshev' или 'Kaiser'.

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

Установите это свойство на true так что устройство оценки спектра вычисляет и выводит спектр max-hold каждого входного канала. Спектр max-hold вычисляется путем сохранения на каждом частотном интервале максимального значения всех оценок спектра степени.

Установите это свойство на true так, что устройство оценки спектра вычисляет и выводит спектр min-hold каждого входного канала. Спектр мин-удержания вычисляется путем сохранения на каждом частотном интервале минимального значения всех оценок спектра степени.

Скорость дискретизации входа в Гц, заданная как конечный числовой скаляр. Скорость дискретизации является частотой, с которой сигнал дискретизируется во времени.

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

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

Описание

пример

pxx = SE(x) вычисляет спектр степени или спектр плотности мощности, pxx, входного сигнала, x. Системный объект обрабатывает столбцы x как независимые каналы.

пример

[pxx,pmax] = SE(x) также вычисляет частотный спектр с максимальным удержанием, pmax, из x. Чтобы определить спектр max-hold, метод сохраняет максимум всех оценок спектра степени, вычисленных в каждом частотном интервале. Задайте OutputMaxHoldSpectrum на true для получения максимального спектра удержания.

[pxx,pmin] = SE(x) также вычисляет частотный спектр мин-удержания, pmin, из x. Чтобы определить минимальный спектр удержания, метод сохраняет минимум всех оценок спектра степени, вычисленных в каждом частотном интервале. Задайте OutputMinHoldSpectrum на true для получения спектра мин-удержания.

[pxx,pmax,pmin] = SE(x) вычисляет спектр степени или спектр плотности мощности, спектр max-hold и спектр min-hold x. Задайте OutputMaxHoldSpectrum и OutputMinHoldSpectrum на true для получения спектров max-hold и min-hold.

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

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

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

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

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

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

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

Когда FFTLengthSource установлено в:

  • 'Auto' - Размер pxx совпадает с размером входного сигнала, x.

  • 'Property' - Размер pxx совпадает с заданной длиной БПФ.

По умолчанию модуль измерения pxx является 'Watts'. Можно также задать спектр, в котором будет 'dBm' или 'dBW' через PowerUnits свойство.

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

Оценка спектра Max-hold, возвращенная как вектор или матрица того же размера, типа данных и сложности, что и выходной сигнал pxx.

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

Оценка спектра Мин-удержания, возвращенная в виде вектора или матрицы того же размера, типа данных и сложности, что и выходной сигнал pxx.

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

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

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

release(obj)

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

getFrequencyVectorВектор частот, на которых выполняется оценка
getRBWРазрешающая способность полосы спектра
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Вычислите степень спектр многоканального синусоидального сигнала с помощью dsp.SpectrumEstimator Системные object™. Можно получить вектор частот, на которых оценивается спектр, используя getFrequencyVector функция. Чтобы вычислить пропускную способность разрешения оценки (RBW), используйте getRBW функция.

Сгенерируйте трехканальную синусоиду, выбранную с частотой дискретизации 1 кГц. Задайте синусоидальные частоты 100, 200 и 300 Гц. Второй и третий каналы имеют свои фазы, смещенные от первого на$\pi/2$ и, $\pi/4$соответственно.

sineSignal = dsp.SineWave('SamplesPerFrame',1000,'SampleRate',1000, ...
    'Frequency',[100 200 300],'PhaseOffset',[0 pi/2 pi/4]);

Оцените и постройте график одностороннего спектра сигнала. Используйте dsp.SpectrumEstimator объект для расчетов и dsp.ArrayPlot для графического изображения.

estimator = dsp.SpectrumEstimator('FrequencyRange','onesided');
plotter = dsp.ArrayPlot('PlotType','Line','YLimits',[0 0.75], ...
    'YLabel','Power Spectrum (watts)','XLabel','Frequency (Hz)');

Пройдите, чтобы получить потоки данных и отобразить спектры трех каналов.

y = sineSignal();
pxx = estimator(y);
plotter(pxx)

Получите вектор частот, при которых спектр оценивается в Гц, используя getFrequencyVector функция.

f = getFrequencyVector(estimator);

Вычислите пропускную способность разрешения (RBW) оценки с помощью getRBW функция.

rbw = getRBW(estimator)
rbw =

    0.0015

Шумовая полоса разрешения спектра степени сигнала составляет 0,0015 Гц. Эта частота является наименьшей частотой, которая может быть разрешена на спектре.

Сравните спектральные оценки синусоидов, встроенных в белый Гауссов шум с помощью метода Welch на основе окна Ханна и метода банка фильтров.

Инициализация

Инициализируйте два dsp.SpectrumEstimator объекты. Задайте одну оценку, чтобы использовать основанный на Уэлче метод спектральной оценки с окном Ханна. Задайте другую оценку, чтобы использовать группу фильтров анализа для выполнения спектральной оценки. Задайте входной сигнал шумной синусоиды с 4 синусоидами в 0,16, 0,2, 0,205 и 0,25 циклов/выборка. Просмотрите спектральную оценку с помощью графика массива.

FrameSize = 420;
Fs = 1;
sinegen = dsp.SineWave('SampleRate',Fs,...
    'SamplesPerFrame',FrameSize,...
    'Frequency',[0.16 0.2 0.205 0.25],...
    'Amplitude',[2e-5 1  0.05  0.5]);
NoiseVar = 1e-10;
numAvgs = 8;

hannEstimator = dsp.SpectrumEstimator('PowerUnits','dBm',...
    'Window','Hann','FrequencyRange','onesided',...
    'SpectralAverages',numAvgs,'SampleRate',Fs);

filterBankEstimator = dsp.SpectrumEstimator('PowerUnits','dBm',...
    'Method','Filter bank','FrequencyRange','onesided',...
    'SpectralAverages',numAvgs,'SampleRate',Fs);

spectrumPlotter = dsp.ArrayPlot(...
    'PlotType','Line','SampleIncrement',Fs/FrameSize,...
    'YLimits',[-250,50],'YLabel','dBm',...
    'ShowLegend',true,'ChannelNames',{'Hann window','Filter bank'});

Вытекание

Поток входов. Сравните спектральные оценки, вычисленные с помощью окна Ханна и банка фильтров анализа

for i = 1:1000
    x = sum(sinegen(),2) + sqrt(NoiseVar)*randn(FrameSize,1);
    Pse_hann = hannEstimator(x);
    Pfb = filterBankEstimator(x);
    spectrumPlotter([Pse_hann,Pfb])
end

Окно Ханна пропускает пик в 0,205 оборотов/выборка. В сложение окно имеет значительную спектральную утечку, которая делает пик в 0,16 циклов/выборку трудным для различения, и шумовой пол не верен.

Оценка группы фильтров имеет очень хорошее разрешение без спектральных утечек.

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

Сгенерируйте синусоиду.

sineWave = dsp.SineWave('Frequency',100,'SampleRate',1000, ...
    'SamplesPerFrame',1000);

Используйте оценку спектра, чтобы вычислить спектр степени и спектр max-hold синусоиды. Используйте График Массивов, чтобы отобразить спектры.

SE = dsp.SpectrumEstimator('SampleRate',sineWave.SampleRate, ...
    'SpectrumType','Power','PowerUnits','dBm', ...
    'FrequencyRange','centered','OutputMaxHoldSpectrum',true);
plotter = dsp.ArrayPlot('PlotType','Line','XOffset',-500, ...
    'YLimits',[-60 30], 'Title','Power Spectrum of 100 Hz Sine Wave', ...
    'YLabel','Power Spectrum (dBm)','XLabel','Frequency (Hz)');

Добавьте случайный шум в синусоиду. Поток в данных и постройте график степени спектра сигнала.

for ii = 1:10
    x = sineWave() + 0.05*randn(1000,1);
    [Pxx,Pmax] = SE(x);
    plotter([Pxx Pmax])
end

Алгоритмы

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

Ссылки

[1] Hayes, Monson H. Statistical Digital Signal Processing and Modeling. Хобокен, Нью-Джерси: Джон Уайли и сыновья, 1996

[2] Кей, Стивен М. Современная спектральная оценка: теория и применение. Englewood Cliffs, Нью-Джерси: Prentice Hall, 1999

[3] Стоика, Петре и Рэндольф Л. Мозес. Спектральный анализ сигналов. Верхняя Седл-Ривер, Нью-Джерси: Prentice Hall, 2005

[4] Welch, P. D. «Использование быстрых преобразований Фурье для оценки спектров степени: Метод, основанный на усреднении времени по коротким измененным периодограммам», IEEE Transactions on Audio and Electroacoustics, Vol. 15, 1967, pp. 70-73.

[5] Harris, F.J. Multirate Signal Processing for Communication Systems. Prentice Hall. 2004, стр 208–209.

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

.
Введенный в R2013b