exponenta event banner

SNR

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

Описание

пример

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

пример

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

пример

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

пример

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

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

пример

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

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

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

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

rng default

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

s = x + y;

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

pulseSNR = snr(x,y)
pulseSNR = 53.1255

Вычисляют и сравнивают отношение сигнал/шум (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));

Убедитесь, что SNR, 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

Вычисляют SNR синусоиды 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.

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. Используйте это значение в качестве входных данных для определения SNR. Установите для генератора случайных чисел значения по умолчанию для воспроизводимых результатов.

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

Используя спектр мощности, вычислите SNR синусоиды 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.

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 к сигналу. Пропускайте результат через слабо нелинейный усилитель. Постройте график SNR.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

Суммарная мощность шума негармонических составляющих входного сигнала, возвращаемая в виде действительного скаляра.

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

Подробнее

свернуть все

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

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

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

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

snr неуспешно, если фундаментальная не является самой высокой спектральной составляющей в сигнале.

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

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

.
Представлен в R2013b