Добавил:
t.me Фулл всегда есть! А если нет, то Вы плохо его ищите! ИиКГ, СКДИКТ, ОКИТПЭС и тд https://t.me/whitedevil752rn Так же веду разработку КД (конструкторской документации) согласно ГОСТ. Имеется опыт работы при производстве на одном из ведущих в области радиэлектроники предприятии. Пишите) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab5

.m
Скачиваний:
0
Добавлен:
19.01.2026
Размер:
6 Кб
Скачать
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'); 
Соседние файлы в предмете Помехоустойчивость радиоэлектронных средств