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

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

Синтаксис

r = snr(x,y)
r = snr(x)
r = snr(x,fs,n)
r = snr(pxx,f,'psd')
r = snr(pxx,f,n,'psd')
r = snr(sxx,f,rbw,'power')
r = snr(sxx,f,rbw,n,'power')
r = snr(___,'aliased')
[r,noisepow] = snr(___)
snr(___)

Описание

пример

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

пример

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

пример

r = snr(x,fs,n) возвращает ОСШ в дБн действительного синусоидального входного сигнала, 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') удаляет гармоники основного принципа, которые искажаются в область значений Найквиста. Используйте эту опцию, когда входной сигнал будет субдискретизироваться. Если вы не задаете эту опцию, или если вы устанавливаете ее на 'omitaliases', то функция обрабатывает как шум любые гармоники основной частоты, которые лежат за пределами области значений Найквиста.

пример

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

пример

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

Примеры

свернуть все

Вычислите отношение сигнал-шум (SNR) меандра на 20 мс, выбранного в течение 2 с на уровне 10 кГц в присутствии Гауссова шума. Установите генератор случайных чисел на настройки по умолчанию для восстанавливаемых результатов.

rng default
Tpulse = 20e-3;
Fs = 10e3;
t = -1:1/Fs:1;
x = rectpuls(t,Tpulse);
y = 0.00001*randn(size(x));
s = x + y;
pulseSNR = snr(x,s-x)
pulseSNR = 80.0818

Вычислите и сравните отношение сигнал-шум (SNR), общее гармоническое искажение (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);

Получите оценку степени спектральной плотности (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');

Сгенерируйте сигнал, который напоминает вывод слабо нелинейного усилителя с тоном на 2,1 кГц, как введено. Сигнал выбирается в течение 1 секунды на уровне 10 кГц. Вычислите и постройте спектр мощности сигнала. Используйте окно Kaiser с β = 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')

Гармоники терпят от шума на частотах 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);

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

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

Создайте синусоидальный сигнал, выбранный на уровне 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);

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

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

свернуть все

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

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

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

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

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

Типы данных: 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

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

свернуть все

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

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

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

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

Больше о

свернуть все

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

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

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

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

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

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

Введенный в R2013b