Спектр степени (PS) сигнала временной области является распределением степеней, содержащихся в сигнале по частоте, на основе конечного набора данных. Представление сигнала в частотном диапазоне часто легче анализировать, чем представление во временной области. Многие приложения обработки сигналов, такие как подавление шума и система идентификации, основаны на частотно-специфических модификациях сигналов. Цель спектральной оценки степени состоит в том, чтобы оценить спектр степени сигнала из последовательности временных выборок. В зависимости от того, что известно о сигнале, методы оценки могут включать параметрические или непараметрические подходы и могут быть основаны на анализе во временной или частотной областях. Для примера общий параметрический метод включает подбор кривой наблюдений к авторегрессивной модели. Общим непараметрическим методом является периодограмма. Спектр степени оценивается с использованием методов преобразования Фурье, таких как метод Уэлча и метод банка фильтров. Для сигналов с относительно малой длиной подход группы фильтров производит спектральную оценку с более высоким разрешением, более точным шумовым полом и более точными, чем метод Уэлча, peaks с низкими или без спектральных утечек. Эти преимущества заключаются в увеличении расчетов и замедлении отслеживания. Для получения дополнительной информации об этих методах см. «Спектральный анализ». Можно также использовать другие методы, такие как метод максимальной энтропии.
В 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
-цикл для выполнения 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);
На выходе анализатора спектра можно увидеть два разных peaks: один с частотой 1000 Гц и другой с частотой 5000 Гц.
Шумовая полоса разрешения (RBW) является минимальной полосой пропускания частоты, которая может быть разрешена анализатором спектра. По умолчанию в RBWSource
свойство dsp.SpectrumAnalyzer
для объекта задано значение Auto
. В этом режиме RBW является отношением диапазона частот к 1024. В двустороннем спектре это значение, в то время как в одностороннем спектре, это. Спектральный анализатор в этом примере показывает односторонний спектр. Следовательно, RBW является (44100/2 )/1024 или 21.53Hz
Используя это значение, количество входных выборок, необходимых для вычисления одного спектрального обновления, задается следующим уравнением:.
В этом примере это 44100/21.53 или 2048 выборки.
вычисленный в режиме ' auto ' дает хорошее разрешение частоты.
Чтобы различать две частоты на отображении, расстояние между двумя частотами должно быть по крайней мере RBW. В этом примере расстояние между двумя пиками составляет 4000 Гц, что больше, чем. Следовательно, вы видите peaks отчетливо. Измените частоту второй синусоиды на 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);
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);
При масштабировании два пика, которые разнесены на 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
. Для электротехнических приложений, вы также можете просмотреть RMS вашего сигнала в Vrms
или dBV
. Тип спектра по умолчанию Power in dBm
.
Степень dBW
определяется:
Степень dBm
определяется:
Для сигнала синусоиды с амплитудой 1 В, степень одностороннего спектра в Watts
определяется:
В этом примере эта степень равна 0,5 Вт. Соответствующая степень в дБм задается:
Здесь степень равняется 26,9897 дБм. Чтобы подтвердить это значение с помощью peak finder, нажмите Tools > Measurements > Peak Finder.
Для сигнала белого шума спектр плоский для всех частот. Спектральный анализатор в этом примере показывает односторонний спектр в области значений [0 Fs/2]. Для сигнала белого шума с отклонением 1e-4 степень на единичную полосу пропускания (Punitbandwidth) равна 1e-4. Общая степень белого шума в ваттах во всей частотной области значений определяется:
Количество интервалов частоты является отношением общей полосы пропускания к 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
определяется:
В этом примере эта степень равна 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
определяется:
Напряжение в СРК определяется:
Из предыдущего примера PdBm равен 26,9897 дБм. Vrms вычисляется как
что равняется 0,7071.
Чтобы подтвердить это значение:
Измените Type на RMS
.
Откройте пик поиска, нажав Tools > Measurements > Peak Finder.
Также можно вычислить спектр степени сигнала с помощью 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
-цикл для выполнения 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
Используя подход группы фильтров, спектральная оценка имеет высокое разрешение, и peaks являются точными без спектральных утечек.
Преобразуйте ось X в представление частоты
По умолчанию график массива показывает спектральные данные степени относительно количества выборок на систему координат. Значение числа точек на оси X равняется длине входного кадра. Спектральный анализатор строит графики спектральных данных степени относительно частоты. Для одностороннего спектра частота изменяется в области значений [0 Fs/2]. Для двустороннего спектра частота изменяется в области значений [-Fs/2 Fs/2]. Чтобы преобразовать ось X графика массива из основанной на выборке в основанную на частоте, выполните следующее:
Щелкните значок Строения Properties.
Для одностороннего спектра - вкладка On Main, установите шаг выборка на и смещение X на 0.
Для двустороннего спектра - вкладка On Main, установите шаг выборка на и смещение X на.
В этом примере спектр является односторонним, и, следовательно, шаг Sample и смещение X устанавливаются равными 44100/1024 и 0, соответственно. Чтобы задать частоту в кГц, установите шаг Sample равным 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
Live Обработка
Выходные выходы dsp.SpectrumEstimator
объект содержит спектральные данные и доступен для дальнейшей обработки. Данные могут быть обработаны в реальном времени или храниться в рабочей области.