Документация Engee

EngeeDSP.spectrumAnalyzer

Создает объект спектроанализатора.

Библиотека

EngeeDSP

Описание

Объект EngeeDSP.spectrumAnalyzer отображает частотный спектр сигналов во временной области. Спектроанализатор представляет частотный спектр в виде спектра или спектрограммы. Объект выполняет расчет спектра, используя метод банка фильтров и метод усредненных модифицированных периодограмм Уэлча. Подробнее см. в разделе Алгоритмы. Спектроанализатор может отображать спектр мощности сигнала в трех единицах: Вт, дБм и дБВт. Подробнее о преобразовании мощности между этими тремя единицами см. в разделе Перевод мощности из одной единицы измерения в другую.

Чтобы создать объект спектроанализатора, выполните следующие действия:

  1. Создайте объект EngeeDSP.spectrumAnalyzer и установите его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

scope = EngeeDSP.spectrumAnalyzer(name = value) — создает системный объект EngeeDSP.spectrumAnalyzer с указанным свойством Name, установленным на указанное значение Value. Вы можете указать дополнительные аргументы в виде пары имя-значение в любом порядке (Name1=Value1,…,NameN=ValueN).

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

  • scope(signal) — отображает частотный спектр входного сигнала signal во временной области в анализаторе спектра.

    scope(signal)
  • scope(signal1,signal2,…​,signalN) — отображает частотный спектр нескольких входных сигналов signal1,signal2,…​,signalN во временной области в анализаторе спектра. Каждый сигнал интерпретируется как отдельный канал.

    scope(signal1,signal2,signal3)

Аргументы

Входные аргументы

signal — входной сигнал
скаляр | вектор | матрица

Details

Входной сигнал или сигналы для визуализации, заданные как скаляр, вектор или матрица. Количество каналов в каждом сигнале может быть разным, но размер кадра каждого сигнала должен быть одинаковым.

Типы данных

Float64, Float32, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Да

Свойства

# Size — размеры графика

Details

Размеры графика задаются в виде кортежа из целых чисел, например, (800, 600).

# FFTLength — длина БПФ
Int64 integer

Details

Длина БПФ, которую спектроанализатор использует для расчета спектра, задается как положительное целое число.

Зависимости

Чтобы использовать это свойство, укажите FFTLengthSource = "property".

# YLimits — пределы оси

Details

Пределы оси задаются в виде кортежа из вещественных чисел. Значение по умолчанию (-80, 20).

# CenterFrequency — центральная частота для расчета спектра
Real number

Details

Центр частотного диапазона, в котором вычисляется и строится спектр, задается как вещественный скаляр в Гц. Общий диапазон частот, определяемый Span и этим свойством, должен находиться в пределах частотного интервала Найквиста.

Зависимости

Чтобы использовать это свойство, укажите FrequencySpan = "span-and-center-frequency".

# TimeSpanSource — источник временного интервала спектрограммы
String

Details

Источник временного интервала спектрограммы. Возможные значения:

  • "auto" — спектрограмма отображает 100 линий спектрограммы в любой момент времени.

  • "property" — спектрограмма использует длительность в секундах, указанную в свойстве TimeSpan.

Указанный временной интервал должен быть как минимум в два раза больше длительности количества отсчетов, необходимых для обновления спектра.

# FrequencySpan — режим частотного диапазона
String

Details

Режим частотного диапазона. Возможные значения:

# FrequencyScale — масштаб для отображения частоты
String

Details

Масштаб для отображения частоты. Возможные значения:

  • "linear" (по умолчанию) — использовать линейную шкалу для отображения частот по оси ;

  • "log" — использовать логарифмическую шкалу для отображения частот по оси .

Этому свойству нельзя присвоить значение "log", если значение PlotAsTwoSidedSpectrum = true.

# FrequencyResolutionMethod — метод частотного разрешения спектроанализатора
String

Details

Метод частотного разрешения спектроанализатора. Возможные значения:

  • "rbw" (по умолчанию) — свойства RBWSource и RBW управляют частотным разрешением (в Гц) анализатора;

  • "num-frequency-bands" — свойства FFTLengthSource и FFTLength управляют частотным разрешением. Это значение можно установить только при Method = "filter-bank";

  • "window-length" — свойство WindowLength управляет частотным разрешением. Это значение можно установить только при Method = "welch".

# LineWidth — ширина линий
Real number

