dsp.SpectrumEstimator

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

Описание

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

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

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

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

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

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

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

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

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

Описание

пример

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.

  • 'Property' – Размер 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 Гц. Вторым и третьим каналам возмещали их фазы сначала$\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 Гц. Эта частота является наименьшей частотой, которая может быть разрешена на спектре.

Сравните спектральные оценки синусоид, встроенных в белый Гауссов шум с помощью 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).

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

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] 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