Добавил:
debilX2
t.me
Фулл всегда есть! А если нет, то Вы плохо его ищите! ИиКГ, СКДИКТ, ОКИТПЭС и тд https://t.me/whitedevil752rn Так же веду разработку КД (конструкторской документации) согласно ГОСТ. Имеется опыт работы при производстве на одном из ведущих в области радиэлектроники предприятии. Пишите)
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:compute_symbol_error_rate
.m function [simSer] = compute_symbol_error_rate(EsN0dB, M)
k = sqrt(1/((2/3)*(M-1))); % масштабирующий коэффициент
m = [1:sqrt(M)/2]; % сигнальный алфавит КАМ-М
alphaMqam = [-(2*m-1) 2*m-1];
N = 10^6; % число символов для оценки ПУ
for ii = 1:length(EsN0dB) % цикл по ОСШ
% формирование символов КАМ-М
ipMod = randsrc(1,N,alphaMqam) + j*randsrc(1,N,alphaMqam);
ipMod_norm = k*ipMod; % Нормирование энергии символов
% формирование АБГШ
nt = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ
yt = ipMod_norm + 10^(-EsN0dB(ii)/20)*nt;
% Демодуляция
y_re = real(yt)/k; % вещественная часть
y_im = imag(yt)/k; % мнимая часть
% округление до ближайшего квадранта пространственной диаграммы
% 0 to 2 --> 1
% 2 to 4 --> 3
% 4 to 6 --> 5 итд
ipHat_re = 2*floor(y_re/2)+1;
ipHat_re(find(ipHat_re>max(alphaMqam))) = max(alphaMqam);
ipHat_re(find(ipHat_re<min(alphaMqam))) = min(alphaMqam);
% округление до ближайшего квадранта пространственной диаграммы
% 0 to 2 --> 1
% 2 to 4 --> 3
% 4 to 6 --> 5 итд
ipHat_im = 2*floor(y_im/2)+1;
ipHat_im(find(ipHat_im>max(alphaMqam))) = max(alphaMqam);
ipHat_im(find(ipHat_im<min(alphaMqam))) = min(alphaMqam);
ipHat = ipHat_re + j*ipHat_im;
% подсчет числа ошибок
nErr(ii) = size(find(ipMod - ipHat ),2);
end
simSer = nErr/N;
k = sqrt(1/((2/3)*(M-1))); % масштабирующий коэффициент
m = [1:sqrt(M)/2]; % сигнальный алфавит КАМ-М
alphaMqam = [-(2*m-1) 2*m-1];
N = 10^6; % число символов для оценки ПУ
for ii = 1:length(EsN0dB) % цикл по ОСШ
% формирование символов КАМ-М
ipMod = randsrc(1,N,alphaMqam) + j*randsrc(1,N,alphaMqam);
ipMod_norm = k*ipMod; % Нормирование энергии символов
% формирование АБГШ
nt = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ
yt = ipMod_norm + 10^(-EsN0dB(ii)/20)*nt;
% Демодуляция
y_re = real(yt)/k; % вещественная часть
y_im = imag(yt)/k; % мнимая часть
% округление до ближайшего квадранта пространственной диаграммы
% 0 to 2 --> 1
% 2 to 4 --> 3
% 4 to 6 --> 5 итд
ipHat_re = 2*floor(y_re/2)+1;
ipHat_re(find(ipHat_re>max(alphaMqam))) = max(alphaMqam);
ipHat_re(find(ipHat_re<min(alphaMqam))) = min(alphaMqam);
% округление до ближайшего квадранта пространственной диаграммы
% 0 to 2 --> 1
% 2 to 4 --> 3
% 4 to 6 --> 5 итд
ipHat_im = 2*floor(y_im/2)+1;
ipHat_im(find(ipHat_im>max(alphaMqam))) = max(alphaMqam);
ipHat_im(find(ipHat_im<min(alphaMqam))) = min(alphaMqam);
ipHat = ipHat_re + j*ipHat_im;
% подсчет числа ошибок
nErr(ii) = size(find(ipMod - ipHat ),2);
end
simSer = nErr/N;