Details

Ширина линий на графике, заданная как положительный скаляр. По умолчанию значение 1.5.

# ViewType — вид для отображения
String

Details

Вид для отображения. Возможные значения:

  • "spectrum" (по умолчанию) — отображение частотного спектра сигналов;

  • "spectrogram" — отображение спектрограммы сигналов. Спектрограмма отображает изменение частотного состава сигнала во времени. Каждая линия спектрограммы представляет собой одну периодограмму;

  • "spectrum-and-spectrogram"— одновременное отображение спектра и спектрограммы.

# AxesLayout — расположение осей
String

Details

Расположение осей. Возможные значения:

  • "vertical" — позволяет расположить спектр над спектрограммой;

  • "horizontal" — позволяет расположить два представления рядом.

Зависимости

Чтобы использовать это свойство, укажите ViewType = "spectrum-and-spectrogram".

# PlotAsTwoSidedSpectrum — построение двустороннего спектра
Logical

Details

Построения двустороннего спектра. Возможные значения:

  • true (по умолчанию) — вычислить и построить двухсторонний спектр. Если входной сигнал комплексный, необходимо установить это свойство в значение true;

  • false — вычислить и построить односторонний спектр. Если это свойство имеет значение false, входной сигнал должен иметь вещественное значение.

Если это свойство имеет значение false, то спектроанализатор использует наложение спектров. Значения по оси в два раза превышают амплитуду, которая была бы, если бы это свойство имело значение true, за исключением 0 и частоты Найквиста. Односторонняя спектральная плотность мощности (СПМ) содержит полную мощность сигнала в диапазоне частот от постоянного тока до половины частоты Найквиста.

# OverlapPercent — процент перекрытия отсчетов между предыдущим и следующим сегментом данных
Real number

Details

Процент перекрытия между предыдущим и текущим буферизованными сегментами данных, указанный как скаляр в диапазоне [0,100). Перекрытие создает сегмент окна, который объект использует для вычисления спектра.

Зависимости

Чтобы использовать это свойство, укажите Method = "welch".

# TimeSpan — временной интервал
Real number

Details

Временной интервал отображения спектрограммы в секундах, заданный как положительный скаляр. Необходимо установить временной интервал как минимум вдвое больше продолжительности количества отсчетов, необходимых для обновления спектра.

Зависимости

Чтобы использовать это свойство, укажите ViewType = "spectrogram" или ViewType = "spectrum-and-spectrogram" и TimeSpanSource = "property".

# YLabel — подпись оси
String

Details

Подпись оси .

# RBW — полоса разрешения
Real number

Details

Полоса разрешения (resolution bandwidth, RBW) в Гц, заданная как положительный скаляр. Укажите значение, чтобы обеспечить наличие как минимум двух интервалов RBW в указанном частотном диапазоне. Отношение общего диапазона к RBW удовлетворяет этому условию:

Значение должно быть меньше, чем половина частотного диапазона, заданного через параметр FrequencySpan.

RBW управляет спектральным разрешением отображаемого сигнала. Значение RBW определяет интервал между частотами, которые можно различить. Меньшее значение обеспечивает более высокое спектральное разрешение и снижает уровень шума. То есть спектроанализатор может различать частоты, расположенные ближе друг к другу. Однако это приводит к увеличению времени развертки.

Подробнее см. в разделе Полоса разрешения (RBW).

Зависимости

Чтобы использовать это свойство, укажите RBWSource = "property".

# VBWSource — источник видеополосы
String

Details

Источник видеополосы (video bandwidth, VBW). Возможные значения:

  • "auto" — спектроанализатор корректирует VBW таким образом, чтобы эквивалентный коэффициент забывания составлял 0.9;

  • "property" — спектроанализатор корректирует VBW, используя значение, указанное в свойстве VBW.

Зависимости

Чтобы использовать это свойство, укажите AveragingMethod = "vbw".

# FFTLengthSource — источник длины БПФ
String

Details

Источник длины БПФ. Возможные значения:

  • "auto" (по умолчанию) — значение FFTLength = 1024;

  • "property" — количество точек БПФ равно значению, указанному в свойстве FFTLength.

# ShowGrid — показать сетку на графике
Logical

Details

Возможные значения:

  • true (по умолчанию) — показать сетку.

  • false — не показывать сетку.

Зависимости

