exponenta event banner

obw

Занятая полоса пропускания

Описание

bw = obw(x) возвращает 99% занятую полосу пропускания, bw, входного сигнала, x.

пример

bw = obw(x,fs) возвращает занятую полосу пропускания с точки зрения частоты дискретизации, fs.

пример

bw = obw(pxx,f) возвращает 99% занятую полосу пропускания оценки спектральной плотности мощности (PSD), pxx. Частоты, f, соответствуют оценкам в pxx.

bw = obw(sxx,f,rbw) вычисляет занимаемую полосу пропускания оценки спектра мощности, sxx. Частоты, f, соответствуют оценкам в sxx. rbw - пропускная способность разрешения, используемая для интеграции каждой оценки мощности.

bw = obw(___,freqrange,p) определяет интервал частот, по которому вычисляется занимаемая полоса пропускания. Этот синтаксис может включать любую комбинацию входных аргументов из предыдущих синтаксисов, если второй входной аргумент либо fs или f. Если второй вход пропускается как пустой, предполагается нормированная частота. Этот синтаксис также определяет p, процент от общей мощности сигнала, содержащейся в занятой полосе.

пример

[bw,flo,fhi,power] = obw(___) также возвращает нижнюю и верхнюю границы занятой полосы пропускания и мощность занятой полосы частот.

obw(___) без выходных аргументов отображает PSD или спектр мощности в окне текущего рисунка и аннотирует полосу пропускания.

Примеры

свернуть все

Генерируют 1024 выборки чирпа, дискретизированные на частоте 1024 кГц. Чирп имеет начальную частоту 50 кГц и достигает 100 кГц в конце выборки. Добавьте белый гауссов шум, чтобы отношение сигнал/шум было 40 дБ. Сбросьте генератор случайных чисел для воспроизводимых результатов.

nSamp = 1024;
Fs = 1024e3;
SNR = 40;
rng default

t = (0:nSamp-1)'/Fs;

x = chirp(t,50e3,nSamp/Fs,100e3);
x = x+randn(size(x))*std(x)/db2mag(SNR);

Оцените занимаемую полосу пропускания сигнала и аннотируйте его на графике спектральной плотности мощности (PSD).

obw(x,Fs)

Figure contains an axes. The axes with title 99% Occupied Bandwidth: 55.377 kHz contains 4 objects of type line, patch.

ans = 5.5377e+04

Создайте еще одну чирп. Укажите начальную частоту 200 кГц, конечную частоту 300 кГц и амплитуду, в два раза превышающую амплитуду первого сигнала. Добавьте белый гауссов шум.

x2 = 2*chirp(t,200e3,nSamp/Fs,300e3);
x2 = x2+randn(size(x2))*std(x2)/db2mag(SNR);

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

y = obw([x x2],Fs)
y = 1×2
105 ×

    0.5538    1.0546

Аннотировать занимаемые полосы пропускания двух каналов на графике PSD.

obw([x x2],Fs);

Figure contains an axes. The axes with title 99% Occupied Bandwidth contains 8 objects of type line, patch.

Добавьте два канала для формирования нового сигнала. Постройте график PSD и аннотируйте занимаемую полосу пропускания.

obw(x+x2,Fs);

Figure contains an axes. The axes with title 99% Occupied Bandwidth: 250.015 kHz contains 4 objects of type line, patch.

Генерация 1024 выборок синусоиды 100,123 кГц, отобранных на частоте 1024 кГц. Добавьте белый гауссов шум, чтобы отношение сигнал/шум было 40 дБ. Сбросьте генератор случайных чисел для воспроизводимых результатов.

nSamp = 1024;
Fs = 1024e3;
SNR = 40;
rng default

t = (0:nSamp-1)'/Fs;

x = sin(2*pi*t*100.123e3);
x = x + randn(size(x))*std(x)/db2mag(SNR);

Используйте periodogram функция для вычисления спектральной плотности мощности (PSD) сигнала. Укажите окно Кайзера с той же длиной, что и сигнал, и коэффициентом формы 38. Оцените занимаемую полосу пропускания сигнала и аннотируйте его на графике PSD.

[Pxx,f] = periodogram(x,kaiser(nSamp,38),[],Fs);

obw(Pxx,f);

Figure contains an axes. The axes with title 99% Occupied Bandwidth: 7.200 kHz contains 4 objects of type line, patch.

Генерируйте другую синусоиду, эту с частотой 257,321 кГц и амплитудой, в два раза превышающей амплитуду первой синусоиды. Добавьте белый гауссов шум.

x2 = 2*sin(2*pi*t*257.321e3);
x2 = x2 + randn(size(x2))*std(x2)/db2mag(SNR);

Соединяют синусоиды для получения двухканального сигнала. Оцените PSD каждого канала и используйте результат для определения занятой полосы пропускания.

[Pyy,f] = periodogram([x x2],kaiser(nSamp,38),[],Fs);

y = obw(Pyy,f)
y = 1×2
103 ×

    7.2001    7.3777

Аннотировать занимаемые полосы пропускания двух каналов на графике PSD.

