Добавьте белый Гауссов шум к входному сигналу
comm.AWGNChannel добавляет белый Гауссов шум к входному сигналу.
Когда применимо, если входы к объекту имеют переменное количество каналов, свойства EbNo, EsNo, SNR, BitsPerSymbol, SignalPower, SamplesPerSymbol и Variance должны быть скалярами.
Чтобы добавить белый Гауссов шум к входному сигналу:
Создайте comm.AWGNChannel
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
создает аддитивный канал белого Гауссова шума (AWGN) System object™, awgnchan
= comm.AWGNChannelawgnchan
. Затем этот объект добавляет белый Гауссов шум к действительному или комплексному входному сигналу.
создает объект канала AWGN, awgnchan
= comm.AWGNChannel(Name
,Value
)awgnchan
, с заданным свойством Name
установить на заданную Value
. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1
, Value1
..., NameN
, ValueN
).
Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release
функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
NoiseMethod
- Метод уровня шума'Signal to noise ratio (Eb/No)'
(по умолчанию) | 'Signal to noise ratio (Es/No)'
| 'Signal to noise ratio (SNR)'
| 'Variance'
Метод уровня шума, заданный как 'Signal to noise ratio (Eb/No)'
, 'Signal to noise ratio (Es/No)'
, 'Signal to noise ratio (SNR)'
, или 'Variance'
. Для получения дополнительной информации смотрите Определение отклонения прямо или косвенно.
Типы данных: char
EbNo
- Отношение энергии на бит к спектральной плотности степени шума10
(по умолчанию) | скалярный вектор | строкуОтношение энергии на бит к спектральной плотности степени шума (Eb/No) в децибелах, заданное как скалярный или 1-бай- N вектор C. N C - количество каналов.
Настраиваемый: Да
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)'
.
Типы данных: double
EsNo
- Отношение энергии на символ к спектральной плотности степени шума10
(по умолчанию) | скалярный вектор | строкуОтношение энергии на символ к спектральной плотности степени шума (Es/No) в децибелах, заданное как скалярный или 1-бай- N вектор C. N C - количество каналов.
Настраиваемый: Да
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Es/No)'
.
Типы данных: double
SNR
- Отношение степени сигнала к степени шума10
(по умолчанию) | скалярный вектор | строкуОтношение степени сигнала к степени шума в децибелах, заданное как скалярный или 1-байт- N вектор C. N C - количество каналов.
Настраиваемый: Да
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (SNR)'
.
Типы данных: double
BitsPerSymbol
- Количество битов на символ1
(по умолчанию) | положительное целое числоКоличество бит на символ, заданное как положительное целое число.
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)'
.
Типы данных: double
SignalPower
- Мощность входного сигнала1
(по умолчанию) | положительная скалярная величина | вектор-строкаВходной сигналв ваттах, заданная как положительный скаляр или 1-байт N вектор C. N C - количество каналов. Объект принимает номинальное сопротивление 1 Ом.
Настраиваемый: Да
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)'
, 'Signal to noise ratio (Es/No)'
, или 'Signal to noise ratio (SNR)'
.
Типы данных: double
SamplesPerSymbol
- Количество выборок на символ1
(по умолчанию) | положительное целое число | вектор-строкаКоличество выборок на символ, заданное в виде положительного целого числа или 1-байтового N вектора C. N C - количество каналов.
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)'
или 'Signal to noise ratio (Es/No)'
.
Типы данных: double
VarianceSource
- Источник отклонения шума'Property'
(по умолчанию) | 'Input port'
Источник отклонения шума, заданный как 'Property'
или 'Input port'
.
Задайте VarianceSource
на 'Property'
чтобы задать значение отклонения шума с помощью свойства Дисперсия.
Задайте VarianceSource
на 'Input port'
задать значение отклонения шума с помощью входа в объект, когда вы вызываете его как функцию.
Для получения дополнительной информации смотрите Определение отклонения прямо или косвенно.
Это свойство применяется, когда NoiseMethod 'Variance'
.
Типы данных: char
Variance
- Белая Гауссово отклонение шума1
(по умолчанию) | положительная скалярная величина | вектор-строкаБелая Гауссова шумовое отклонение, заданная как положительный скаляр или 1-байт N вектор C. N C - количество каналов.
Настраиваемый: Да
Это свойство применяется, когда NoiseMethod установлен в 'Variance'
и для параметра VarianceSource задано значение 'Property'
.
Типы данных: double
RandomStream
- Источник потока случайных чисел'Global stream'
(по умолчанию) | 'mt19937ar with seed'
Источник потока случайных чисел, заданный как 'Global stream'
или 'mt19937ar with seed'
.
Когда вы задаете RandomStream
на 'Global stream'
объект использует MATLAB® случайный поток по умолчанию для генерации случайных чисел. Чтобы сгенерировать воспроизводимые числа с помощью этого объекта, можно сбросить случайный поток MATLAB по умолчанию. Для примера reset(RandStream.getGlobalStream)
. Для получения дополнительной информации см. RandStream
.
Когда вы задаете RandomStream
на 'mt19937ar with seed'
объект использует алгоритм mt19937ar для нормально распределенной генерации случайных чисел. В этом сценарии, когда вы вызываете reset
функция, объект повторно инициализирует поток случайных чисел к значению Seed
свойство. Можно сгенерировать воспроизводимые числа путем сброса объекта.
Для комплексного входного сигнала объект создает случайные данные следующим образом:
N S - количество выборок, а N C - количество каналов.Это свойство применяется, когда NoiseMethod установлен в 'Variance'
.
Типы данных: char
Seed
- Начальный seed67
(по умолчанию) | неотрицательное целое числоНачальное начальное число потока случайных чисел mt19937ar, заданное как неотрицательное целое число. Для каждого вызова на reset
функция, объект повторно инициализирует поток случайных чисел mt19937ar в Seed
значение.
Это свойство применяется, когда для RandomStream задано значение 'mt19937ar with seed'
.
Типы данных: double
задает отклонение белого Гауссова шума. Этот синтаксис применяется, когда вы задаете значение NoiseMethod outsignal
= awgnchan(insignal
,var
)'Variance'
и VarianceSource к 'Input port'
.
Для примера:
awgnchan = comm.AWGNChannel('NoiseMethod','Variance', ... 'VarianceSource','Input port'); var = 12; ... outsignal = awgnchan(insignal,var);
insignal
- Входной сигналВходной сигнал, заданный как скаляр, N вектор S-элемента или N S-бай- N C матрица. N S - количество выборок, а N C - количество каналов.
Типы данных: double
Поддержка комплексного числа: Да
var
- Отклонение аддитивного белого Гауссово шумаОтклонение аддитивного белого Гауссово шума, заданная как положительный скаляр или 1-байт N вектор C. N C - количество каналов, определяемое количеством столбцов в матрице входного сигнала.
outsignal
- Выходной сигналВыходной сигнал, возвращенный с такими же размерностями, как insignal
.
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
Создайте объект системы канала AWGN с настройкой по умолчанию. Передайте данные сигнала через этот канал.
Создайте объект канала AWGN и данные о сигнале.
awgnchan = comm.AWGNChannel; insignal = randi([0 1],100,1);
Передайте входной сигнал через канал.
outsignal = awgnchan(insignal);
Модулируйте сигнал 8-PSK, добавьте белый Гауссов шум и постройте график сигнала, чтобы визуализировать эффекты шума.
Создайте систему модулятора M-PSK object™. Порядок модуляции по умолчанию для объекта равен 8.
pskModulator = comm.PSKModulator;
Модулируйте сигнал.
modData = pskModulator(randi([0 7],2000,1));
Добавьте белый Гауссов шум к модулированному сигналу путем передачи сигнала через аддитивный канал белого Гауссова шума (AWGN).
channel = comm.AWGNChannel('EbNo',20,'BitsPerSymbol',3);
Передайте сигнал через канал AWGN.
channelOutput = channel(modData);
Постройте графики бесшумных и зашумленных данных с помощью графиков поля точек, чтобы визуализировать эффекты шума.
scatterplot(modData)
scatterplot(channelOutput)
Измените EbNo
свойство до 10 дБ для увеличения шума.
channel.EbNo = 10;
Передайте модулированные данные через канал AWGN.
channelOutput = channel(modData);
Постройте график выхода канала. Можно увидеть эффекты повышенного шума.
scatterplot(channelOutput)
Передайте одноканальный и многоканальный сигнал через object™ системы канала AWGN.
Создайте системный объект канала AWGN с отношением Eb/No, установленным для одноканального входа. В этом случае EbNo
свойство является скаляром.
channel = comm.AWGNChannel('EbNo',15);
Сгенерируйте случайные данные и примените QPSK модуляцию.
data = randi([0 3],1000,1); modData = pskmod(data,4,pi/4);
Передайте модулированные данные через канал AWGN.
rxSig = channel(modData);
Постройте шумное созвездие.
scatterplot(rxSig)
Сгенерируйте двухканальные входные данные и примените QPSK модуляцию.
data = randi([0 3],2000,2); modData = pskmod(data,4,pi/4);
Передайте модулированные данные через канал AWGN.
rxSig = channel(modData);
Постройте график шумных созвездий. Каждый канал представлен как один столбец в rxSig
. Графики почти идентичны, потому что одно и то же значение Eb/No применяется к обоим каналам.
scatterplot(rxSig(:,1))
title('First Channel')
scatterplot(rxSig(:,2))
title('Second Channel')
Измените объект канала AWGN, чтобы применить другое значение Eb/No к каждому каналу. Чтобы применить другие значения, установите EbNo
свойство вектору 1 на 2. При изменении размерности EbNo
свойство, вы должны освободить объект канала AWGN.
release(channel) channel.EbNo = [10 20];
Передайте данные через канал AWGN.
rxSig = channel(modData);
Постройте график шумных созвездий. Первый канал имеет значительно больше шума из-за его нижнего значения Eb/No.
scatterplot(rxSig(:,1))
title('First Channel')
scatterplot(rxSig(:,2))
title('Second Channel')
Применить вход отклонения шума в виде скаляра или вектора-строки с длиной, равной количеству каналов входного сигнала тока.
Создайте систему каналов AWGN object™ с NoiseMethod
значение свойства установлено на 'Variance'
и VarianceSource
значение свойства установлено на 'Input port'
.
channel = comm.AWGNChannel('NoiseMethod','Variance', ... 'VarianceSource','Input port');
Сгенерируйте случайные данные для двух каналов и примените 16-QAM модуляцию.
data = randi([0 15],10000,2); txSig = qammod(data,16);
Передайте модулированные данные через канал AWGN. Объект канала AWGN обрабатывает данные из двух каналов. Отклонение входа является вектором 1 на 2.
rxSig = channel(txSig,[0.01 0.1]);
Постройте график созвездий для двух каналов. Второй сигнал является более шумным, потому что его отклонение в десять раз больше.
scatterplot(rxSig(:,1))
scatterplot(rxSig(:,2))
Повторите процесс, где вход отклонения шума является скаляром. К обоим каналам применяется одинаковое отклонение. Диаграммы созвездия почти идентичны.
rxSig = channel(txSig,0.2); scatterplot(rxSig(:,1))
scatterplot(rxSig(:,2))
Задайте seed, чтобы получить те же выходы при использовании случайного потока, в котором вы задаете seed.
Создайте системный object™ канала AWGN. Установите NoiseMethod
свойство к 'Variance'
, а RandomStream
свойство к 'mt19937ar with seed'
, и Seed
свойство к 99
.
channel = comm.AWGNChannel( ... 'NoiseMethod','Variance', ... 'RandomStream','mt19937ar with seed', ... 'Seed',99);
Передайте данные через канал AWGN.
y1 = channel(zeros(8,1));
Пропустите другой вектор всех нулей через канал.
y2 = channel(zeros(8,1));
Поскольку seed изменяется между вызовами функции, выход отличается.
isequal(y1,y2)
ans = logical
0
Сброс объекта канала AWGN путем вызова reset
функция. Поток случайных данных сбрасывается на начальное начальное число 99
.
reset(channel);
Передайте вектор всех нулей через канал AWGN.
y3 = channel(zeros(8,1));
Подтвердите, что эти два сигнала идентичны.
isequal(y1,y3)
ans = logical
1
Для незакодированных комплексных входных сигналов comm.AWGNChannel относится E b/ N 0, E s/ N 0 и ОСШ согласно этим уравнениям:
E s/ N 0 = N sps × SNR
E s/ N 0 = E b/ N 0 + 10log10 (k) в дБ
где
E s представляет энергию сигнала в джоулях.
E b представляет энергию битов в джоулях.
N 0 представляет шум степени спектральную плотность в ваттах/Гц.
N sps представляет количество выборок на символ, SamplesPerSymbol.
k представляет количество информационных бит на входной символ, BitsPerSymbol.
Для действительных входов сигнала comm.AWGNChannel относится E s/ N 0 и ОСШ согласно этому уравнению:
<reservedrangesplaceholder3> s / <reservedrangesplaceholder2> 0 = 0.5 (N SPS) × <reservedrangesplaceholder0>
Примечание
Все значения степени принимают номинальное сопротивление 1 Ом.
Уравнение для реального случая отличается от соответствующего уравнения для комплексного случая в 2 раза. В частности, объект использует шум степени спектральную плотность N 0/2 Вт/Гц для действительных входных сигналов от N 0 Вт/Гц для сложных сигналов.
Для получения дополнительной информации смотрите уровень шума канала AWGN.
Чтобы непосредственно задать отклонение шума, генерируемого comm.AWGNChannel, задайте VarianceSource как:
'Property'
, затем установите значение NoiseMethod равным 'Variance'
и задайте отклонение со свойством «Дисперсия».
'Input port'
затем задайте уровень отклонения для объекта как вход с входным параметром, var.
Чтобы косвенно задать отклонение, то есть вычислить ее по comm.AWGNChannel, задайте VarianceSource следующим 'Property'
и NoiseMethod как:
'Signal to noise ratio (Eb/No)'
, где объект использует эти свойства для вычисления отклонения:
EbNo, отношение энергии битов к спектральной плотности степени шума
SignalPower, фактическая степень выборок входного сигнала
'Signal to noise ratio (Es/No)'
, где объект использует эти свойства для вычисления отклонения:
EsNo, отношение энергии сигнала к спектральной плотности степени шума
SignalPower, фактическая степень выборок входного сигнала
'Signal to noise ratio (SNR)'
, где объект использует эти свойства для вычисления отклонения:
ОСШ, отношение степени сигнала к степени шума
SignalPower, фактическая степень выборок входного сигнала
Изменение количества выборок на символ (SamplesPerSymbol) влияет на отклонение шума, добавляемого на выборку, что также вызывает изменение конечной частоты ошибок.
NoiseVariance = SignalPower × SamplesPerSymbol/10(EsNo)/10
Совет
Выберите количество выборок на символ в зависимости от того, что представляет собой символ и применяемую к нему избыточную дискретизацию. Для примера символ может иметь 3 бита и быть переизбран на 4. Для получения дополнительной информации смотрите уровень шума канала AWGN.
[1] Proakis, John G. Digital Communications. 4th Ed. McGraw-Hill, 2001.
Указания и ограничения по применению:
Смотрите Системные объекты в Генерации кода MATLAB (MATLAB Coder).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.