snr

Отношение сигнал/шум

Описание

пример

r = snr(x,y) возвращает отношение сигнал/шум (ОСШ) в децибелах сигнала, x, путем вычисления отношения его суммированной квадратной величины к отношению шума, y. y должны иметь те же размерности, что и x. Используйте эту форму, когда входной сигнал не обязательно синусоидален, и у вас есть оценка шума.

пример

r = snr(x) возвращает ОСШ в децибелах относительно несущей (dBc) действительного синусоидального входного сигнала, x. ОСШ определяется с помощью модифицированной периодограммы той же длины, что и вход. Измененная периодограмма использует окно Кайзера с β = 38. Результат исключает степень первых шести гармоник, включая фундаментальную.

пример

r = snr(x,fs,n) возвращает ОСШ в dBc действительного синусоидального входного сигнала, x, дискретизированный со скоростью fs. Этот расчет исключает степени, содержащиеся в самой низкой n гармоники, в том числе фундаментальные. Значение по умолчанию fs равен 1. Значение по умолчанию n равен 6.

пример

r = snr(pxx,f,'psd') задает входное pxx как односторонняя оценка спектральной плотности степени (PSD). Аргумент f является вектором частот, на которых оцениваются pxx имеют место. Расчет шума исключает степень первых шести гармоник, включая фундаментальную.

r = snr(pxx,f,n,'psd') определяет количество гармоник, n, чтобы исключить при вычислении ОСШ. Значение по умолчанию n равен 6 и включает в себя основной.

пример

r = snr(sxx,f,rbw,'power') задает вход как односторонний спектр степени, sxx, реального сигнала. Область входа rbw - пропускная способность разрешения, по которой интегрируется каждая оценка степени.

r = snr(sxx,f,rbw,n,'power') определяет количество гармоник, n, чтобы исключить при вычислении ОСШ. Значение по умолчанию n равен 6 и включает в себя основной.

пример

r = snr(___,'aliased') удаляет гармоники фундаментальных, которые сглаживаются в область значений Nyquist. Используйте эту опцию при пониженной дискретизации входного сигнала. Если вы не задаете эту опцию, или если вы задаете ее 'omitaliases'тогда функция обрабатывает как шум любые гармоники основной частоты, которые находятся за пределами области значений Найквиста.

пример

[r,noisepow] = snr(___) также возвращает общую степень негармонических компонентов сигнала.

пример

snr(___) без выходных аргументов строит графики спектра сигнала в текущую фигуру окне и помечает его основные функции. Он использует различные цвета, чтобы нарисовать основной компонент, значение постоянного тока и гармоники, и шум. ОСШ появляется над графиком. Эта функциональность работает со всеми синтаксисами, перечисленными выше, кроме snr(x,y).

Примеры

свернуть все

Сгенерируйте 20-миллисекундный прямоугольный импульс, дискретизированный в течение 2 секунд при 10 кГц.

Tpulse = 20e-3;
Fs = 10e3;
t = -1:1/Fs:1;
x = rectpuls(t,Tpulse);

Встройте импульс в белый Гауссов шум таким образом, чтобы отношение сигнал/шум (ОСШ) составляло 53 дБ. Сбросьте генератор случайных чисел для воспроизводимых результатов.

rng default

SNR = 53;
y = randn(size(x))*std(x)/db2mag(SNR);

s = x + y;

Используйте snr функция для вычисления ОСШ сигнала с шумом.

pulseSNR = snr(x,y)
pulseSNR = 53.1255

Вычислите и сравните отношение сигнал/шум (ОСШ), общее гармоническое искажение (THD) и отношение сигнала к шуму и искажениям (SINAD) сигнала.

Создайте синусоидальный сигнал, дискретизированный с частотой 48 кГц. Сигнал имеет основной частотный 1 кГц и единичную амплитуду. Дополнительно содержит гармонику 2 кГц с половинной амплитудой и аддитивным шумом с отклонением 0,1 ².

fs = 48e3;
t = 0:1/fs:1-1/fs;
A = 1.0;
powfund = A^2/2;
a = 0.4;
powharm = a^2/2;
s = 0.1;
varnoise = s^2;
x = A*cos(2*pi*1000*t) + ...
    a*sin(2*pi*2000*t) + s*randn(size(t));