obw(Pyy,f);

Figure contains an axes. The axes with title 99% Occupied Bandwidth contains 8 objects of type line, patch.

Добавьте два канала для формирования нового сигнала. Оцените PSD и аннотируйте занятую полосу пропускания.

[Pzz,f] = periodogram(x+x2,kaiser(nSamp,38),[],Fs);

obw(Pzz,f);

Figure contains an axes. The axes with title 99% Occupied Bandwidth: 163.494 kHz contains 4 objects of type line, patch.

Создайте сигнал, PSD которого напоминает частотную характеристику полосового FIR-фильтра 88-го порядка с нормированными частотами отсечения 0.25δ рад/выборка и 0.45δ рад/выборка.

d = fir1(88,[0.25 0.45]);

Вычислите 99% занимаемую полосу пропускания сигнала между 0,2δ рад/выборка и 0,6δ рад/выборка. Постройте график PSD и аннотируйте занимаемую полосу пропускания и интервал измерения.

obw(d,[],[0.2 0.6]*pi);

Figure contains an axes. The axes with title 99% Occupied Bandwidth: 217.416 \times \pi mrad/sample contains 6 objects of type line, patch.

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

[bw,flo,fhi,power] = obw(d,2*pi,[0.2 0.6]*pi);

fprintf('bw = %.3f*pi, flo = %.3f*pi, fhi = %.3f*pi \n',[bw flo fhi]/pi)
bw = 0.217*pi, flo = 0.240*pi, fhi = 0.458*pi 
fprintf('power = %.1f%% of total',power/bandpower(d)*100)
power = 99.0% of total

Добавьте второй канал с нормализованными частотами отсечения 0.5δ рад/выборка и 0.8δ рад/выборка и амплитудой, которая равна одной десятой амплитуды первого канала.

d = [d;fir1(88,[0.5 0.8])/10]';

Вычислите 50% -ную полосу пропускания сигнала между 0,3δ рад/выборка и 0,9δ рад/выборка. Постройте график PSD и аннотируйте занимаемую полосу пропускания и интервал измерения.

obw(d,[],[0.3 0.9]*pi,50);

Figure contains an axes. The axes with title 50% Occupied Bandwidth contains 10 objects of type line, patch.

Вывод занятой полосы пропускания каждого канала. Делить на δ.

bw = obw(d,[],[0.3 0.9]*pi,50)/pi
bw = 1×2

    0.0705    0.1412

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

свернуть все

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

Пример: cos(pi/4*(0:159))+randn(1,160) - одноканальный строково-векторный сигнал.

Пример: cos(pi./[4;2]*(0:159))'+randn(160,2) является двухканальным сигналом.

Типы данных: single | double

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

Типы данных: single | double

Спектральная плотность мощности (PSD), заданная как вектор или матрица с действительными неотрицательными элементами. Если pxx является односторонней оценкой, то она должна соответствовать реальному сигналу. Если pxx является матрицей, то obw вычисляет занятую полосу пропускания каждого столбца из pxx независимо.

Спектральная плотность мощности должна быть выражена в линейных единицах, а не децибелах. Использовать db2pow для преобразования децибел в значения мощности.

Пример: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2)) определяет оценку пародограммы PSD шумной двухканальной синусоиды, дискретизированной при 2δ Гц, и частоты, на которых она вычисляется.

Типы данных: single | double

Частоты, заданные как вектор.

Типы данных: single | double

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

Спектр мощности должен быть выражен в линейных единицах, а не децибелах. Использовать db2pow для преобразования децибел в значения мощности.

Пример: [sxx,w] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2),'power') задает оценку спектра мощности периодограммы двухканальной синусоиды, внедренной в белый гауссов шум, и нормированные частоты, на которых она вычисляется.

Типы данных: single | double

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

Типы данных: single | double

Частотный диапазон, определяемый как двухэлементный вектор вещественных значений. Если не указать freqrange, то obw использует всю полосу пропускания входного сигнала.

Типы данных: single | double

Процент мощности, заданный как положительный скаляр от 0 до 100. obw вычисляет разность частот между точками, где интегрированная мощность пересекает ½ ( 100  -p) и ½ ( 100  +p) проценты от общей мощности в спектре.

Типы данных: single | double

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

свернуть все

Занятая полоса пропускания, возвращаемая как скаляр или вектор.

  • Если вы указываете частоту выборки, то bw имеет те же единицы, что и fs.

  • Если частота выборки не указана, то bw содержит единицы рад/образец.

Частотные границы полосы пропускания, возвращаемые в виде скаляров или векторов.

Мощность, хранимая в полосе пропускания, возвращаемая как скаляр или вектор.

Алгоритмы

Для определения занятой полосы пропускания, obw вычисляет оценку спектральной плотности мощности периодограммы с использованием прямоугольного окна и интегрирует оценку с использованием правила средней точки. Занимаемая полоса пропускания - это разность частот между точками, где интегрированная мощность пересекает 0,5% и 99,5% от общей мощности в спектре.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

| | | |

Представлен в R2015a