Исследование цифровой модуляции в системах радиосвязи
94 Вычисление BER Используйте randi функцию для генерации случайных двоичных данных. Установите для rng функции ее состояние по умолчанию или любое статическое начальное значение, чтобы в примере получались воспроизводимые результаты. rng default ; % Использовать генератор случайных чисел по умолчанию dataIn = randi ([0 1], numBits, 1); % Генерация вектора двоичных данных Преобразуйте входной вектор в матрицу 4-битных двоичных данных. Затем используйте bi2de функцию для преобразования данных в целочисленные символы. dataInMatrix = reshape (dataIn, length (dataIn) / k, k); % Преобразование данных в двоичные 4-х битные кортежи dataSymbolsIn = bi2de (dataInMatrix); % Конвертировать в целые числа Применим модуляцию 16-QAM, используя qammod функцию. dataMod = qammod (dataSymbolsIn, M); Используйте upfirdn функцию для увеличения отсчетов сигнала (upsample) в соответствии с коэффициентом передискретизации (sps) и последующего применения заданного нами фильтра RRC. При необходимости происходит заполнение битов нулями для выравнивания длины передаваемых символов и приведения их к нужному размеру, кратному коэффициенту передискредитазии. txFiltSignal = upfirdn (dataMod, rrcFilter, sps, 1); Используя количество битов на символ ( k) и количество выборок на символ ( sps), необходимо преобразовать отношение энергии на бит к спектральной плотности мощности шума ( EbNo) в значение SNR для использования awgn функции. EbNo = 10; snr = EbNo + 10 * log10 (k) - 10 * log10 (sps); Передадим отфильтрованный сигнал через канал AWGN. rxSignal = awgn (txFiltSignal, snr, ' selected ' );
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy