Добавил:
debilX2
t.me
Фулл всегда есть! А если нет, то Вы плохо его ищите! ИиКГ, СКДИКТ, ОКИТПЭС и тд https://t.me/whitedevil752rn Так же веду разработку КД (конструкторской документации) согласно ГОСТ. Имеется опыт работы при производстве на одном из ведущих в области радиэлектроники предприятии. Пишите)
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab3
.m clear;
clc
close all
N = 10^6; % число символов для оценки ПУ
M = 16; thetaMpsk = [0:M-1]*2*pi/M; % сигнальное созвездие ФМ-16
Es_N0_dB = [0:25]; % диапазон значений ОСШ
for ii = 1:length(Es_N0_dB)
% формирование символов ФМ-16
ipPhase = randsrc(1,N,thetaMpsk);
s = exp(j*ipPhase);
% формирование АБГШ
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ
y = s + 10^(-Es_N0_dB(ii)/20)*n;
% Демодуляция: оценка фазы в диапазоне [-pi:pi]
opPhase = angle(y);
% приведение фазы к диапазону [0:2pi]
opPhase(find(opPhase<0)) = opPhase(find(opPhase<0)) + 2*pi;
% округление оценки принятой фазы до ближайшего символа ФМ-16
ipPhaseHat = 2*pi/M*round(opPhase/(2*pi/M)) ;
% приведение фазы 2pi к 0
ipPhaseHat(find(ipPhaseHat==2*pi)) = 0;
% подсчет числа ошибок
nErr(ii) = size(find([ipPhase- ipPhaseHat]),2);
end
simSer = nErr/N; % SER (модель)
theorySer = erfc(sqrt(10.^(Es_N0_dB/10))*sin(pi/M)); % SER (теория)
figure(101);
semilogy(Es_N0_dB,theorySer,'bs-','LineWidth',1); hold on;
semilogy(Es_N0_dB,simSer,'mx-','LineWidth',1);
axis([0 25 10^-5 1]); grid on;
xlabel('Es/No, дБ'); ylabel('SER (вероятность символьной ошибки)');
alpha16qam1 = [-3 -1 1 3]; % 16-QAM алфавит
Es_N0_dB1 = [0:25]; % диапазон значений ОСШ
for iit = 1:length(Es_N0_dB1) % цикл по ОСШ
% формирование символов алфавита 16-КАМ
ip1 = randsrc(1,N,alpha16qam1) + j*randsrc(1,N,alpha16qam1);
% нормирование энергии
s1 = (1/sqrt(10))*ip1;
% формирование АБГШ
n1 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление шума
y1 = s1 + 10^(-Es_N0_dB1(iit)/20)*n1;
% демодуляция
y_re1 = real(y1); % real part
y_im1 = imag(y1); % imaginary part
% приемник с жесткими решениями
ipHat_re1(find(y_re1< -2/sqrt(10))) = -3;
ipHat_re1(find(y_re1 > 2/sqrt(10))) = 3;
ipHat_re1(find(y_re1>-2/sqrt(10) & y_re1<=0)) = -1;
ipHat_re1(find(y_re1>0 & y_re1<=2/sqrt(10))) = 1;
ipHat_im1(find(y_im1< -2/sqrt(10))) = -3;
ipHat_im1(find(y_im1 > 2/sqrt(10))) = 3;
ipHat_im1(find(y_im1>-2/sqrt(10) & y_im1<=0)) = -1;
ipHat_im1(find(y_im1>0 & y_im1<=2/sqrt(10))) = 1;
ipHat1 = ipHat_re1 + j*ipHat_im1;
% подсчет ошибок
nErr1(iit) = size(find([ip1- ipHat1]),2);
end
simSer1 = nErr1/N; % SER (модель)
theorySer1 = 3/2*erfc(sqrt(0.1*(10.^(Es_N0_dB1/10)))); % SER (теория)
semilogy(Es_N0_dB1,theorySer1,'g.-','LineWidth',2);
semilogy(Es_N0_dB1,simSer1,'r-','Linewidth',2);
axis([0 25 10^-5 1]); grid on; legend('теория-ФМ-16', 'модель-ФМ-16', 'теория КАМ-16', 'модель КАМ-16');
xlabel('Es/No, дБ'); ylabel('Вероятность символьной ошибки (SER)');
title('Вероятность символьной ошибки (SER) для сигналов ФМ-16 и КАМ-16');
ratio=1/(sqrt(10)*sin(pi/16))
ratio_db=20*log10(ratio)
clc
close all
N = 10^6; % число символов для оценки ПУ
M = 16; thetaMpsk = [0:M-1]*2*pi/M; % сигнальное созвездие ФМ-16
Es_N0_dB = [0:25]; % диапазон значений ОСШ
for ii = 1:length(Es_N0_dB)
% формирование символов ФМ-16
ipPhase = randsrc(1,N,thetaMpsk);
s = exp(j*ipPhase);
% формирование АБГШ
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ
y = s + 10^(-Es_N0_dB(ii)/20)*n;
% Демодуляция: оценка фазы в диапазоне [-pi:pi]
opPhase = angle(y);
% приведение фазы к диапазону [0:2pi]
opPhase(find(opPhase<0)) = opPhase(find(opPhase<0)) + 2*pi;
% округление оценки принятой фазы до ближайшего символа ФМ-16
ipPhaseHat = 2*pi/M*round(opPhase/(2*pi/M)) ;
% приведение фазы 2pi к 0
ipPhaseHat(find(ipPhaseHat==2*pi)) = 0;
% подсчет числа ошибок
nErr(ii) = size(find([ipPhase- ipPhaseHat]),2);
end
simSer = nErr/N; % SER (модель)
theorySer = erfc(sqrt(10.^(Es_N0_dB/10))*sin(pi/M)); % SER (теория)
figure(101);
semilogy(Es_N0_dB,theorySer,'bs-','LineWidth',1); hold on;
semilogy(Es_N0_dB,simSer,'mx-','LineWidth',1);
axis([0 25 10^-5 1]); grid on;
xlabel('Es/No, дБ'); ylabel('SER (вероятность символьной ошибки)');
alpha16qam1 = [-3 -1 1 3]; % 16-QAM алфавит
Es_N0_dB1 = [0:25]; % диапазон значений ОСШ
for iit = 1:length(Es_N0_dB1) % цикл по ОСШ
% формирование символов алфавита 16-КАМ
ip1 = randsrc(1,N,alpha16qam1) + j*randsrc(1,N,alpha16qam1);
% нормирование энергии
s1 = (1/sqrt(10))*ip1;
% формирование АБГШ
n1 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление шума
y1 = s1 + 10^(-Es_N0_dB1(iit)/20)*n1;
% демодуляция
y_re1 = real(y1); % real part
y_im1 = imag(y1); % imaginary part
% приемник с жесткими решениями
ipHat_re1(find(y_re1< -2/sqrt(10))) = -3;
ipHat_re1(find(y_re1 > 2/sqrt(10))) = 3;
ipHat_re1(find(y_re1>-2/sqrt(10) & y_re1<=0)) = -1;
ipHat_re1(find(y_re1>0 & y_re1<=2/sqrt(10))) = 1;
ipHat_im1(find(y_im1< -2/sqrt(10))) = -3;
ipHat_im1(find(y_im1 > 2/sqrt(10))) = 3;
ipHat_im1(find(y_im1>-2/sqrt(10) & y_im1<=0)) = -1;
ipHat_im1(find(y_im1>0 & y_im1<=2/sqrt(10))) = 1;
ipHat1 = ipHat_re1 + j*ipHat_im1;
% подсчет ошибок
nErr1(iit) = size(find([ip1- ipHat1]),2);
end
simSer1 = nErr1/N; % SER (модель)
theorySer1 = 3/2*erfc(sqrt(0.1*(10.^(Es_N0_dB1/10)))); % SER (теория)
semilogy(Es_N0_dB1,theorySer1,'g.-','LineWidth',2);
semilogy(Es_N0_dB1,simSer1,'r-','Linewidth',2);
axis([0 25 10^-5 1]); grid on; legend('теория-ФМ-16', 'модель-ФМ-16', 'теория КАМ-16', 'модель КАМ-16');
xlabel('Es/No, дБ'); ylabel('Вероятность символьной ошибки (SER)');
title('Вероятность символьной ошибки (SER) для сигналов ФМ-16 и КАМ-16');
ratio=1/(sqrt(10)*sin(pi/16))
ratio_db=20*log10(ratio)
Соседние файлы в предмете Помехоустойчивость радиоэлектронных средств