Проверьте, что ОСШ, THD и SINAD согласны с их определениями.

SNR = snr(x);
defSNR = 10*log10(powfund/varnoise);
SN = [SNR defSNR]
SN = 1×2

   17.0178   16.9897

THD = thd(x);
defTHD = 10*log10(powharm/powfund);
TH = [THD defTHD]
TH = 1×2

   -7.9546   -7.9588

SINAD = sinad(x);
defSINAD = 10*log10(powfund/(powharm+varnoise));
SI = [SINAD defSINAD]
SI = 1×2

    7.4571    7.4473

Вычислите ОСШ синусоиды 2,5 кГц, выбранной при 48 кГц. Добавьте белый шум с отклонением 0,001 ².

Fi = 2500;
Fs = 48e3;
N = 1024;
x = sin(2*pi*Fi/Fs*(1:N)) + 0.001*randn(1,N);
SNR = snr(x,Fs)
SNR = 57.7103

Постройте график спектра и аннотируйте ОСШ.

snr(x,Fs);

Figure contains an axes. The axes with title SNR: 57.71 dB contains 17 objects of type line, text. These objects represent Fundamental, Noise, DC and Harmonics (excluded).

Получите оценку спектральной плотности степени пародограммы (PSD) синусоиды 2,5 кГц, выбранной при 48 кГц. Добавьте белый шум со стандартным отклонением 0.00001. Используйте это значение как вход для определения ОСШ. Установите генератор случайных чисел в настройки по умолчанию для воспроизводимых результатов.

rng default
Fi = 2500;
Fs = 48e3;
N = 1024;
x = sin(2*pi*Fi/Fs*(1:N)) + 0.00001*randn(1,N);

w = kaiser(numel(x),38);
[Pxx, F] = periodogram(x,w,numel(x),Fs);
SNR = snr(Pxx,F,'psd')
SNR = 97.7446

Используя спектр степени, вычислите ОСШ синусоиды 2,5 кГц, выбранной с частотой 48 кГц и встроенной в белый шум со стандартным отклонением 0,00001. Сбросьте генератор случайных чисел для воспроизводимых результатов.

rng default
Fi = 2500;
Fs = 48e3;
N = 1024;
x = sin(2*pi*Fi/Fs*(1:N)) + 0.00001*randn(1,N);

w = kaiser(numel(x),38);
[Sxx, F] = periodogram(x,w,numel(x),Fs,'power');
rbw = enbw(w,Fs);
SNR = snr(Sxx,F,rbw,'power')
SNR = 97.7446

Постройте график спектра сигнала и аннотируйте ОСШ.

snr(Sxx,F,rbw,'power');

Figure contains an axes. The axes with title SNR: 97.74 dB contains 17 objects of type line, text. These objects represent Fundamental, Noise, DC and Harmonics (excluded).

Сгенерируйте сигнал, который напоминает выход слабо нелинейного усилителя с тональным сигналом 2,1 кГц в качестве входного сигнала. Дискретизация сигнала производится в течение 1 секунды при частоте 10 кГц. Вычислите и постройте график степени спектра сигнала. Используйте окно Кайзера с β = 38 для расчета.

Fs = 10000;
f = 2100;

t = 0:1/Fs:1; 
x = tanh(sin(2*pi*f*t)+0.1) + 0.001*randn(1,length(t));

periodogram(x,kaiser(length(x),38),[],Fs,'power')

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

Из шума торчат гармоники на частотах 4,2 к Гц, 6,3 к Гц, 8,4 к Гц, 10,5 к Гц, 12,6 к Гц и 14,7 к Гц. Все частоты, кроме первой, больше частоты Найквиста. Гармоники сглаживаются соответственно на частоте 3,7 кГц, 1,6 кГц, 0,5 кГц, 2,6 кГц и 4,7 кГц.

Вычислите отношение сигнал/шум сигнала. По умолчанию snr рассматривает сглаженные гармоники как часть шума.

snr(x,Fs,7);

Figure contains an axes. The axes with title SNR: 23.62 dB contains 14 objects of type line, text. These objects represent Fundamental, Noise, DC and Harmonics (excluded).