Чтобы использовать это свойство, укажите ViewType = "spectrum" или ViewType = "spectrum-and-spectrogram".

# Colormap — палитра графика
String

Details

Возможные значения:

  • "jet" (по умолчанию);

  • "bone";

  • "cool";

  • "copper";

  • "gray";

  • "hot";

  • "parula".

Зависимости

Чтобы использовать это свойство, укажите ViewType = "spectrogram" или ViewType = "spectrum-and-spectrogram".

# ForgettingFactor — коэффициент забывания
Real number

Details

Коэффициент забывания для усреднения методом экспоненциального взвешивания, заданный как положительный скаляр в диапазоне [0,1].

Зависимости

Чтобы использовать это свойство, укажите AveragingMethod = "exponential".

# FrequencyOffset — смещение по оси
Real number

Details

Смещение, применяемое к оси частот (ось ), задается как скаляр в Гц.

Общий диапазон должен находиться в пределах частотного интервала Найквиста. Вы можете управлять общим диапазоном различными способами, устанавливая свойство FrequencySpan.

# RBWSource — источник полосы частот по разрешению
String

Details

Источник полосы частот по разрешению (resolution bandwidth, RBW). Возможные значения:

  • "auto" — спектроанализатор выставляет значение RBW таким образом, чтобы обеспечить значение RBW эквивалентное 1024 частотным интервалам;

  • "property" — укажите полосу разрешения напрямую, используя свойство RBW.

Зависимости

Чтобы использовать это свойство, укажите FrequencyResolutionMethod = "rbw".

# AveragingMethod — метод усреднения спектра
String

Details

Метод усреднения спектра. Возможные значения:

  • "vbw" — метод видеополосы. Объект использует фильтр нижних частот для сглаживания кривой и снижения шума. Используйте свойства VBWSource и VBW для указания значения видеополосы.

  • "exponential" — взвешенное среднее значение отсчетов. Объект вычисляет среднее значение по отсчетам, взвешенным по экспоненциально убывающему коэффициенту забывания. Используйте свойство ForgettingFactor для указания взвешенного коэффициента забывания.

Подробнее о методах усреднения см. в разделе Метод усреднения.

# ColorLimits — цветовые границы спектрограммы

Details

Цветовые границы спектрограммы, заданные как кортеж из вещественных чисел. Значение по умолчанию (-80, 20).

Зависимости

Чтобы использовать это свойство, укажите ViewType = "spectrogram" или ViewType = "spectrum-and-spectrogram".

# SpectrogramChannel — канал, для которого строится спектрограмма
Int64 integer

Details

Канал, для которого строится спектрограмма, указывается как положительное целое число в диапазоне [1, N], где N — количество входных каналов.

Зависимости

Чтобы использовать это свойство, укажите ViewType = "spectrogram" или ViewType = "spectrum-and-spectrogram".

# FullScaleSource — источник масштабного коэффициента dBFS
String

Details

Источник масштабного коэффициента dBFS. Возможные значения:

  • "auto" — спектроанализатор опирается на максимальное значение входных данных;

  • "property" — используется свойство FullScale.

Зависимости

Чтобы использовать это свойство, укажите SpectrumUnits = "dBFS" или SpectrumUnits = "dBFS/Hz".

# SpectrumType — тип спектра
String

Details

Тип спектра для отображения. Возможные значения:

  • "power" (по умолчанию) — спектр мощности;

  • "power-density" — спектральная плотность мощности. Спектральная плотность мощности — это квадрат амплитуды спектра, нормализованный к полосе пропускания 1 Гц;

  • "rms" — среднеквадратичное значение. Используйте эту опцию для просмотра частоты сигналов напряжения или тока.

При присвоении нового значения, меняется значение SpectrumUnits:

  • при "power" на "dBm";

  • при "power-density" на "dBm/Hz";

  • при "rms" на "Vrms".

# StopFrequency — конечная частота для расчета спектра
Real number

Details

Конечная частота в частотном интервале, в котором спектроанализатор вычисляет и строит спектр, задается как вещественный скаляр в Гц. Общий диапазон, определяемый этим свойством и свойством StartFrequency, должен находиться в пределах частотного интервала Найквиста.

Зависимости

Чтобы использовать это свойство, укажите FrequencySpan = "start-and-stop-frequencies".

# Title — подпись графика
String

Details

Подпись графика.

# SampleRate — частота дискретизации входного сигнала
Real number

Details

