exponenta event banner

dsp. SpectrumEstimator

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

Описание

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

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

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

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

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

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

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

Создание

Описание

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

пример

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

Свойства

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

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

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

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

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

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

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

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

Зависимости

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

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

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

  • 'Welch' - Объект использует метод 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 так, что блок оценки спектра вычисляет и выводит спектр максимального удержания каждого входного канала. Спектр максимального удержания вычисляется путем сохранения на каждом частотном блоке максимального значения всех оценок спектра мощности.

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

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

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

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

Описание

пример

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

пример

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

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

[pxx,pmax,pmin] = SE(x) вычисляет спектр мощности или спектр плотности мощности, спектр максимального удержания и спектр минимального удержания 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
Поддержка комплексного номера: Да

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Вычислите спектр мощности многоканального синусоидального сигнала, используя 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 Гц. Эта частота является наименьшей частотой, которая может быть разрешена в спектре.

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

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

Инициализация двух dsp.SpectrumEstimator объекты. Укажите один оценщик для использования метода спектральной оценки на основе Welch с окном Ганна. Укажите другой оценщик для использования набора фильтров анализа для выполнения спектральной оценки. Задайте шумовой синусоидальный входной сигнал с 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);

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

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] Хейс, Монсон Х. Статистическая цифровая обработка и моделирование сигналов. Хобокен, Нью-Джерси: John Wiley & Sons, 1996

[2] Кей, Стивен М. Современная спектральная оценка: теория и применение. Энглвуд Клиффс, Нью-Джерси: Прентис Холл, 1999

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

[4] Уэлч, П. Д. «Использование быстрых преобразований Фурье для оценки спектров мощности: метод, основанный на усреднении времени по коротким модифицированным периодограммам», IEEE Transactions on Audio and Electroacustics, Vol. 15, 1967, pp. 70-73.

[5] Харрис, F.J. Многоскоростная обработка сигналов для систем связи. Прентис Холл. 2004, стр 208–209.

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

.
Представлен в R2013b