Добавление белого гауссова шума к входному сигналу
comm.AWGNChannel добавляет во входной сигнал белый гауссов шум.
Если входы объекта имеют переменное количество каналов, свойства EbNo, EsNo, SNR, BitsPerSymbol, SignalPower, SharingPerSymbol и 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-by-NC вектор. NC - количество каналов.
Настраиваемый: Да
Это свойство применяется в том случае, если для параметра NoureMethod установлено значение 'Signal to noise ratio (Eb/No)'.
Типы данных: double
EsNo - Отношение энергии на символ к спектральной плотности мощности шума10 (по умолчанию) | скаляр | вектор строкиОтношение энергии на символ к спектральной плотности мощности шума (Es/No) в децибелах, определяемое как скалярный или 1-by-NC вектор. NC - количество каналов.
Настраиваемый: Да
Это свойство применяется в том случае, если для параметра NoureMethod установлено значение 'Signal to noise ratio (Es/No)'.
Типы данных: double
SNR - Отношение мощности сигнала к мощности шума10 (по умолчанию) | скаляр | вектор строкиОтношение мощности сигнала к мощности шума в децибелах, определяемое как скалярный или 1-by-NC вектор. NC - количество каналов.
Настраиваемый: Да
Это свойство применяется в том случае, если для параметра NoureMethod установлено значение 'Signal to noise ratio (SNR)'.
Типы данных: double
BitsPerSymbol - Количество битов на символ1 (по умолчанию) | положительное целое числоЧисло битов на символ, указанное как положительное целое число.
Это свойство применяется в том случае, если для параметра NoureMethod установлено значение 'Signal to noise ratio (Eb/No)'.
Типы данных: double
SignalPower - Мощность входного сигнала1 (по умолчанию) | положительный скаляр | вектор строкиМощность входного сигнала в ваттах, заданная как положительный скалярный или 1-by-NC вектор. NC - количество каналов. Объект принимает номинальный импеданс 1 Ом.
Настраиваемый: Да
Это свойство применяется в том случае, если для параметра NoureMethod установлено значение 'Signal to noise ratio (Eb/No)', 'Signal to noise ratio (Es/No)', или 'Signal to noise ratio (SNR)'.
Типы данных: double
SamplesPerSymbol - Количество образцов на символ1 (по умолчанию) | положительное целое число | вектор строкиЧисло выборок на символ, указанное как положительное целое число или 1-by-NC вектор. NC - количество каналов.
Это свойство применяется в том случае, если для параметра NoureMethod установлено значение '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' задание значения дисперсии шума с использованием входных данных объекта при вызове его в качестве функции.
Дополнительные сведения см. в разделе Определение отклонения прямо или косвенно.
Это свойство применяется в том случае, если NoureMethod имеет значение 'Variance'.
Типы данных: char
Variance - Дисперсия белого гауссова шума1 (по умолчанию) | положительный скаляр | вектор строкиДисперсия белого гауссова шума, заданная как положительный скалярный или 1-by-NC вектор. NC - количество каналов.
Настраиваемый: Да
Это свойство применяется в том случае, если для параметра NoureMethod установлено значение 'Variance' и VaritySource имеет значение '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 собственность. Можно создать воспроизводимые числа путем сброса объекта.
Для комплексного входного сигнала объект создает случайные данные следующим образом:
NS - количество выборок, а NC - количество каналов.Это свойство применяется в том случае, если для параметра NoureMethod установлено значение 'Variance'.
Типы данных: char
Seed - Начальное семя67 (по умолчанию) | неотрицательное целое числоНачальное начальное число потока случайных чисел mt19937ar, указанное как неотрицательное целое число. Для каждого вызова reset функция, объект повторно инициализирует поток случайных чисел mt19937ar в Seed значение.
Это свойство применяется, если для параметра RandomStream установлено значение 'mt19937ar with seed'.
Типы данных: double
определяет дисперсию белого гауссова шума. Этот синтаксис применяется при установке для метода NoureMethod значения outsignal = awgnchan(insignal,var)'Variance' и VaritySource в 'Input port'.
Например:
awgnchan = comm.AWGNChannel('NoiseMethod','Variance', ...
'VarianceSource','Input port');
var = 12;
...
outsignal = awgnchan(insignal,var);insignal - Входной сигналВходной сигнал, заданный как скаляр, вектор NS-элемента или матрица NS-by-NC. NS - количество выборок, а NC - количество каналов.
Типы данных: double
Поддержка комплексного номера: Да
var - Дисперсия аддитивного белого гауссова шумаДисперсия аддитивного белого гауссова шума, заданного как положительный скалярный или 1-by-NC вектор. NC - количество каналов, определяемое количеством столбцов в матрице входного сигнала.
outsignal - Выходной сигналВыходной сигнал, возвращаемый с теми же размерами, что и insignal.
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
Создайте системный объект канала AWGN с конфигурацией по умолчанию. Передача данных сигнала через этот канал.
Создайте объект канала AWGN и данные сигнала.
awgnchan = comm.AWGNChannel; insignal = randi([0 1],100,1);
Передача входного сигнала по каналу.
outsignal = awgnchan(insignal);
Модулируйте 8-PSK сигнал, добавляйте белый гауссов шум и постройте график сигнала для визуализации эффектов шума.
Создайте object™ системы модулятора M-PSK. Порядок модуляции по умолчанию для объекта - 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')
Примените входной сигнал дисперсии шума в виде скалярного вектора или вектора строки, длина которого равна количеству каналов на входе текущего сигнала.
Создание object™ системы каналов AWGN с помощью 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))