Частота дискретизации входного сигнала в Гц, заданная как положительный скаляр.

# Span — диапазон частот, в котором рассчитывается спектр
Real number

Details

Диапазон частот, в котором спектроанализатор вычисляет и строит спектр, задается как положительный скаляр в Гц. Общий диапазон частот, определяемый CenterFrequency и этим свойством, должен находиться в пределах частотного интервала Найквиста.

Зависимости

Чтобы использовать это свойство, укажите FrequencySpan = "span-and-center-frequency".

# TimeResolutionSource — источник временного разрешения каждой линии спектрограммы
String

Details

Источник временного разрешения каждой линии спектрограммы. Возможные значения:

  • "auto" (по умолчанию);

  • "property".

Если для параметров RBWSource и TimeResolutionSource задано значение "auto", то RBW устанавливается таким образом, чтобы в одном частотном диапазоне содержалось 1024 интервала RBW. Временное разрешение устанавливается равным 1/RBW.

Если для RBWSource задано значение "auto", а для TimeResolutionSource — значение "property", то основным элементом управления становится временное разрешение, а RBW устанавливается равным 1/TimeResolution Гц.

Если для RBWSource задано значение "property", а для TimeResolutionSource — значение "auto", то основным элементом управления становится RBW, а временное разрешение устанавливается равным 1/RBW с.

Если для RBWSource и TimeResolutionSource задано значение "property", то заданное значение временного разрешения должно быть равно или превышать минимально достижимое временное разрешение, определяемое отношением 1/RBW. Несколько расчетов спектра объединяются в одну линию спектрограммы для получения необходимого временного разрешения.

Зависимости

Чтобы использовать это свойство, укажите ViewType = "spectrogram" или ViewType = "spectrum-and-spectrogram".

# ReferenceLoad — опорная нагрузка для вычисления уровней мощности
Real number

Details

Нагрузка, которую спектроанализатор использует в качестве опорной для вычисления уровней мощности, указывается как положительный скаляр в Ом.

Зависимости

Чтобы использовать это свойство, укажите SpectrumUnits = "dBFS" или SpectrumUnits = "dBFS/Hz".

# Method — метод расчета спектра
String

Details

Метод расчета спектра. Возможные значения:

  • "filter-bank" (по умолчанию) — использование банка фильтров для расчета спектра мощности. По сравнению с методом Уэлча, этот метод имеет более низкий уровень шума, лучшее разрешение по частоте, меньшее растекание спектра и требует меньшего количества отсчетов для обновления. Подробнее см. Расчет спектра — банк фильтров.

  • "welch" — использование метода усредненных модифицированных периодограмм Уэлча. Подробнее см. Расчет спектра — метод Уэлча.

При изменении этого свойства, значение FrequencyResolutionMethod меняется на "rbw".

# ShowLegend — показать или скрыть легенду на графике
Logical

Details

Легенда на графике:

  • false (по умолчанию) — не показывать легенду.

  • true — показать легенду.

# LineStyle — тип линии
String

Details

Возможные значения:

  • "-" — сплошная линия;

  • "--" — пунктирная линия;

  • "-." — штрихпунктирная линия;

  • "-.." — Штрихпунктирная линия с двумя точками;

  • ":" — точечный пунктир;

# WindowLength — длина окна
Int64 integer

Details

Длина окна в отсчетах, которую объект использует для расчета спектра, заданная как целое число больше 2. Это свойство управляет разрешением по частоте.

Зависимости

Чтобы использовать это свойство, укажите Method = "welch" и FrequencyResolutionMethod = "window-length".

# VBW — значение видеополосы
Real number

Details

Значение видеополосы, заданное как положительный скаляр, меньше или равный SampleRate/2.

Зависимости

Чтобы использовать это свойство, укажите AveragingMethod = "vbw" и VBWSource = "property".

# TimeResolution — временное разрешение каждой линии спектрограммы
Real number

Details

Временное разрешение каждой линии спектрограммы в секундах, заданное как положительный скаляр.

Зависимости

Чтобы использовать это свойство, укажите ViewType = "spectrogram" или ViewType = "spectrum-and-spectrogram" и TimeResolutionSource = "property".

# StartFrequency — начальная частота для расчета спектра
Real number

Details

Начальная частота в частотном интервале, в котором спектроанализатор вычисляет и строит спектр, задается как вещественный скаляр в Гц. Общий диапазон, определяемый этим свойством и StopFrequency, должен находиться в пределах частотного интервала Найквиста.

