коммуникация. AWGNChannel

Добавьте белый Гауссов шум во входной сигнал

Описание

коммуникация. AWGNChannel добавляет белый Гауссов шум во входной сигнал.

Когда применимо, если входные параметры к объекту имеют переменное количество каналов, EbNo, EsNo, ОСШ, BitsPerSymbol, SignalPower, SamplesPerSymbol и свойства Variance должны быть скалярами.

Добавить белый Гауссов шум во входной сигнал:

  1. Создайте объект comm.AWGNChannel и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

awgnchan = comm.AWGNChannel
awgnchan = comm.AWGNChannel(Name,Value)

Описание

пример

awgnchan = comm.AWGNChannel создает Систему канала аддитивного белого гауссова шума (AWGN) object™, awgnchan. Этот объект затем добавляет белый Гауссов шум в действительный или комплексный входной сигнал.

пример

awgnchan = comm.AWGNChannel(Name,Value) создает объект канала AWGN, awgnchan, с заданным набором свойства Name к заданному Value. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Метод уровня шума, заданный как 'Signal to noise ratio (Eb/No)', 'Signal to noise ratio (Es/No)', 'Signal to noise ratio (SNR)' или 'Variance'. Для получения дополнительной информации смотрите Определение Отклонения Прямо или косвенно.

Типы данных: char

Отношение энергии на бит к шумовой степени спектральная плотность (Eb/No) в децибелах, заданных как скаляр или 1 NC вектором. N C является количеством каналов.

Настраиваемый: да

Зависимости

Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)'.

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

Отношение энергии на символ к шумовой степени спектральная плотность (Es/No) в децибелах, заданных как скаляр или 1 NC вектором. N C является количеством каналов.

Настраиваемый: да

Зависимости

Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Es/No)'.

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

Отношение степени сигнала к шумовой степени в децибелах, заданных как скаляр или 1 NC вектором. N C является количеством каналов.

Настраиваемый: да

Зависимости

Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (SNR)'.

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

Количество битов на символ, заданный как положительное целое число.

Зависимости

Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)'.

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

Мощность в ваттах входного сигнала, заданная как положительная скалярная величина или 1 NC вектором. N C является количеством каналов. Объект принимает номинальный импеданс 1 Ω.

Настраиваемый: да

Зависимости

Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)', 'Signal to noise ratio (Es/No)' или 'Signal to noise ratio (SNR)'.

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

Количество выборок на символ, заданный как положительное целое число или 1 NC вектором. N C является количеством каналов.

Зависимости

Это свойство применяется, когда NoiseMethod установлен в 'Signal to noise ratio (Eb/No)' или 'Signal to noise ratio (Es/No)'.

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

Источник шумового отклонения, заданного как 'Property' или 'Input port'.

  • Установите VarianceSource на 'Property' задавать шумовое значение отклонения с помощью свойства Variance.

  • Установите VarianceSource на 'Input port' задавать шумовое значение отклонения с помощью входа для объекта, когда вы вызовете его как функцию.

Для получения дополнительной информации смотрите Определение Отклонения Прямо или косвенно.

Зависимости

Это свойство применяется, когда NoiseMethod является 'Variance'.

Типы данных: char

Белое Гауссово шумовое отклонение, заданное как положительная скалярная величина или 1 NC вектором. N C является количеством каналов.

Настраиваемый: да

Зависимости

Это свойство применяется, когда NoiseMethod установлен в 'Variance', и VarianceSource установлен в 'Property'.

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

Источник потока случайных чисел, заданного как 'Global stream' или 'mt19937ar with seed'.

  • Когда вы устанавливаете RandomStream на 'Global stream', объект использует значение по умолчанию MATLAB® случайный поток, чтобы сгенерировать случайные числа. Чтобы сгенерировать восстанавливаемые числа с помощью этого объекта, можно сбросить значение по умолчанию MATLAB случайный поток. Например, reset(RandStream.getGlobalStream). Для получения дополнительной информации смотрите RandStream.

  • Когда вы устанавливаете RandomStream на 'mt19937ar with seed', объект использует mt19937ar алгоритм для нормально распределенной генерации случайных чисел. В этом сценарии, когда вы вызываете функцию reset, объект повторно инициализирует поток случайных чисел к значению свойства Seed. Можно сгенерировать восстанавливаемые числа путем сброса объекта.

Для комплексного входного сигнала объект создает случайные данные можно следующим образом:

noise = randn(NS,NC)+1i(randn(NS,NC))
N S является количеством выборок, и N C является количеством каналов.

Зависимости

Это свойство применяется, когда NoiseMethod установлен в 'Variance'.

Типы данных: char

Начальный seed mt19937ar потока случайных чисел, заданного как неотрицательное целое число. Для каждого вызова функции reset объект повторно инициализирует mt19937ar поток случайных чисел к значению Seed.

Зависимости

Это свойство применяется, когда RandomStream установлен в 'mt19937ar with seed'.

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

Использование

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

outsignal = awgnchan(insignal)
outsignal = awgnchan(insignal,var)

Описание

пример

outsignal = awgnchan(insignal) добавляет белый Гауссов шум, как задано awgnchan, к входному сигналу. Результат возвращен в outsignal.

пример

outsignal = awgnchan(insignal,var) задает отклонение белого Гауссова шума. Этот синтаксис применяется, когда вы устанавливаете NoiseMethod на 'Variance' и VarianceSource к 'Input port'.

Например:

awgnchan = comm.AWGNChannel('NoiseMethod','Variance','VarianceSource','Input port');
var = 12;
...
outsignal = awgnchan(insignal,var);

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

развернуть все

Входной сигнал, заданный как скаляр, вектор S-элемента N или матрица S-by-NC N. N S является количеством выборок, и N C является количеством каналов.

Типы данных: double
Поддержка комплексного числа: Да

Отклонение аддитивного белого Гауссова шума, заданного как положительная скалярная величина или 1 NC вектором. N C является количеством каналов, как определено количеством столбцов в матрице входного сигнала.

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

развернуть все

Выходной сигнал, возвращенный с теми же размерностями как insignal.

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

развернуть все

Создайте Системный объект канала AWGN с настройкой по умолчанию. Передайте данные сигнала через этот канал.

Создайте объект канала AWGN и данные сигнала.

awgnchan = comm.AWGNChannel;
insignal = randi([0 1],100,1);

Отправьте входной сигнал через канал.

outsignal = awgnchan(insignal);

Модулируйте сигнал 8-PSK, добавьте белый Гауссов шум и постройте сигнал наблюдать эффекты шума.

Создайте Систему модулятора PSK object™. Порядок модуляции по умолчанию для объекта модулятора 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)

Передайте одноканальный и многоканальный сигнал через Систему канала 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

Алгоритмы

развернуть все

Ссылки

[1] Proakis, цифровая связь Джона Г. 4-й Эд. McGraw-Hill, 2001.

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

Смотрите также

Блоки

Системные объекты

Функции

Представленный в R2012a