Спектр мощности (PS) сигнала во временной области представляет собой распределение мощности, содержащейся в сигнале по частоте, на основе конечного набора данных. Представление сигнала в частотной области часто легче анализировать, чем представление во временной области. Многие приложения для обработки сигналов, такие как шумоподавление и идентификация системы, основаны на частотно-специфических модификациях сигналов. Целью спектральной оценки мощности является оценка спектра мощности сигнала из последовательности временных выборок. В зависимости от того, что известно о сигнале, методы оценки могут включать параметрические или непараметрические подходы и могут быть основаны на анализе во временной или частотной области. Например, общий параметрический метод включает подгонку наблюдений к авторегрессионной модели. Обычным непараметрическим методом является периодограмма. Спектр мощности оценивается с использованием методов преобразования Фурье, таких как метод Уэлча и метод банка фильтров. Для сигналов с относительно малой длиной подход набора фильтров дает спектральную оценку с более высоким разрешением, более точным уровнем шума и пиками более точными, чем метод Уэлча, с низкой спектральной утечкой или без нее. Эти преимущества достигаются за счет увеличения вычислений и более медленного отслеживания. Дополнительные сведения об этих методах см. в разделе Спектральный анализ. Можно также использовать другие методы, такие как метод максимальной энтропии.
В MATLAB ® можно выполнять спектральный анализ динамического сигнала в реальном времени с помощью dsp.SpectrumAnalyzer object™ системы. Спектральные данные можно просмотреть в анализаторе спектра и сохранить в переменной рабочей области с помощью isNewDataReady и getSpectrumData функции объекта. В качестве альтернативы можно использовать dsp.SpectrumEstimator Системный объект, за которым следует dsp.ArrayPlot объект для просмотра спектральных данных. Выходные данные dsp.SpectrumEstimator объект - спектральные данные. Эти данные могут быть получены для дальнейшей обработки.
Для просмотра спектра мощности сигнала можно использовать dsp.SpectrumAnalyzer object™ системы. Вы можете изменить динамику входного сигнала и увидеть влияние этих изменений на спектр мощности сигнала в реальном времени.
Инициализация
Инициализируйте источник синусоидальной волны для генерации синусоидальной волны и анализатор спектра для отображения спектра мощности сигнала. Входная синусоидальная волна имеет две частоты: одну на 1000 Гц, а другую на 5000 Гц. Создать два dsp.SineWave объекты, один для генерации синусоидальной волны 1000 Гц, а другой для генерации синусоидальной волны 5000 Гц.
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-loop для выполнения 5000 итераций. В каждой итерации перетекают в 1024 выборки (один кадр) каждой синусоидальной волны и вычисляют спектр мощности каждого кадра. Для формирования входного сигнала добавьте две синусоидальные волны. Результирующий сигнал представляет собой синусоидальную волну с двумя частотами: одна на 1000 Гц, а другая на 5000 Гц. Добавьте шум Гаусса с нулевым средним значением и стандартным отклонением 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);

На выходе анализатора спектра можно увидеть два различных пика: один на 1000 Гц, а другой на 5000 Гц.
Разрешающая полоса пропускания (RBW) - это минимальная полоса частот, которая может быть разрешена анализатором спектра. По умолчанию RBWSource имущества dsp.SpectrumAnalyzer объект имеет значение Auto. В этом режиме RBW представляет собой отношение частотного диапазона к 1024. В двустороннем спектре это значение равно, в то
время как в одностороннем спектре оно равно.
Анализатор спектра в этом примере показывает односторонний спектр. Следовательно, RBW представляет собой (44100/2 )/1024 или 21.53Hz
Используя это значение,
количество входных выборок, необходимых для вычисления одного спектрального обновления,
задается следующим уравнением:
В этом примере
используется 44100/21.53 или 2048 выборок.
вычисляется в режиме «Auto» и дает хорошее разрешение по частоте.
Чтобы различать две частоты в дисплее, расстояние между двумя частотами должно быть, по меньшей мере, RBW. В этом примере расстояние между двумя пиками составляет 4000 Гц, что больше, чем.
Таким образом, вы можете видеть пики отчетливо. Измените частоту второй синусоидальной волны на 1015 Гц. Разница между этими двумя частотами меньше.
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);

Вершины не различимы.

Для увеличения разрешения частоты уменьшите
до 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);

При увеличении теперь различимы два пика, которые находятся на расстоянии 15 Гц.