Зависимости

Чтобы использовать это свойство, укажите FrequencySpan = "start-and-stop-frequencies".

# SidelobeAttenuation — затухание боковых лепестков
Real number

Details

Затухание боковых лепестков окна в децибелах (дБ), указывается как положительная скалярная величина, большая или равная 45.

Зависимости

Чтобы использовать это свойство, укажите Window = "chebyshev" или Window = "kaiser".

# Window — оконная функция, применяющаяся к накопленным данным
String

Details

Оконная функция, применяющаяся к накопленным данным. Возможные значения:

  • "hann" (по умолчанию) — подробнее см. hann;

  • "hamming" — подробнее см. hamming;

  • "blackman-harris" — подробнее см. blackmanharris;

  • "chebyshev" — подробнее см. chebwin;

  • "flat-top" — подробнее см. flattopwin;

  • "kaiser" — подробнее см. kaiser;

  • "rectangular" — подробнее см. rectwin.

Зависимости

Чтобы использовать это свойство, укажите Method = "welch".

# FullScale — полная шкала dBFS
Real number

Details

Полная шкала dBFS, заданная как положительный скаляр.

Зависимости

Чтобы использовать это свойство, укажите FullScaleSource = "property".

# SpectrumUnits — единицы измерения спектра
String

Details

Единицы измерения спектра.

Возможные значения:

# ShowColorbar — показать или скрыть цветную полосу
Logical

Details

Цветная полоса на графике:

  • false (по умолчанию) — не показывать цветную полосу;

  • true — показать цветную полосу.

Зависимости

Чтобы использовать это свойство, укажите ViewType = "spectrogram" или ViewType = "spectrum-and-spectrogram".

Методы

Общие для всех системных объектов

step!

Шаг расчета. Возвращает объект CairoMakie.Figure. Можно вызвать двумя способами:

  • прямой вызов: step!(scope, args…​);

  • вызов через функтор: scope(args…​).

release!

Разрешить изменение значения свойства системного объекта.

Характерные для EngeeDSP.spectrumAnalyzer

setup!

Вызывается при первом шаге, можно вызвать напрямую: step!(scope, args…​).

display

Повторно изобразить график.

getSpectrumData

Возвратить словарь с последними отображенными данными. Возможные ключи:

  • "spectrum";

  • "spectrogram";

  • "frequencies";

  • "times".

Примеры

Спектроанализатор для одностороннего спектра мощности

Details

Создадим объект EngeeDSP.spectrumAnalyzer и установим его свойства.

import EngeeDSP:spectrumAnalyzer

Fs = 100e6

scope = spectrumAnalyzer(SampleRate=Fs,AveragingMethod="exponential",PlotAsTwoSidedSpectrum=false,RBWSource="auto",SpectrumUnits="dBW")
spectrumAnalyzer(
	SpectrumType = "power"
	ViewType = "spectrum"
	Method = "filter-bank"
	SpectrumUnits = "dBW"
	ReferenceLoad = 1
	FullScaleSource = "auto"
	FullScale = 1
	OverlapPercent = 0
	FrequencyResolutionMethod = "rbw"
	WindowLength = 1024
	RBWSource = "auto"
	RBW = 9.76
	FFTLengthSource = "auto"
	FFTLength = 1024
	SampleRate = 1.0e8
	Window = "Hann"
	SidelobeAttenuation = 60
	FrequencyOffset = 0
	FrequencySpan = "full"
	Span = 10000.0
	CenterFrequency = 0
	StartFrequency = -5000.0
	StopFrequency = 5000.0
	PlotAsTwoSidedSpectrum = false
	AveragingMethod = "exponential"
	ForgettingFactor = 0.9
	VBWSource = "auto"
	VBW = 10
	SpectrogramChannel = 1
	TimeResolutionSource = "auto"
	TimeResolution = 0.001
	TimeSpanSource = "auto"
	TimeSpan = 0.1
	Size = (800, 500)
	Title = ""
	YLabel = ""
	YLimits = "auto"
	AxesLayout = "vertical"
	ShowColorbar = true
	ShowGrid = true
	Colormap = "jet"
	ShowLegend = false
	ColorLimits = "auto"
	LineWidth = 1.5
	LineStyle = "-"
	FrequencyScale = "linear"
)

