dsp. SpectrumEstimator

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

Описание

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

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

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

Оценить спектр плотности энергии:

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

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

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

Создание

Синтаксис

SE = dsp.SpectrumEstimator
SE = dsp.SpectrumEstimator(Name,Value)

Описание

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

пример

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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 так, чтобы средство оценки спектра вычислило и вывело макс. - содержат спектр каждого входного канала. Макс. - содержат спектр, вычисляется путем хранения, в каждом интервале частоты, максимальном значении всех оценок спектра мощности.

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

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

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

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

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

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

Синтаксис

pxx = SE(x)
[pxx,pmax] = SE(x)
[pxx,pmin] = SE(x)
[pxx,pmax,pmin] = SE(x)

Описание

пример

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

пример

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

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

[pxx,pmax,pmin] = SE(x) вычисляет спектр мощности или спектр плотности энергии, макс. - содержат спектр и спектр хранения min x. Установите OutputMaxHoldSpectrum, и OutputMinHoldSpectrum к true, чтобы получить макс. - содержат и содержат min спектры.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

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

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

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

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

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

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

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

y = SINE();
pxx = SE(y);
PLOTTER(pxx)

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

f = getFrequencyVector(SE);

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

rbw = getRBW(SE)
rbw =

    0.0015

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

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

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

Инициализируйте два объекта dsp.SpectrumEstimator. Задайте одно средство оценки, чтобы использовать валлийский спектральный метод оценки с окном Hann. Задайте другое средство оценки, чтобы использовать аналитический набор фильтров, чтобы выполнить спектральную оценку. Задайте шумный входной сигнал синусоиды с 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'});

Потоковая передача

Передайте вход потоком. Сравните спектральные оценки вычислили использование окна Hann и аналитического набора фильтров

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

Окно Hann пропускает пик в 0,205 циклах/выборках. Кроме того, окно имеет значительную спектральную утечку, которая делает пик в 0,16 циклах/выборках трудно, чтобы различать, и уровень шума не правилен.

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

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

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

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

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

SE = dsp.SpectrumEstimator('SampleRate',SINE.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 = SINE() + 0.05*randn(1000,1);
    [Pxx,Pmax] = SE(x);
    PLOTTER([Pxx Pmax])
end

Алгоритмы

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

Ссылки

[1] Hayes, Монсон Х. Статистическая цифровая обработка сигналов и моделирование. Хобокен, NJ: John Wiley & Sons, 1996

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

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

[4] Валлийский язык, P. D. “Использование быстрых преобразований Фурье для оценки спектров мощности: метод на основе усреднения во времени по коротким измененным периодограммам”, Транзакции IEEE на Аудио и Электроакустике, Издании 15, 1967, стр 70–73.

[5] Харрис, Обработка сигналов Ф.Дж. Малтирэйта для Систем связи. Prentice Hall. 2004, стр 208–209.

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

Введенный в R2013b