Добавьте белый Гауссов шум во входной сигнал
comm.AWGNChannel добавляет белый Гауссов шум во входной сигнал.
Когда применимо, если входные параметры к объекту имеют переменное количество каналов, EbNo, EsNo, ОСШ, BitsPerSymbol, SignalPower, SamplesPerSymbol и свойства Variance должны быть скалярами.
Добавить белый Гауссов шум во входной сигнал:
Создайте comm.AWGNChannel
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?
создает Систему канала аддитивного белого Гауссова шума (AWGN) 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
— Отношение энергии на бит к спектральной плотности мощности шума
(значение по умолчанию) | скаляр | вектор-строкаОтношение энергии на бит к спектральной плотности мощности шума (Eb/No) в децибелах в виде скаляра или 1 NC вектором. N C является количеством каналов.
Настраиваемый: да
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)'
.
Типы данных: double
EsNo
— Отношение энергии на символ к спектральной плотности мощности шума
(значение по умолчанию) | скаляр | вектор-строкаОтношение энергии на символ к спектральной плотности мощности шума (Es/No) в децибелах в виде скаляра или 1 NC вектором. N C является количеством каналов.
Настраиваемый: да
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Es/No)'
.
Типы данных: double
SNR
— Отношение степени сигнала к шумовой мощности
(значение по умолчанию) | скаляр | вектор-строкаОтношение степени сигнала к шумовой мощности в децибелах в виде скаляра или 1 NC вектором. N C является количеством каналов.
Настраиваемый: да
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (SNR)'
.
Типы данных: double
BitsPerSymbol
— Количество битов на символ
(значение по умолчанию) | положительное целое числоКоличество битов на символ в виде положительного целого числа.
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)'
.
Типы данных: double
SignalPower
— Степень входного сигнала
(значение по умолчанию) | положительная скалярная величина | вектор-строкаМощность в ваттах входного сигнала в виде положительной скалярной величины или 1 NC вектором. N C является количеством каналов. Объект принимает номинальный импеданс 1 Ω.
Настраиваемый: да
Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)'
, 'Signal to noise ratio (Es/No)'
, или 'Signal to noise ratio (SNR)'
.
Типы данных: double
SamplesPerSymbol
— Количество отсчетов на символ
(значение по умолчанию) | положительное целое число | вектор-строкаКоличество отсчетов на символ в виде положительного целого числа или 1 NC вектором. 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'
задавать шумовое значение отклонения с помощью свойства Variance.
Установите VarianceSource
к 'Input port'
задавать шумовое значение отклонения с помощью входа для объекта, когда вы вызываете его как функцию.
Для получения дополнительной информации смотрите Определение Отклонения Прямо или косвенно.
Это свойство применяется, когда NoiseMethod является 'Variance'
.
Типы данных: char
Variance
— Отклонение Белого Гауссова шума
(значение по умолчанию) | положительная скалярная величина | вектор-строкаОтклонение Белого Гауссова шума в виде положительной скалярной величины или 1 NC вектором. 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
— Начальный seed
(значение по умолчанию) | неотрицательное целое числоНачальный seed 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
— Входной сигналВходной сигнал в виде скаляра, вектора S-элемента N или матрицы S-by-NC N. N S является количеством отсчетов, и N C является количеством каналов.
Типы данных: double
Поддержка комплексного числа: Да
var
— Отклонение аддитивного белого Гауссова шумаОтклонение аддитивного белого Гауссова шума в виде положительной скалярной величины или 1 NC вектором. 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)
Передайте одноканальный и многоканальный сигнал через Систему канала AWGN object™.
Создайте Системный объект канала 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.
Создайте Систему канала AWGN object™. Установите 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
функция. Случайный поток данных сбрасывается к начальному seed 99
.
reset(channel);
Передайте все-нулевой вектор через канал AWGN.
y3 = channel(zeros(8,1));
Подтвердите, что два сигнала идентичны.
isequal(y1,y3)
ans = logical
1
Для незакодированных комплексных входных сигналов, коммуникации. AWGNChannel связывает E b/N0, E s/N0 и ОСШ согласно этим уравнениям:
E s/N0 = SPS N × SNR
E s/N0 = E b/N0 + 10log10 (k) в дБ
где
E s представляет энергию сигнала в джоулях.
E b представляет энергию, подведенную к долоту в джоулях.
N 0 представляет спектральную плотность мощности шума в Ваттах/Гц.
SPS N представляет количество отсчетов на символ, SamplesPerSymbol.
k представляет количество информационных битов на вводимый символ, BitsPerSymbol.
Для действительных входных параметров сигнала, коммуникации. AWGNChannel связывает E s/N0 и ОСШ согласно этому уравнению:
E s/N0 = 0.5 (SPS N) × SNR
Примечание
Все значения степени принимают номинальный импеданс 1 Ома.
Уравнение для действительного случая отличается от соответствующего уравнения для комплексного случая на коэффициент 2. А именно, объект использует спектральную плотность мощности шума N 0/2 Ватты/Гц для действительных входных сигналов, по сравнению с N 0 ватт/Гц для комплексных сигналов.
Для получения дополнительной информации см. Уровень шума Канала AWGN.
Чтобы непосредственно задать отклонение шума, сгенерированного comm.AWGNChannel, задайте VarianceSource как:
'Property'
, затем установите NoiseMethod на 'Variance'
и задайте отклонение со свойством Variance.
'Input port'
затем задайте уровень отклонения для объекта как вход с входным параметром, var.
Задавать отклонение косвенно, то есть, иметь вычисленный коммуникацией. 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, цифровая связь Джона Г. 4-й Эд. McGraw-Hill, 2001.
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.