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