Добавил:
debilX2
t.me
Фулл всегда есть! А если нет, то Вы плохо его ищите! ИиКГ, СКДИКТ, ОКИТПЭС и тд https://t.me/whitedevil752rn Так же веду разработку КД (конструкторской документации) согласно ГОСТ. Имеется опыт работы при производстве на одном из ведущих в области радиэлектроники предприятии. Пишите)
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab5
.m close all
clear all
clc
%%% ФМ-2
N = 10^6; % число символов для оценки ПУ
Nrais = [1 10^6];
ip = rand(1,N)>0.5; % формирование битового потока
s = 2*ip-1; % отображение битов в символы ФМ-2
% формирование АБГШ
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for i = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование коэффициентов замираний
% добавление АБГШ
ya = s + 10^(-Eb_N0_dB(i)/20)*n;
% приемник с жесткими решениями
ipHata = real(ya)>0;
% подсчет числа ошибок
nErra(i) = size(find([ip- ipHata]),2);
end
simBerAWGN = nErra/N; % BER (модель)
% формирование Релей
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for ii = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование коэффициентов замираний
h = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ и замираний
y = h.*s + 10^(-Eb_N0_dB(ii)/20)*n;
% выравнивание ИХ канала
yHat = y./h;
% приемник с жесткими решениями
ipHat = real(yHat)>0;
% подсчет числа ошибок
nErr(ii) = size(find([ip- ipHat]),2);
end
simBer = nErr/N; % BER (модель)
% формирование Райса
n1 = 1/sqrt(2)*[raylrnd(1,Nrais) + j*raylrnd(1,Nrais)];
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for iiy = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование коэффициентов замираний
h1 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ и замираний
y1 = h1.*s + 10^(-Eb_N0_dB(iiy)/20)*n1;
% выравнивание ИХ канала
yHat1 = y1./h1;
% приемник с жесткими решениями
ipHat1 = real(yHat1)>0;
% подсчет числа ошибок
nErr1(iiy) = size(find([ip- ipHat1]),2);
end
simBer1 = nErr1/N; % BER (модель)
%%% ФМ-4
N = 10^6; % число символов для оценки ПУ
ip = rand(1,N)>0.5; % формирование битового потока
ip1 = rand(1,N)>0.5;
s2 = (2*ip-1)*sqrt(2)/2+(2*ip1-1)*j*sqrt(2)/2; % отображение битов в символы ФМ-2
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
% формирование АБГШ
for ig = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование АБГШ
na1 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ
ya1 = s2 + 10^(-Eb_N0_dB(ig)/20)*na1;
% приемник с жесткими решениями
ipHata1 = real(ya1)>0;
% подсчет числа ошибок
nErra1(ig) = size(find([ip- ipHata1]),2);
end
simBerAWGN1 = nErra/N; % BER (модель)
% формирование Релей
for iiu = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование
n2 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% формирование коэффициентов замираний
h2 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ и замираний
y2 = h2.*s2 + 10^(-Eb_N0_dB(iiu)/20)*n2;
% выравнивание ИХ канала
yHat2 = y2./h2;
% приемник с жесткими решениями
ipHat2 = real(yHat2)>0;
% подсчет числа ошибок
nErr2(iiu) = size(find([ip- ipHat2]),2);
end
simBer2 = nErr2/N; % BER_Rayleigh(модель ФМ-4)
theoryBerAWGN = 0.5*erfc(sqrt(10.^(Eb_N0_dB/10))); % BER_AWGN (теория)
EbN0Lin = 10.^(Eb_N0_dB/10);
theoryBerReley = 0.5.*(1-sqrt(EbN0Lin./(EbN0Lin+1))); % BER_Rayleigh(теория)
% формирование Райса
n3 = 1/sqrt(2)*[raylrnd(1,Nrais) + j*raylrnd(1,Nrais)];
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for iit = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование коэффициентов замираний
h3 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ и замираний
y3 = h3.*s2 + 10^(-Eb_N0_dB(iit)/20)*n3;
% выравнивание ИХ канала
yHat3 = y3./h3;
% приемник с жесткими решениями
ipHat3 = real(yHat3)>0;
% подсчет числа ошибок
nErr3(iit) = size(find([ip- ipHat3]),2);
end
simBer3 = nErr3/N; % BER_Rais(модель ФМ-4)
% Построение графиков
close all; figure;
semilogy(Eb_N0_dB,theoryBerAWGN,'cd-','LineWidth',2); hold on;
semilogy(Eb_N0_dB,theoryBerReley,'bp-','LineWidth',2);
semilogy(Eb_N0_dB,simBerAWGN,'o-','LineWidth',2);
semilogy(Eb_N0_dB,simBer,'mx-','LineWidth',2);
semilogy(Eb_N0_dB,simBer1,'rd-','LineWidth',2);
semilogy(Eb_N0_dB,simBerAWGN1,'y-','LineWidth',2);
semilogy(Eb_N0_dB,simBer2,'gx-','LineWidth',2);
semilogy(Eb_N0_dB,simBer3,'black-','LineWidth',2);
axis([-3 35 10^-5 0.5]); grid on;
legend('BER-AWGN (теория)','BER-Rayleigh (теория)', 'BER-AWGN(модель ФМ-2)', 'BER-Rayleigh(модель ФМ-2)', 'BER-Rais(модель ФМ-2)', 'BER-AWGN(модель ФМ-4)', 'BER-Rayleigh(модель ФМ-4)', 'BER-Rais(модель ФМ-4)');
xlabel('Eb/No, дБ'); ylabel('BER (вероятность ошибки)');
title('Помехоустойчивость сигналов ФМ-2 и ФМ-4');
clear all
clc
%%% ФМ-2
N = 10^6; % число символов для оценки ПУ
Nrais = [1 10^6];
ip = rand(1,N)>0.5; % формирование битового потока
s = 2*ip-1; % отображение битов в символы ФМ-2
% формирование АБГШ
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for i = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование коэффициентов замираний
% добавление АБГШ
ya = s + 10^(-Eb_N0_dB(i)/20)*n;
% приемник с жесткими решениями
ipHata = real(ya)>0;
% подсчет числа ошибок
nErra(i) = size(find([ip- ipHata]),2);
end
simBerAWGN = nErra/N; % BER (модель)
% формирование Релей
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for ii = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование коэффициентов замираний
h = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ и замираний
y = h.*s + 10^(-Eb_N0_dB(ii)/20)*n;
% выравнивание ИХ канала
yHat = y./h;
% приемник с жесткими решениями
ipHat = real(yHat)>0;
% подсчет числа ошибок
nErr(ii) = size(find([ip- ipHat]),2);
end
simBer = nErr/N; % BER (модель)
% формирование Райса
n1 = 1/sqrt(2)*[raylrnd(1,Nrais) + j*raylrnd(1,Nrais)];
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for iiy = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование коэффициентов замираний
h1 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ и замираний
y1 = h1.*s + 10^(-Eb_N0_dB(iiy)/20)*n1;
% выравнивание ИХ канала
yHat1 = y1./h1;
% приемник с жесткими решениями
ipHat1 = real(yHat1)>0;
% подсчет числа ошибок
nErr1(iiy) = size(find([ip- ipHat1]),2);
end
simBer1 = nErr1/N; % BER (модель)
%%% ФМ-4
N = 10^6; % число символов для оценки ПУ
ip = rand(1,N)>0.5; % формирование битового потока
ip1 = rand(1,N)>0.5;
s2 = (2*ip-1)*sqrt(2)/2+(2*ip1-1)*j*sqrt(2)/2; % отображение битов в символы ФМ-2
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
% формирование АБГШ
for ig = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование АБГШ
na1 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ
ya1 = s2 + 10^(-Eb_N0_dB(ig)/20)*na1;
% приемник с жесткими решениями
ipHata1 = real(ya1)>0;
% подсчет числа ошибок
nErra1(ig) = size(find([ip- ipHata1]),2);
end
simBerAWGN1 = nErra/N; % BER (модель)
% формирование Релей
for iiu = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование
n2 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% формирование коэффициентов замираний
h2 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ и замираний
y2 = h2.*s2 + 10^(-Eb_N0_dB(iiu)/20)*n2;
% выравнивание ИХ канала
yHat2 = y2./h2;
% приемник с жесткими решениями
ipHat2 = real(yHat2)>0;
% подсчет числа ошибок
nErr2(iiu) = size(find([ip- ipHat2]),2);
end
simBer2 = nErr2/N; % BER_Rayleigh(модель ФМ-4)
theoryBerAWGN = 0.5*erfc(sqrt(10.^(Eb_N0_dB/10))); % BER_AWGN (теория)
EbN0Lin = 10.^(Eb_N0_dB/10);
theoryBerReley = 0.5.*(1-sqrt(EbN0Lin./(EbN0Lin+1))); % BER_Rayleigh(теория)
% формирование Райса
n3 = 1/sqrt(2)*[raylrnd(1,Nrais) + j*raylrnd(1,Nrais)];
Eb_N0_dB = [-3:35]; % диапазон значений ОСШ
for iit = 1:length(Eb_N0_dB) % цикл по ОСШ
% формирование коэффициентов замираний
h3 = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% добавление АБГШ и замираний
y3 = h3.*s2 + 10^(-Eb_N0_dB(iit)/20)*n3;
% выравнивание ИХ канала
yHat3 = y3./h3;
% приемник с жесткими решениями
ipHat3 = real(yHat3)>0;
% подсчет числа ошибок
nErr3(iit) = size(find([ip- ipHat3]),2);
end
simBer3 = nErr3/N; % BER_Rais(модель ФМ-4)
% Построение графиков
close all; figure;
semilogy(Eb_N0_dB,theoryBerAWGN,'cd-','LineWidth',2); hold on;
semilogy(Eb_N0_dB,theoryBerReley,'bp-','LineWidth',2);
semilogy(Eb_N0_dB,simBerAWGN,'o-','LineWidth',2);
semilogy(Eb_N0_dB,simBer,'mx-','LineWidth',2);
semilogy(Eb_N0_dB,simBer1,'rd-','LineWidth',2);
semilogy(Eb_N0_dB,simBerAWGN1,'y-','LineWidth',2);
semilogy(Eb_N0_dB,simBer2,'gx-','LineWidth',2);
semilogy(Eb_N0_dB,simBer3,'black-','LineWidth',2);
axis([-3 35 10^-5 0.5]); grid on;
legend('BER-AWGN (теория)','BER-Rayleigh (теория)', 'BER-AWGN(модель ФМ-2)', 'BER-Rayleigh(модель ФМ-2)', 'BER-Rais(модель ФМ-2)', 'BER-AWGN(модель ФМ-4)', 'BER-Rayleigh(модель ФМ-4)', 'BER-Rais(модель ФМ-4)');
xlabel('Eb/No, дБ'); ylabel('BER (вероятность ошибки)');
title('Помехоустойчивость сигналов ФМ-2 и ФМ-4');
Соседние файлы в предмете Помехоустойчивость радиоэлектронных средств