При увеличении разрешения частоты разрешение по времени уменьшается. Чтобы поддерживать хороший баланс между разрешением частоты и временным разрешением, измените RBWSource свойство для Auto.
Во время потоковой передачи можно изменить входные свойства или свойства анализатора спектра и немедленно увидеть эффект на выходе анализатора спектра. Например, измените частоту второй синусоидальной волны, когда индекс цикла кратен 1000.
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. Для электротехнических приложений можно также просмотреть среднеквадратичное значение сигнала в Vrms или dBV. Тип спектра по умолчанию - Power in dBm.
Мощность в dBW задается:
Вт)
Мощность в dBm задается:
милливатт)
Для синусоидального сигнала с амплитудой 1 В мощность одностороннего спектра в Watts задается:
1/2
В этом примере эта мощность равна 0,5 Вт. Соответствующая мощность в дБм задаётся:
0,5/10 − 3)
Здесь мощность равна 26,9897 дБм. Чтобы подтвердить это значение с помощью поиска пиков, щелкните Инструменты > Измерения > Поиск пиков.
Для сигнала белого шума спектр является плоским для всех частот. Анализатор спектра в этом примере показывает односторонний спектр в диапазоне [0 Fs/2]. Для сигнала белого шума с дисперсией 1e-4 мощность на единицу полосы пропускания (Punitbandwidth) равна 1e-4. Суммарная мощность белого шума в ваттах по всему диапазону частот задаётся:
4) * (2205021,53)
Количество частотных ячеек - это отношение общей полосы пропускания к RBW. Для одностороннего спектра общая полоса пропускания равна половине частоты дискретизации. RBW в этом примере составляет 21,53 Гц. При этих значениях суммарная мощность белого шума в ваттах равна 0,1024 Вт. В дБм мощность белого шума может быть вычислена с помощью 10 * log10 (0,1024/10 ^ -3), что равно 20,103 дБм.
Если для спектральных единиц установлено значение dBFS и установить полную шкалу (FullScaleSourceКому Auto, мощность в dBFS вычисляется как:
)
где:
Pwatts - мощность в ваттах
Для двойных и поплавковых сигналов Full_Scale является максимальным значением входного сигнала.
Для сигналов с фиксированной точкой или целочисленных сигналов Full_Scale является максимальным значением, которое может быть представлено.
Если указать полный масштаб вручную (набор FullScaleSource кому Property), питание в dBFS задается:
)
Где FS - полный коэффициент масштабирования, указанный в FullScale собственность.
Для синусоидального сигнала с амплитудой 1 В мощность одностороннего спектра в Watts задается:
1/2
В этом примере эта мощность равна 0,5 Вт, а максимальный входной сигнал для синусоидальной волны равен 1 В. Соответствующая мощность в дБФС задается следующим образом:
)
Здесь мощность равна -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 задается:
милливатт)
Напряжение в СРК задается:
− 3
В предыдущем примере PdBm равен 26,9897 дБм. Значение Vrms рассчитывается как
1026.9897/200.001
что равно 0,7071.
Для подтверждения этого значения:
Изменить тип на RMS.
Откройте поисковик пиков, щелкнув Инструменты > Измерения > Поисковик пиков.
Альтернативно, можно вычислить спектр мощности сигнала, используя dsp.SpectrumEstimator Системный объект. Можно получить выходные данные оценщика спектра и сохранить данные для дальнейшей обработки. Просмотр других объектов в Estimation библиотека, тип help dsp в командной строке MATLAB ® и нажмитеEstimation.
Инициализация
Используйте тот же источник, что и в предыдущем разделе об использовании dsp.SpectrumAnalyzer для оценки спектра мощности. Входная синусоидальная волна имеет две частоты: одну на 1000 Гц, а другую на 5000 Гц. Инициализировать 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-loop для выполнения 5000 итераций. В каждой итерации перетекают в 1024 выборки (один кадр) каждой синусоидальной волны и вычисляют спектр мощности каждого кадра. Добавьте гауссов шум со средним значением 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

Используя подход набора фильтров, спектральная оценка имеет высокое разрешение, и пики являются точными без спектральной утечки.
Преобразовать ось X в частоту
По умолчанию график массива показывает спектральные данные мощности относительно количества выборок на кадр. Количество точек на оси X равно длине входного кадра. Анализатор спектра строит график спектральных данных мощности относительно частоты. Для одностороннего спектра частота изменяется в диапазоне [0 Fs/2]. Для двустороннего спектра частота изменяется в диапазоне [-Fs/2 Fs/2]. Чтобы преобразовать ось X графика массива из отсчетного в частотный, выполните следующие действия.
Щелкните значок «Свойства конфигурации».
Для одностороннего спектра - на вкладке «Главная» установите для параметра «Приращение образца» значение
и смещение по оси X значение 0.
Для двустороннего спектра - на вкладке «Главная» установите для параметра «Приращение образца» значение,
а для параметра «Смещение по оси X» значение.
В этом примере спектр является односторонним и, следовательно, приращение Sample и смещение X установлены на 44100/1024 и 0 соответственно. Чтобы задать частоту в кГц, установите для параметра Sample increment значение 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 объект содержит спектральные данные и доступен для дальнейшей обработки. Данные могут обрабатываться в режиме реального времени или храниться в рабочей области.