Добавил:
debilX2
t.me
Фулл всегда есть! А если нет, то Вы плохо его ищите! ИиКГ, СКДИКТ, ОКИТПЭС и тд https://t.me/whitedevil752rn Так же веду разработку КД (конструкторской документации) согласно ГОСТ. Имеется опыт работы при производстве на одном из ведущих в области радиэлектроники предприятии. Пишите)
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab6
.m close all
clc
clear all
%%% ФМ-2
N = 10^6; % число символов для оценки ПУ
ip = rand(1,N)>0.5; % формирование битового потока
s = 2*ip-1; % отображение битов в символы ФМ-2
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
nRx = [1 2 3]; % число приемных антенн
for jj = 1:length(nRx) % цикл по числу антенн
for ii = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирования абгш
n = 1/sqrt(2)*[randn(nRx(jj),N) + j*randn(nRx(jj),N)];
% добавление АБГШ
y = ones(nRx(jj),1)*s + 10^(-Eb_N0_dB(ii)/20)*n;
% комбинирование сигналов
yHat = sum(y,1)/nRx(jj);
% приемник с жесткими решениями
ipHat = real(yHat)>0;
% подсчет числа ошибок
nErr(jj,ii) = size(find([ip- ipHat]),2);
end
% BER_AWGN (теория)
TheoryBerAWGN(jj,:) = 0.5*erfc(sqrt(nRx(jj)*10.^(Eb_N0_dB/10)));
end
SimBer = nErr/N; % BER_AWGN (модель)
%%% ФМ-4
N = 10^6; % число символов для оценки ПУ
ip = rand(1,N)>0.5; % формирование битового потока
ip1 = rand(1,N)>0.5;
s1 = (2*ip-1)*sqrt(2)/2+(2*ip1-1)*j*sqrt(2)/2; % отображение битов в символы ФМ-4
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for jj = 1:length(nRx) % цикл по числу антенн
for ii = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирования абгш
n = 1/sqrt(2)*[randn(nRx(jj),N) + j*randn(nRx(jj),N)];
% добавление АБГШ
y1 = ones(nRx(jj),1)*s1 + 10^(-Eb_N0_dB(ii)/20)*n;
% комбинирование сигналов
yHat1 = sum(y1,1)/nRx(jj);
% приемник с жесткими решениями
ipHat1 = real(yHat1)>0;
% подсчет числа ошибок
nErr1(jj,ii) = size(find([ip- ipHat1]),2);
end
end
SimBer4 = nErr1/N; % BER_AWGN (модель)
%%% ФМ-8
ip = rand(1,N)>0.5; % формирование битового потока
ip1 = rand(1,N)>0.5;
ip2 = rand(1,N)>0.5;
ip3 = rand(1,N)>0.5;
s2 = (2*ip-1)*sqrt(3)/2-(sqrt(3)-1)/2*ip+(2*ip1-1)*j*sqrt(3)/2-(sqrt(3)-1)/2*ip1*j; % отображение битов в символы ФМ-8
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for jj = 1:length(nRx) % цикл по числу антенн
for ii = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирования абгш
n = 1/sqrt(2)*[randn(nRx(jj),N) + j*randn(nRx(jj),N)];
% добавление АБГШ
y2 = ones(nRx(jj),1)*s2 + 10^(-Eb_N0_dB(ii)/20)*n;
% комбинирование сигналов
yHat2 = sum(y2,1)/nRx(jj);
% приемник с жесткими решениями
ipHat2 = real(yHat2)>0;
% подсчет числа ошибок
nErr2(jj,ii) = size(find([ip- ipHat2]),2);
end
end
SimBer8 = nErr2/N; % BER_AWGN (модель)
%%% КАМ-16
alpha16qam1 = [-3 -1 1 3]; % 16-QAM алфавит
Es_N0_dB1 = [-3:35]; % диапазон значений ОСШ
for iit = 1:length(Es_N0_dB1) % цикл по ОСШ
% формирование символов алфавита 16-КАМ
ip1 = randsrc(1,N,alpha16qam1) + j*randsrc(1,N,alpha16qam1);
% нормирование энергии
s3 = (1/sqrt(10))*ip1;
% формирование АБГШ
n1 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление шума
y3 = s3 + 10^(-Es_N0_dB1(iit)/20)*n1;
% комбинирование сигналов
yHat3 = sum(y3,1)/nRx(jj);
% демодуляция
y_re1 = real(yHat3); % real part
y_im1 = imag(yHat3); % 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;
ipHat3 = ipHat_re1 + j*ipHat_im1;
% подсчет ошибок
nErr3(iit) = size(find([ip1- ipHat3]),2);
end
SimBer16 = nErr2/N; % BER_AWGN (модель)
% Построение графиков
figure;
%%% ФМ-2
semilogy(Eb_N0_dB,TheoryBerAWGN(1,:),'g-^','LineWidth',2); hold on;
semilogy(Eb_N0_dB,SimBer(1,:),'bx-','LineWidth',2);
semilogy(Eb_N0_dB,TheoryBerAWGN(2,:),'c-<','LineWidth',2);
semilogy(Eb_N0_dB,SimBer(2,:),'rd-','LineWidth',2);
semilogy(Eb_N0_dB,TheoryBerAWGN(3,:),'y->','LineWidth',2);
semilogy(Eb_N0_dB,SimBer(3,:),'mp-','LineWidth',2);
%%% ФМ-4
semilogy(Eb_N0_dB,SimBer4(1,:),'blackx-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer4(2,:),'gd-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer4(3,:),'yp-','LineWidth',2);
%%% ФМ-8
semilogy(Eb_N0_dB,SimBer8(1,:),'b-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer8(2,:),'r-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer8(3,:),'m-','LineWidth',2);
%%% КАМ-16
semilogy(Eb_N0_dB,SimBer16(1,:),'o-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer16(2,:),'k--','LineWidth',2);
semilogy(Eb_N0_dB,SimBer16(3,:),'m^-','LineWidth',2);
axis([min(Eb_N0_dB) max(Eb_N0_dB) 10^-6 0.5]); grid on;
legend('N=1 теория','N=1 ФМ-2', 'N=2 теория','N=2 ФМ-2','N=3 теория','N=3 ФМ-2','N=1 ФМ-4','N=2 ФМ-4','N=3 ФМ-4','N=1 ФМ-8','N=2 ФМ-8','N=3 ФМ-8','N=1 КАМ-16','N=2 КАМ-16','N=3 КАМ-16');
xlabel('E_{b}/N_{0}, дБ'); ylabel('BER (вероятность ошибки)');
title('Помехоустойчивость разнесенного приема в канале с АБГШ');
clc
clear all
%%% ФМ-2
N = 10^6; % число символов для оценки ПУ
ip = rand(1,N)>0.5; % формирование битового потока
s = 2*ip-1; % отображение битов в символы ФМ-2
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
nRx = [1 2 3]; % число приемных антенн
for jj = 1:length(nRx) % цикл по числу антенн
for ii = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирования абгш
n = 1/sqrt(2)*[randn(nRx(jj),N) + j*randn(nRx(jj),N)];
% добавление АБГШ
y = ones(nRx(jj),1)*s + 10^(-Eb_N0_dB(ii)/20)*n;
% комбинирование сигналов
yHat = sum(y,1)/nRx(jj);
% приемник с жесткими решениями
ipHat = real(yHat)>0;
% подсчет числа ошибок
nErr(jj,ii) = size(find([ip- ipHat]),2);
end
% BER_AWGN (теория)
TheoryBerAWGN(jj,:) = 0.5*erfc(sqrt(nRx(jj)*10.^(Eb_N0_dB/10)));
end
SimBer = nErr/N; % BER_AWGN (модель)
%%% ФМ-4
N = 10^6; % число символов для оценки ПУ
ip = rand(1,N)>0.5; % формирование битового потока
ip1 = rand(1,N)>0.5;
s1 = (2*ip-1)*sqrt(2)/2+(2*ip1-1)*j*sqrt(2)/2; % отображение битов в символы ФМ-4
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for jj = 1:length(nRx) % цикл по числу антенн
for ii = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирования абгш
n = 1/sqrt(2)*[randn(nRx(jj),N) + j*randn(nRx(jj),N)];
% добавление АБГШ
y1 = ones(nRx(jj),1)*s1 + 10^(-Eb_N0_dB(ii)/20)*n;
% комбинирование сигналов
yHat1 = sum(y1,1)/nRx(jj);
% приемник с жесткими решениями
ipHat1 = real(yHat1)>0;
% подсчет числа ошибок
nErr1(jj,ii) = size(find([ip- ipHat1]),2);
end
end
SimBer4 = nErr1/N; % BER_AWGN (модель)
%%% ФМ-8
ip = rand(1,N)>0.5; % формирование битового потока
ip1 = rand(1,N)>0.5;
ip2 = rand(1,N)>0.5;
ip3 = rand(1,N)>0.5;
s2 = (2*ip-1)*sqrt(3)/2-(sqrt(3)-1)/2*ip+(2*ip1-1)*j*sqrt(3)/2-(sqrt(3)-1)/2*ip1*j; % отображение битов в символы ФМ-8
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for jj = 1:length(nRx) % цикл по числу антенн
for ii = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирования абгш
n = 1/sqrt(2)*[randn(nRx(jj),N) + j*randn(nRx(jj),N)];
% добавление АБГШ
y2 = ones(nRx(jj),1)*s2 + 10^(-Eb_N0_dB(ii)/20)*n;
% комбинирование сигналов
yHat2 = sum(y2,1)/nRx(jj);
% приемник с жесткими решениями
ipHat2 = real(yHat2)>0;
% подсчет числа ошибок
nErr2(jj,ii) = size(find([ip- ipHat2]),2);
end
end
SimBer8 = nErr2/N; % BER_AWGN (модель)
%%% КАМ-16
alpha16qam1 = [-3 -1 1 3]; % 16-QAM алфавит
Es_N0_dB1 = [-3:35]; % диапазон значений ОСШ
for iit = 1:length(Es_N0_dB1) % цикл по ОСШ
% формирование символов алфавита 16-КАМ
ip1 = randsrc(1,N,alpha16qam1) + j*randsrc(1,N,alpha16qam1);
% нормирование энергии
s3 = (1/sqrt(10))*ip1;
% формирование АБГШ
n1 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление шума
y3 = s3 + 10^(-Es_N0_dB1(iit)/20)*n1;
% комбинирование сигналов
yHat3 = sum(y3,1)/nRx(jj);
% демодуляция
y_re1 = real(yHat3); % real part
y_im1 = imag(yHat3); % 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;
ipHat3 = ipHat_re1 + j*ipHat_im1;
% подсчет ошибок
nErr3(iit) = size(find([ip1- ipHat3]),2);
end
SimBer16 = nErr2/N; % BER_AWGN (модель)
% Построение графиков
figure;
%%% ФМ-2
semilogy(Eb_N0_dB,TheoryBerAWGN(1,:),'g-^','LineWidth',2); hold on;
semilogy(Eb_N0_dB,SimBer(1,:),'bx-','LineWidth',2);
semilogy(Eb_N0_dB,TheoryBerAWGN(2,:),'c-<','LineWidth',2);
semilogy(Eb_N0_dB,SimBer(2,:),'rd-','LineWidth',2);
semilogy(Eb_N0_dB,TheoryBerAWGN(3,:),'y->','LineWidth',2);
semilogy(Eb_N0_dB,SimBer(3,:),'mp-','LineWidth',2);
%%% ФМ-4
semilogy(Eb_N0_dB,SimBer4(1,:),'blackx-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer4(2,:),'gd-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer4(3,:),'yp-','LineWidth',2);
%%% ФМ-8
semilogy(Eb_N0_dB,SimBer8(1,:),'b-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer8(2,:),'r-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer8(3,:),'m-','LineWidth',2);
%%% КАМ-16
semilogy(Eb_N0_dB,SimBer16(1,:),'o-','LineWidth',2);
semilogy(Eb_N0_dB,SimBer16(2,:),'k--','LineWidth',2);
semilogy(Eb_N0_dB,SimBer16(3,:),'m^-','LineWidth',2);
axis([min(Eb_N0_dB) max(Eb_N0_dB) 10^-6 0.5]); grid on;
legend('N=1 теория','N=1 ФМ-2', 'N=2 теория','N=2 ФМ-2','N=3 теория','N=3 ФМ-2','N=1 ФМ-4','N=2 ФМ-4','N=3 ФМ-4','N=1 ФМ-8','N=2 ФМ-8','N=3 ФМ-8','N=1 КАМ-16','N=2 КАМ-16','N=3 КАМ-16');
xlabel('E_{b}/N_{0}, дБ'); ylabel('BER (вероятность ошибки)');
title('Помехоустойчивость разнесенного приема в канале с АБГШ');
Соседние файлы в предмете Помехоустойчивость радиоэлектронных средств