Укажите начальное число для получения тех же выходных данных при использовании случайного потока, в котором задается начальное число.
Создание системного 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));
Поскольку начальное число изменяется между вызовами функций, выходные данные отличаются.
isequal(y1,y2)
ans = logical
0
Сброс объекта канала AWGN путем вызова reset функция. Поток случайных данных сбрасывается до начального начального значения 99.
reset(channel);
Пропустите вектор всех нулей через канал AWGN.
y3 = channel(zeros(8,1));
Убедитесь, что эти два сигнала идентичны.
isequal(y1,y3)
ans = logical
1
Для некодированных комплексных входных сигналов, запятая AWGNChannel соотносит Eb/N0, Es/N0 и SNR согласно следующим уравнениям:
Es/N0 = Nsps × SNR
Es/N0 = Eb/N0 + 10log10 (k) в дБ
где
Es представляет энергию сигнала в джоулях.
Eb представляет энергию битов в джоулях.
N0 представляет спектральную плотность мощности шума в ваттах/Гц.
Nsps представляет количество образцов за символ, SamplesPerSymbol.
k представляет количество информационных битов на входной символ BitsPerSymbol.
Для действительных сигнальных входов канал AWGNChannel связывает Es/N0 и SNR в соответствии со следующим уравнением:
Es/N0 = 0,5 (Nsps) × SNR
Примечание
Все значения мощности принимают номинальный импеданс 1 Ом.
Уравнение для вещественного случая отличается от соответствующего уравнения для комплексного случая на коэффициент 2. В частности, объект использует спектральную плотность мощности шума N0/2 Вт/Гц для реальных входных сигналов по сравнению с N0 Вт/Гц для комплексных сигналов.
Для получения дополнительной информации см. Уровень шума канала AWGN.
Чтобы непосредственно указать дисперсию шума, генерируемого каналом comm.AWGNChannel, укажите VaritySource как:
'Property', затем задайте для параметра NoureMethod значение 'Variance' и укажите расхождение со свойством Расхождение.
'Input port' затем укажите уровень дисперсии для объекта в качестве входных данных с входным аргументом var.
Для косвенного указания отклонения, т.е. для вычисления его по каналу comm.AWGNChannel, укажите VaritySource как 'Property' и метод NoureMethod как:
'Signal to noise ratio (Eb/No)', где объект использует эти свойства для вычисления расхождения:
EbNo, отношение энергии битов к спектральной плотности мощности шума
SignalPower - фактическая мощность выборок входного сигнала.
'Signal to noise ratio (Es/No)', где объект использует эти свойства для вычисления расхождения:
ЭсНо, отношение энергии сигнала к спектральной плотности мощности шума
SignalPower - фактическая мощность выборок входного сигнала.
'Signal to noise ratio (SNR)', где объект использует эти свойства для вычисления расхождения:
SNR, отношение мощности сигнала к мощности шума
SignalPower - фактическая мощность выборок входного сигнала.
Изменение количества отсчетов на символ (CharingPerSymbol) влияет на дисперсию шума, добавляемого на образец, что также вызывает изменение конечной частоты ошибок.
NoiseVariance = SignalPower × SamplesPerSymbol / 10 (EsNo)/10
Совет
Выберите количество выборок на символ на основе того, что составляет символ, и примененной к нему избыточной выборки. Например, символ может иметь 3 бита и быть избыточно дискретизирован на 4. Для получения дополнительной информации см. Уровень шума канала AWGN.
[1] Проакис, Джон Г. Digital Communications. 4-й ред. Макгроу-Хилл, 2001.
Примечания и ограничения по использованию:
См. Системные объекты в создании кода MATLAB (кодер MATLAB).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.