Добавил:
debilX2
t.me
Фулл всегда есть! А если нет, то Вы плохо его ищите! ИиКГ, СКДИКТ, ОКИТПЭС и тд https://t.me/whitedevil752rn Так же веду разработку КД (конструкторской документации) согласно ГОСТ. Имеется опыт работы при производстве на одном из ведущих в области радиэлектроники предприятии. Пишите)
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lr4_1
.m clear all
close all
clc
N = 10^6; % число символов для оценки ПУ
Eb_N0_dB = [0:20]; % диапазон значений ОСШ
for ii = 1:length(Eb_N0_dB)
ip = rand(1,N)>0.5; % формирование битового потока
s = 2*ip-1; % отображение битов в символы ФМ-2
% формирование коэффициентов замираний и АБГШ
h = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
hMod = kron(reshape(h,2,N/2),ones(1,2));
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% ПВК Аламути для MISO 2*1
sCode = zeros(2,N); sCode(:,1:2:end) = (1/sqrt(2))*reshape(s,2,N/2);
sCode(:,2:2:end) = (1/sqrt(2))*...
(kron(ones(1,N/2),[-1;1]).*flipud(reshape(conj(s),2,N/2)));
% добавление АБГШ и замираний
y = sum(hMod.*sCode,1) + 10^(-Eb_N0_dB(ii)/20)*n;
yMod = kron(reshape(y,2,N/2),ones(1,2)); % [y1 y1 ... ; y2 y2 ...]
yMod(2,:) = conj(yMod(2,:)); % [y1 y1 ... ; y2* y2*...]
% Формирование матрицы h Alamouti для MISO 2*1
hEq = zeros(2,N); hEq(:,[1:2:end]) = reshape(h,2,N/2);
hEq(:,[2:2:end]) = kron(ones(1,N/2),[1;-1]).*flipud(reshape(h,2,N/2));
hEq(1,:) = conj(hEq(1,:));
hEqPower = sum(hEq.*conj(hEq),1);
% Комбинирование сигналов по алгоритму Alamouti
yHat = sum(hEq.*yMod,1)./hEqPower;
yHat(2:2:end) = conj(yHat(2:2:end));
% приемник с жесткими решениями
ipHat = real(yHat)>0;
% подсчет числа ошибок
nErr(ii) = size(find([ip- ipHat]),2);
end
simBer = nErr/N;
EbN0Lin = 10.^(Eb_N0_dB/10); theoryBer_nRx1 = 0.5.*(1-1*(1+1./EbN0Lin).^(-0.5));
p = 1/2 - 1/2*(1+1./EbN0Lin).^(-1/2); theoryBerMRC_nRx2 = p.^2.*(1+2*(1-p));
pAlamouti = 1/2 - 1/2*(1+2./EbN0Lin).^(-1/2);
theoryBerAlamouti_nTx2_nRx1 = pAlamouti.^2.*(1+2*(1-pAlamouti));
close all; figure;
semilogy(Eb_N0_dB,theoryBer_nRx1,'k','LineWidth',2); hold on;
semilogy(Eb_N0_dB,theoryBerMRC_nRx2,'mx-','LineWidth',2);
semilogy(Eb_N0_dB,theoryBerAlamouti_nTx2_nRx1,'c--','LineWidth',2);
semilogy(Eb_N0_dB,simBer,'bs-','LineWidth',2);
axis([min(Eb_N0_dB) max(Eb_N0_dB) 10^-5 0.5]); grid on;
legend('формула (M_{Tx}=1,N_{Rx}=1)', 'формула (M_{Tx}=1,N_{Rx}=2, MRC)',...
'формула (M_{Tx}=2, N_{Rx}=1, Alamouti)',...
'ИМ (M_{Tx}=2, N_{Rx}=1, Alamouti)');
xlabel('E_{b}/N_{0}, дБ'); ylabel('BER (вероятность ошибки)');
title('Помехоустойчивость ПВК Alamouti (MISO 2*1)');
close all
clc
N = 10^6; % число символов для оценки ПУ
Eb_N0_dB = [0:20]; % диапазон значений ОСШ
for ii = 1:length(Eb_N0_dB)
ip = rand(1,N)>0.5; % формирование битового потока
s = 2*ip-1; % отображение битов в символы ФМ-2
% формирование коэффициентов замираний и АБГШ
h = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
hMod = kron(reshape(h,2,N/2),ones(1,2));
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)];
% ПВК Аламути для MISO 2*1
sCode = zeros(2,N); sCode(:,1:2:end) = (1/sqrt(2))*reshape(s,2,N/2);
sCode(:,2:2:end) = (1/sqrt(2))*...
(kron(ones(1,N/2),[-1;1]).*flipud(reshape(conj(s),2,N/2)));
% добавление АБГШ и замираний
y = sum(hMod.*sCode,1) + 10^(-Eb_N0_dB(ii)/20)*n;
yMod = kron(reshape(y,2,N/2),ones(1,2)); % [y1 y1 ... ; y2 y2 ...]
yMod(2,:) = conj(yMod(2,:)); % [y1 y1 ... ; y2* y2*...]
% Формирование матрицы h Alamouti для MISO 2*1
hEq = zeros(2,N); hEq(:,[1:2:end]) = reshape(h,2,N/2);
hEq(:,[2:2:end]) = kron(ones(1,N/2),[1;-1]).*flipud(reshape(h,2,N/2));
hEq(1,:) = conj(hEq(1,:));
hEqPower = sum(hEq.*conj(hEq),1);
% Комбинирование сигналов по алгоритму Alamouti
yHat = sum(hEq.*yMod,1)./hEqPower;
yHat(2:2:end) = conj(yHat(2:2:end));
% приемник с жесткими решениями
ipHat = real(yHat)>0;
% подсчет числа ошибок
nErr(ii) = size(find([ip- ipHat]),2);
end
simBer = nErr/N;
EbN0Lin = 10.^(Eb_N0_dB/10); theoryBer_nRx1 = 0.5.*(1-1*(1+1./EbN0Lin).^(-0.5));
p = 1/2 - 1/2*(1+1./EbN0Lin).^(-1/2); theoryBerMRC_nRx2 = p.^2.*(1+2*(1-p));
pAlamouti = 1/2 - 1/2*(1+2./EbN0Lin).^(-1/2);
theoryBerAlamouti_nTx2_nRx1 = pAlamouti.^2.*(1+2*(1-pAlamouti));
close all; figure;
semilogy(Eb_N0_dB,theoryBer_nRx1,'k','LineWidth',2); hold on;
semilogy(Eb_N0_dB,theoryBerMRC_nRx2,'mx-','LineWidth',2);
semilogy(Eb_N0_dB,theoryBerAlamouti_nTx2_nRx1,'c--','LineWidth',2);
semilogy(Eb_N0_dB,simBer,'bs-','LineWidth',2);
axis([min(Eb_N0_dB) max(Eb_N0_dB) 10^-5 0.5]); grid on;
legend('формула (M_{Tx}=1,N_{Rx}=1)', 'формула (M_{Tx}=1,N_{Rx}=2, MRC)',...
'формула (M_{Tx}=2, N_{Rx}=1, Alamouti)',...
'ИМ (M_{Tx}=2, N_{Rx}=1, Alamouti)');
xlabel('E_{b}/N_{0}, дБ'); ylabel('BER (вероятность ошибки)');
title('Помехоустойчивость ПВК Alamouti (MISO 2*1)');
Соседние файлы в предмете Помехоустойчивость радиоэлектронных средств
