Спектр мощности (PS) сигнала временного интервала является распределением степени, содержавшей в сигнале по частоте, на основе конечного множества данных. Представление частотного диапазона сигнала часто легче анализировать, чем представление временного интервала. Много приложений обработки сигналов, таких как подавление помех и система идентификации, основаны на специфичных для частоты модификациях сигналов. Цель степени спектральная оценка состоит в том, чтобы оценить спектр мощности сигнала от последовательности выборок времени. В зависимости от того, что известно о сигнале, методы оценки могут включить параметрические или непараметрические подходы и могут быть основаны на временном интервале или анализе частотного диапазона. Например, общий параметрический метод включает подбор кривой наблюдениям к авторегрессивной модели. Общий непараметрический метод является периодограммой. Спектр мощности оценивается с помощью методов преобразования Фурье, таких как валлийский метод и метод набора фильтров. Для сигналов с относительно маленькой длиной подход набора фильтров производит спектральную оценку с более высоким разрешением, более точным уровнем шума и peaks, более точным, чем валлийский метод, с низким или никакой спектральной утечкой. Эти преимущества прибывают за счет увеличенного вычисления и более медленного отслеживания. Для получения дополнительной информации на этих методах, смотрите Спектральный анализ. Можно также использовать другие методы, такие как максимальный энтропийный метод.
В MATLAB® можно выполнить спектральный анализ в реальном времени динамического сигнала с помощью Системы dsp.SpectrumAnalyzer
object™. Можно просмотреть спектральные данные в спектре анализатор и хранить данные в переменной рабочей области использование функций объекта isNewDataReady
и getSpectrumData
. Поочередно, можно использовать Системный объект dsp.SpectrumEstimator
, сопровождаемый объектом dsp.ArrayPlot
просмотреть спектральные данные. Вывод объекта dsp.SpectrumEstimator
является спектральными данными. Эти данные могут быть получены за последующую обработку.
Чтобы просмотреть спектр мощности сигнала, можно использовать Систему dsp.SpectrumAnalyzer
object™. Можно изменить динамику входного сигнала и видеть эффект, который те изменения имеют на спектр мощности сигнала в режиме реального времени.
Инициализация
Инициализируйте источник синусоиды, чтобы сгенерировать синусоиду и спектр анализатор, чтобы показать спектр мощности сигнала. Входная синусоида имеет две частоты: один на уровне 1 000 Гц и другой на уровне 5 000 Гц. Создайте два объекта dsp.SineWave
, один, чтобы сгенерировать синусоиду на 1 000 Гц и другой, чтобы сгенерировать синусоиду на 5 000 Гц.
Fs = 44100; Sineobject1 = dsp.SineWave('SamplesPerFrame',1024,'PhaseOffset',10,... 'SampleRate',Fs,'Frequency',1000); Sineobject2 = dsp.SineWave('SamplesPerFrame',1024,... 'SampleRate',Fs,'Frequency',5000); SA = dsp.SpectrumAnalyzer('SampleRate',Fs,'Method','Filter bank',... 'SpectrumType','Power','PlotAsTwoSidedSpectrum',false,... 'ChannelNames',{'Power spectrum of the input'},'YLimits',[-120 40],'ShowLegend',true);
Спектр анализатор использует подход набора фильтров, чтобы вычислить спектр мощности сигнала.
Оценка
Поток в и оценка спектр мощности сигнала. Создайте for
- цикл, чтобы запуститься для 5 000 итераций. В каждой итерации, потоке в 1 024 выборках (один кадр) каждой синусоиды и вычисляют спектр мощности каждого кадра. Чтобы сгенерировать входной сигнал, добавьте эти две синусоиды. Результирующий сигнал является синусоидой с двумя частотами: один на уровне 1 000 Гц и другой на уровне 5 000 Гц. Добавьте Гауссов шум с нулевым средним значением и стандартным отклонением 0,001. Чтобы получить спектральные данные для последующей обработки, используйте isNewDataReady
и функции объекта getSpectrumData
. Переменная data
содержит спектральные данные, которые отображены на спектре анализатор наряду с дополнительной статистикой о спектре.
data = []; for Iter = 1:7000 Sinewave1 = Sineobject1(); Sinewave2 = Sineobject2(); Input = Sinewave1 + Sinewave2; NoisyInput = Input + 0.001*randn(1024,1); SA(NoisyInput); if SA.isNewDataReady data = [data;getSpectrumData(SA)]; end end release(SA);
В спектре анализатор вывел, вы видите два отличных peaks: один на уровне 1 000 Гц и другой на уровне 5 000 Гц.
Пропускная способность разрешения (RBW) является минимальной пропускной способностью частоты, которая может быть разрешена спектром анализатор. По умолчанию свойство RBWSource
объекта dsp.SpectrumAnalyzer
установлено в Auto
. В этом режиме RBW является отношением промежутка частоты к 1 024. В двухстороннем спектре это значение, в то время как в одностороннем спектре, это. Спектр анализатор в этом примере показывает односторонний спектр. Следовательно, RBW (44100/2)/1024 или 21.53 Гц
Используя это значение, количество входных выборок, требуемых вычислить одно спектральное обновление, дан следующим уравнением:.
В этом примере, 44100/21.53 или 2 048 выборок.
вычисленный в режиме 'Auto' дает хорошее разрешение частоты.
Чтобы различать две частоты в отображении, расстоянием между этими двумя частотами должен быть, по крайней мере, RBW. В этом примере расстояние между двумя peaks составляет 4 000 Гц, который больше, чем. Следовательно, вы видите peaks отчетливо. Измените частоту второй синусоиды к 1 015 Гц. Различием между этими двумя частотами являются меньше, чем.
release(Sineobject2); Sineobject2.Frequency = 1015; for Iter = 1:5000 Sinewave1 = Sineobject1(); Sinewave2 = Sineobject2(); Input = Sinewave1 + Sinewave2; NoisyInput = Input + 0.001*randn(1024,1); SA(NoisyInput); end release(SA);
Peaks не различим.
Чтобы увеличить разрешение частоты, уменьшитесь до 1 Гц.
SA.RBWSource = 'property'; SA.RBW = 1; for Iter = 1:5000 Sinewave1 = Sineobject1(); Sinewave2 = Sineobject2(); Input = Sinewave1 + Sinewave2; NoisyInput = Input + 0.001*randn(1024,1); SA(NoisyInput); end release(SA);
На изменении масштаба два peaks, которые на расстоянии в 15 Гц, теперь различимы.
Когда вы увеличиваете разрешение частоты, уменьшения разрешения времени. Чтобы сохранить хорошее равновесие между разрешением частоты и разрешением времени, измените свойство RBWSource
на Auto
.
Во время потоковой передачи можно изменить входные свойства или спектр свойства анализатора и видеть эффект на спектр анализатор вывод сразу. Например, измените частоту второй синусоиды, когда индекс цикла будет кратным 1 000.
release(Sineobject2); SA.RBWSource = 'Auto'; for Iter = 1:5000 Sinewave1 = Sineobject1(); if (mod(Iter,1000) == 0) release(Sineobject2); Sineobject2.Frequency = Iter; Sinewave2 = Sineobject2(); else Sinewave2 = Sineobject2(); end Input = Sinewave1 + Sinewave2; NoisyInput = Input + 0.001*randn(1024,1); SA(NoisyInput); end release(SA);
При выполнении цикла потоковой передачи вы видите, что пик второй синусоиды изменяется согласно значению итерации. Точно так же можно изменить любой спектр свойства анализатора, в то время как симуляция запускается, и смотрите соответствующее изменение в выводе.
Спектр анализатор обеспечивает три модуля, чтобы задать степень спектральная плотность: Watts/Hz
, dBm/Hz
и dBW/Hz
. Соответствующими модулями степени является Watts
, dBm
и dBW
. Для электротехнических приложений можно также просмотреть RMS сигнала в Vrms
или dBV
. Типом спектра по умолчанию является Power в dBm
.
Степенью в dBW
дают:
Степенью в dBm
дают:
Для синусоидального сигнала с амплитудой 1 В степенью одностороннего спектра в Watts
дают:
В этом примере эта степень равняется 0,5 Вт. Соответствующей степенью в dBm дают:
Здесь, степень равняется 26.9897 dBm. Чтобы подтвердить это значение с пиковым средством поиска, нажмите Tools> Measurements> Peak Finder.
Для белого шумового сигнала спектр является плоским для всех частот. Спектр анализатор в этом примере показывает односторонний спектр в области значений [0 Фс/2]. Для белого шумового сигнала с отклонением 1e-4 степень на модульную пропускную способность (Punitbandwidth) является 1e-4. Общей степенью белого шума в ваттах по целому частотному диапазону дают:
Количество интервалов частоты является отношением общей пропускной способности к RBW. Для одностороннего спектра общая пропускная способность является половиной уровня выборки. RBW в этом примере составляет 21,53 Гц. С этими значениями общая степень белого шума в ваттах составляет 0,1024 Вт. В dBm степень белого шума может быть вычислена с помощью 10*log10 (0.1024/10^-3), который равняется 20.103 dBm.
Если вы устанавливаете спектральные модули на dBFS
и устанавливаете полный масштаб (FullScaleSource
) на Auto
, степень в dBFS
вычисляется как:
где:
Pwatts
является мощностью в ваттах
Для двойных и сигналов плавающих Full_Scale является максимальным значением входного сигнала.
Для фиксированной точки или целочисленных сигналов, Full_Scale является максимальным значением, которое может быть представлено.
Если вы задаете ручной полный масштаб (установите FullScaleSource
на Property
), степенью в dBFS
дают:
Где FS
является полным масштабным коэффициентом, заданным в свойстве FullScale
.
Для синусоидального сигнала с амплитудой 1 В степенью одностороннего спектра в Watts
дают:
В этом примере эта степень равняется 0,5 Вт, и максимальный входной сигнал для синусоиды составляет 1 В. Соответствующей степенью в dBFS дают:
Здесь, степень равняется-3.0103. Чтобы подтвердить это значение в спектре анализатор, запустите эти команды:
Fs = 1000; % Sampling frequency sinef = dsp.SineWave('SampleRate',Fs,'SamplesPerFrame',100); scope = dsp.SpectrumAnalyzer('SampleRate',Fs,... 'SpectrumUnits','dBFS','PlotAsTwoSidedSpectrum',false) %% for ii = 1:100000 xsine = sinef(); scope(xsine) end
Степенью в dBm
дают:
Напряжением в RMS дают:
От предыдущего примера PdBm равняется 26.9897 dBm. Vrms вычисляется как
который равняется 0.7071.
Подтвердить это значение:
Измените Type на RMS
.
Откройте пиковое средство поиска путем нажатия на Tools> Measurements> Peak Finder.
Поочередно, можно вычислить спектр мощности сигнала с помощью Системного объекта dsp.SpectrumEstimator
. Можно получить вывод средства оценки спектра и хранить данные для последующей обработки. Чтобы просмотреть другие объекты в библиотеке Estimation
, введите help dsp
в командной строке MATLAB� и нажмите Estimation
.
Инициализация
Используйте тот же источник в качестве в предыдущем разделе при использовании dsp.SpectrumAnalyzer
, чтобы оценить спектр мощности. Входная синусоида имеет две частоты: один на уровне 1 000 Гц и другой на уровне 5 000 Гц. Инициализируйте dsp.SpectrumEstimator
, чтобы вычислить спектр мощности сигнала с помощью подхода набора фильтров. Просмотрите спектр мощности сигнала с помощью объекта dsp.ArrayPlot
.
Fs = 44100; Sineobject1 = dsp.SineWave('SamplesPerFrame',1024,'PhaseOffset',10,... 'SampleRate',Fs,'Frequency',1000); Sineobject2 = dsp.SineWave('SamplesPerFrame',1024,... 'SampleRate',Fs,'Frequency',5000); SpecEst = dsp.SpectrumEstimator('Method','Filter bank',... 'PowerUnits','dBm','SampleRate',Fs,'FrequencyRange','onesided'); ArrPlot = dsp.ArrayPlot('PlotType','Line','ChannelNames',{'Power spectrum of the input'},... 'YLimits',[-80 30],'XLabel','Number of samples per frame','YLabel',... 'Power (dBm)','Title','One-sided power spectrum with respect to samples');
Оценка
Поток в и оценка спектр мощности сигнала. Создайте for
- цикл, чтобы запуститься для 5 000 итераций. В каждой итерации, потоке в 1 024 выборках (один кадр) каждой синусоиды и вычисляют спектр мощности каждого кадра. Добавьте Гауссов шум со средним значением в 0 и стандартное отклонение 0,001 к входному сигналу.
for Iter = 1:5000 Sinewave1 = Sineobject1(); Sinewave2 = Sineobject2(); Input = Sinewave1 + Sinewave2; NoisyInput = Input + 0.001*randn(1024,1); PSoutput = SpecEst(NoisyInput); ArrPlot(PSoutput); end
Используя подход набора фильтров, спектральная оценка имеет высокое разрешение, и peaks точен без спектральной утечки.
Преобразуйте ось X, чтобы Представлять Частоту
По умолчанию график массивов показывает степени спектральные данные относительно количества выборок на кадр. Число точек на оси X равняется длине входного кадра. Спектр анализатор строит степень спектральные данные относительно частоты. Для одностороннего спектра частота отличается по области значений [0 Фс/2]. Для двухстороннего спектра частота отличается по области значений [-Fs/2 Фс/2]. Чтобы преобразовать ось X графика массивов от основанного на выборке до основанного на частоте, сделайте следующее:
Нажмите на значок Configuration Properties.
Для одностороннего спектра - вкладка On Main, Выборка набора постепенно увеличивается к и X-смещение к 0.
Для двухстороннего спектра - вкладка On Main, Выборка набора постепенно увеличивается к и X-смещение к.
В этом примере спектр является односторонним и следовательно, Демонстрационный шаг и X-смещение установлены в 44100/1024 и 0, соответственно. Чтобы задать частоту в kHz, установите Демонстрационный шаг на 44.1/1024.
ArrPlot.SampleIncrement = (Fs/1000)/1024; ArrPlot.XLabel = 'Frequency (kHz)'; ArrPlot.Title = 'One-sided power spectrum with respect to frequency'; for Iter = 1:5000 Sinewave1 = Sineobject1(); Sinewave2 = Sineobject2(); Input = Sinewave1 + Sinewave2; NoisyInput = Input + 0.001*randn(1024,1); PSoutput = SpecEst(NoisyInput); ArrPlot(PSoutput); end
Живая обработка
Вывод объекта dsp.SpectrumEstimator
содержит спектральные данные и доступен для последующей обработки. Данные могут быть обработаны в режиме реального времени, или они могут храниться в рабочей области.