Изобразим односторонний спектр мощности, созданный из суммы фиксированных действительных синусоид с различными амплитудами и частотами.

fSz = 5000
t = (0:fSz-1)/Fs

sin1 = sin.(2π * 5e6 * t)
sin2 = 1e-1 * sin.(2π * 15e6 * t)
sin3 = 1e-2 * sin.(2π * 25e6 * t)
sin4 = 1e-3 * sin.(2π * 35e6 * t)
sin5 = 1e-4 * sin.(2π * 45e6 * t)

for idx in 1:250
    y_total = sin1 + sin2 + sin3 + sin4 + sin5 + 0.0001 * randn(fSz)
    scope(y_total)
end

scope |> display

release!(scope)

spectrumanalyzer 1

Дополнительно

Перевод мощности из одной единицы измерения в другую

Details

В анализаторе спектра предусмотрены три единицы измерения спектральной плотности мощности: Вт/Гц, дБм/Гц и дБВт/Гц. Соответствующие единицы измерения мощности — Вт, дБм и дБВт. В электротехнических приложениях также можно просматривать среднеквадратичное значение сигнала в В (среднеквадратичное значение), дБмкВ или дБВ. Тип спектра по умолчанию — мощность в дБм.

Перевод мощности из Вт в дБВт и дБм

Мощность в дБВт определяется по формуле:

Мощность в дБм определяется по формуле:

Для синусоидального сигнала амплитудой 1 В мощность одностороннего спектра в Вт определяется по формуле:



Соответствующая мощность в дБм рассчитывается по формуле:





Для сигнала белого шума спектр плоский для всех частот. Рассмотрим сигнал белого шума с дисперсией 1e-4. Таким образом, мощность на единицу полосы пропускания ( ) равна 1e-4. Для одностороннего спектра в диапазоне общая мощность белого шума в Вт определяется по формуле:



где

  • — это частота дискретизации входного сигнала;

  • — это отношение общей полосы пропускания к разрешению по полосе пропускания ( ).

Для одностороннего спектра общая полоса пропускания составляет половину частоты дискретизации. Рассмотрим частоту дискретизации 44100 Гц и разрешение по полосе пропускания 21.53 Гц. При этих значениях общая мощность белого шума в Вт составляет 0.1024 Вт.

Мощность белого шума в дБм можно рассчитать по формуле:



Перевод мощности из Вт в дБ полной шкалы

Если вы установите спектральные единицы в dBFS и полную шкалу (FullScaleSource) в режим "auto", то мощность в dBFS будет вычисляться следующим образом:

где

  • — мощность в Вт;

  • для сигналов с двойной точностью и плавающей точкой — это максимальное значение входного сигнала;

  • для сигналов с фиксированной точкой или целых чисел — это максимальное значение, которое может быть представлено.

Если вы установите полную шкалу (FullScaleSource) в режим "property", то мощность в dBFS будет вычисляться следующим образом:

где — значение свойства FullScale.

Для синусоидального сигнала амплитудой 1 В мощность одностороннего спектра в Вт определяется по формуле:



Соответствующая мощность в дБ полной шкалы рассчитывается по формуле:



Перевод мощности из дБм в среднеквадратичное значение в В

Мощность в дБм определяется по формуле:

Напряжение (среднеквадратичное значение) вычисляется по формуле:

В предыдущем примере равен 26.9897 дБм. Значение рассчитывается как:

Алгоритмы

Расчет спектра — банк фильтров

Details

Если для Method установить значение "filter-bank", то спектроанализатор будет использовать банк фильтров для расчета спектра мощности.

Банк фильтров разделяет широкополосный входной сигнал с частотой дискретизации на несколько узкополосных сигналов с частотой дискретизации .

Переменная представляет собой количество частотных полос в банке фильтров. В анализаторе спектра равно количеству точек данных, необходимых для достижения заданного значения полосы разрешения (RBW) или 1024, в зависимости от того, какое значение больше.

После того как спектроанализатор разделяет широкополосный входной сигнал на несколько узких полос, он вычисляет мощность в каждой узкой полосе частот, используя следующее уравнение:

где каждое значение представляет собой расчет мощности в узкой полосе частот, а — длина узкополосного сигнала для .

Значения мощности во всех узких полосах частот (обозначаемых ) образуют вектор :