Повторите расчет, но теперь обработайте сглаженные гармоники как часть сигнала.

snr(x,Fs,7,'aliased');

Figure contains an axes. The axes with title SNR: 55.23 dB contains 19 objects of type line, text. These objects represent Fundamental, Noise, DC and Harmonics (excluded).

Создайте синусоидальный сигнал, дискретизированный с частотой 48 кГц. Сигнал имеет основной частотный 1 кГц и единичную амплитуду. Дополнительно содержит гармонику 2 кГц с половинной амплитудой и аддитивным шумом с отклонением 0,1 ².

fs = 48e3;
t = 0:1/fs:1-1/fs;

A = 1.0;
powfund = A^2/2;
a = 0.4;
powharm = a^2/2;
s = 0.1;
varnoise = s^2;

x = A*cos(2*pi*1000*t) + ...
    a*sin(2*pi*2000*t) + s*randn(size(t));

Вычислите степень шума в сигнале. Проверьте, что он согласен с определением.

[SNR,npow] = snr(x,fs);
compare = [10*log10(powfund)-npow SNR]
compare = 1×2

   17.0281   17.0178

Сгенерируйте синусоиду частоты 2,5 кГц, отобранную с частотой дискретизации 50 кГц. Сбросьте генератор случайных чисел. Добавьте к сигналу Гауссов белый шум со стандартным отклонением 0.00005. Пропустите результат через слабо нелинейный усилитель. Постройте график ОСШ.

rng default

fs = 5e4; 
f0 = 2.5e3;
N = 1024;
t = (0:N-1)/fs;

ct = cos(2*pi*f0*t);
cd = ct + 0.00005*randn(size(ct));

amp = [1e-5 5e-6 -1e-3 6e-5 1 25e-3];
sgn = polyval(amp,cd);

snr(sgn,fs);

Figure contains an axes. The axes with title SNR: 83.80 dB contains 17 objects of type line, text. These objects represent Fundamental, Noise, DC and Harmonics (excluded).

Компонент постоянного тока и все гармоники, включая основной, исключены из измерения шума. Основные и гармоники маркированы.

Входные параметры

свернуть все

Реальный входной сигнал, заданный как строка или вектор-столбец.

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

Оценка шума в входном сигнале, заданная как реальная строка или вектор-столбец. Он должен иметь те же размерности, что и x.

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

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

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

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

Односторонняя оценка степени спектральной плотности, заданная в виде действительного неотрицательного вектора-столбца.

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

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

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

Циклические частоты односторонней оценки PSD, pxx, заданный как строка или вектор-столбец. Первый элемент f должно быть 0.

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

Степень спектр, заданный как действительная неотрицательная строка или вектор-столбец.

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

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

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

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

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

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

свернуть все

Отношение сигнал/шум, выраженное в децибелах относительно несущей (dBc), возвращается как реальный скаляр. ОСШ возвращается в децибелах (дБ), если входной сигнал не синусоидален.

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

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

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

Подробнее о

свернуть все

Функции измерения искажений

Функции thd, sfdr, sinad, и snr измерить ответ слабо нелинейной системы, стимулируемой синусоидой.

Когда задан вход во временной области, snr выполняет периодограмму с использованием окна Кайзера с большим ослаблением бокового колеса. Чтобы найти основную частоту, алгоритм ищет периодограмму для наибольшего ненулевого спектрального компонента. Затем вычисляется центральный момент всех смежных интервалов, которые уменьшаются монотонно от максимума. Чтобы быть обнаруживаемым, основной параметр должен быть, по крайней мере, во втором частотном интервале. Более высокие гармоники находятся в целочисленных множителях основной частоты. Если гармоника находится внутри монотонно уменьшающейся области в окрестности другой, то считается, что ее степень принадлежит большей гармонике. Эта большая гармоника может быть или не быть основной.

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

snr отказывает, если основной является не самым высоким спектральным компонентом в сигнале.

Убедитесь, что частотные составляющие расположены достаточно далеко друг от друга, чтобы соответствовать ширине бокового колеса окна Кайзера. Если это невозможно, можно использовать 'power' флаг и вычисление периодограммы с другим окном.

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

.
Введенный в R2013b