Спектроанализатор усредняет текущий вектор с предыдущими векторами , используя один из методов скользящего усреднения: по видеополосе или экспоненциальное взвешивание. Результат операции усреднения формирует вектор расчета спектра. Подробнее о методах усреднения см. в разделе Метод усреднения.

spectrumanalyzer 2

Спектроанализатор использует значение RBW (Гц) или количество частотных полос для определения длины входного кадра.

Если указано FrequencyResolutionMethod = "rbw", а для RBWSource задано значение:

  • "auto" — спектроанализатор определяет подходящую полосу разрешения, чтобы обеспечить наличие 1024 интервалов разрешения по полосе пропускания в заданном диапазоне частот. В этом случае спектроанализатор рассчитывает RBW по формуле:

  • "property" — спектроанализатор рассчитывает количество отсчетов , используя формулу:

    где

    • — частота дискретизации входного сигнала, заданная свойством SampleRate в Гц;

    • — указанное в RBW значение полосы разрешения, его должно быть таким, чтобы в указанном диапазоне частот находилось не менее двух интервалов RBW. Отношение общего диапазона к RBW должно быть больше двух:

      ;

    • — диапазон, в котором спектроанализатор вычисляет и строит спектр.

Если указано FrequencyResolutionMethod = "num-frequency-bands", то результирующая ширина полосы разрешения будет равна:

Расчет спектра — метод Уэлча

Details

Если для Method установить значение "welch", то расчет спектра мощности представляет собой усредненные модифицированные периодограммы.

Алгоритм спектроанализатора состоит из следующих шагов:

  1. Буферизует входные данные в сегменты данных, состоящие из точек. Каждый сегмент данных разделяется на перекрывающихся сегментов данных, каждый длиной , перекрывающихся на точек. Сегменты данных можно представить следующим образом:

    • Если , то перекрытие составляет 50%.

    • Если , то перекрытие составляет 0%.

  2. Применяет окно к каждому из перекрывающихся сегментов данных во временной области.

    Если в качестве метода разрешения FrequencyResolutionMethod выбрано значение "window-length", то можно указать длину окна данных с помощью свойства WindowLength.

    Если в качестве метода разрешения FrequencyResolutionMethod выбрано значение "rbw", то алгоритм определяет длину окна данных, используя следующее уравнение: .

    Затем он разбивает входной сигнал на несколько сегментов данных, обработанных с помощью окна.

    Большинство оконных функций оказывают большее влияние на данные в центре сегмента, чем на данные на краях, что приводит к потере информации. Чтобы уменьшить эту потерю, отдельные сегменты данных обычно перекрываются во времени. Для каждого сегмента, обработанного с помощью окна, вычисляется периодограмма путем вычисления дискретного преобразования Фурье. Затем вычисляется квадрат модуля результата и делится на :

    где — коэффициент нормализации для мощности в оконной функции и определяется как:

    Окно можно задать в свойстве Window.

  3. Спектроанализатор вычисляет и строит спектр мощности, спектральную плотность мощности и среднеквадратичное значение, используя модифицированный метод расчета периодограммы.

    Чтобы определить расчет спектра мощности для метода Уэлча, спектроанализатор усредняет результаты периодограмм для последних сегментов данных. Усреднение уменьшает дисперсию по сравнению с исходным -точечным сегментом данных. Подробнее о методах усреднения см. в разделе Метод усреднения.

    • Спектроанализатор вычисляет спектральную плотность мощности, используя:

    • Спектр мощности является произведением спектральной плотности мощности и полосы разрешения:

    • Спектроанализатор отображает мощность в виде спектрограммы в режиме "spectrogram". Каждая линия спектрограммы представляет собой периодограмму. Временное разрешение каждой линии составляет , что является минимально достижимым разрешением. Для достижения необходимого разрешения может потребоваться объединение нескольких периодограмм. Затем с помощью интерполяции вычисляются нецелые значения . На экране спектрограммы время прокручивается сверху вниз, поэтому самые последние данные отображаются в верхней части экрана. Смещение показывает время, при котором находился центр самой последней линии спектрограммы.

Спектроанализатор использует определенное количество отсчетов для расчета спектра. Это значение напрямую связано с полосой разрешения ( ) с помощью следующего уравнения:

или с длиной окна ( ) с помощью уравнения:

где

Если в качестве метода разрешения FrequencyResolutionMethod выбрано значение "rbw", то длина окна определяется по формуле:

Если в качестве метода разрешения FrequencyResolutionMethod выбрано значение "window-length" алгоритм использует значение длины окна, указанное в свойстве WindowLength.

Процент перекрытия (Op)

Details

Процент перекрытия — это значение, указанное в свойстве OverlapPercent.

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

0%

100

50%

50

80%

20

Нормализованная эффективная ширина полосы шума (NENBW)

Details

Нормированная эффективная шумовая полоса (Normalized Effective Noise Bandwidth, ) — это параметр окна, измеряющий шумовые характеристики окна. Значение определяется с использованием длины окна и его коэффициентов и задается следующим уравнением:

где обозначает вектор коэффициентов окна, а — длина окна. Подробнее о том, как алгоритм определяет длину окна, см. раздел Расчет спектра — метод Уэлча.

Наименьшее значение имеет прямоугольное окно, равное 1. Все остальные окна имеют большее значение . Например, окно Ханна имеет значение приблизительно 1.5.

Полоса разрешения (RBW)

Details

Полоса разрешения управляет спектральным разрешением отображаемого сигнала. Значение определяет интервал между частотами, которые может разрешить спектроанализатор. Меньшее значение обеспечивает более высокое спектральное разрешение и снижает уровень шума, то есть спектроанализатор может разрешать частоты, расположенные ближе друг к другу. Однако это приводит к увеличению времени развертки.

Полоса разрешения может быть задана с помощью свойства RBW в Гц.

Если указано FrequencyResolutionMethod = "rbw", а для RBWSource задано значение:

  • "auto" — спектроанализатор определяет подходящую полосу разрешения, чтобы обеспечить наличие 1024 интервалов разрешения по полосе пропускания в заданном диапазоне частот. В этом случае спектроанализатор рассчитывает RBW по формуле:

  • "property" — спектроанализатор рассчитывает количество отсчетов , используя формулу:

    где

    • — частота дискретизации входного сигнала, заданная свойством SampleRate в Гц;

    • — указанное в RBW значение полосы разрешения, его должно быть таким, чтобы в указанном диапазоне частот находилось не менее двух интервалов RBW. Отношение общего диапазона к RBW должно быть больше двух:

      ;

    • — диапазон, в котором спектроанализатор вычисляет и строит спектр.

Если указано FrequencyResolutionMethod = "num-frequency-bands", то результирующая ширина полосы разрешения будет равна:

Частотный интервал Найквиста

Details

При построении двустороннего спектра, когда PlotAsTwoSidedSpectrum = true, частотный интервал Найквиста составляет в Гц.

Когда PlotAsTwoSidedSpectrum = false частотный интервал Найквиста в Гц.

Метод усреднения

Details

Спектроанализатор вычисляет скользящее среднее значение одним из следующих методов:

  • Видеополоса — спектроанализатор использует фильтр нижних частот во временной области для сглаживания шума в сигнале. Фильтр видеополосы ( ) сглаживает кривую и уменьшает шум, а спектроанализатор применяет этот фильтр к данным перед их отображением.

    Видеополоса — это полоса пропускания фильтра нижних частот, которую спектроанализатор использует для усреднения или сглаживания шума в сигнале перед его отображением. Спектроанализатор вычисляет видеополосу по следующей формуле:

    где

    • — коэффициент забывания;

    • — полоса разрешения, подробнее см. в разделе Полоса разрешения (RBW);

    • — нормализованная эффективная ширина полосы шума, подробнее см. в разделе Нормализованная эффективная ширина полосы шума (NENBW).

      Видеополоса не влияет на уровень шума (шумовой порог), а лишь увеличивает отношение сигнал/шум и сглаживает кривую шума. При уменьшении значения отношение сигнал/шум улучшается.

      Частота среза фильтра видеополосы определяется по формуле:

      где

    • — частота дискретизации входного сигнала;

    • — количество точек БПФ.

  • Экспоненциальный — алгоритм скользящего среднего использует метод экспоненциального взвешивания для обновления весов и рекурсивного вычисления скользящего среднего для каждого поступающего вектора с использованием следующих рекурсивных уравнений:



    где

    • — коэффициент забывания;

    • — весовой коэффициент, применяемый к текущему вектору ;

    • — текущий вектор ;

    • — скользящее среднее до предыдущего вектора ;

    • — влияние предыдущих векторов на среднее;

    • — скользящее среднее, включающее текущий вектор .