📄 project1_prob1.m
字号:
clear all;
close all;
clc;
%% Assume T == 1, a == 1, snr == Eb / N0;
snr = [0.1 : 0.1 : 15]';
M = length(snr);
A = [-3/2, -1/2, 1/2, 3/2];
E = power(A, 2);
Eb = sum(E)/4/2;
N0 = Eb ./ (10 .^ (snr./10));
N = 10000; % Do 1000 times simulations
w = 0 + sqrt(N0./2) * randn(1, N);
x = rand(M, N);
y = rand(M, N);
error = zeros(M,1);
for (i = 1 : M)
for (j = 1 : N)
if x(i,j) >=0 && x(i,j) < 0.25
x(i,j) = A(1);
else if x(i,j) >= 0.25 && x(i,j) < 0.50
x(i,j) = A(2);
else if x(i,j) >= 0.50 && x(i,j) < 0.75
x(i,j) = A(3);
else if x(i,j) >= 0.75 && x(i,j) < 1.0
x(i,j) = A(4);
end
end
end
end
y(i,j) = x(i,j) + w(i,j);
if y(i,j) < -1
y(i,j) = A(1);
else if y(i,j) >= -1 && y(i,j) < 0
y(i,j) = A(2);
else if y(i,j) >= 0 && y(i,j) < 1
y(i,j) = A(3);
else if y(i,j) >= 1
y(i,j) = A(4);
end
end
end
end
if (y(i,j) ~= x(i,j))
error(i) = error(i) +1;
end
end
ErrProb(i) = error(i) / N;
end
ErrProb_theory = 3/4 * erfc(1/2 * sqrt(1./N0));
figure;
%plot(snr,ErrProb);
%title('The result of Monte Carlo simulation');
plot(snr,ErrProb,'-r*');
hold on;
plot(snr, ErrProb_theory, '-ob');
title('The comparison between the Monte Carlo Simulation result and the theoretical result');
xlabel('Eb/N0 (dB)');
ylabel('Error Probability');
legend('Simulation Result', 'Theoretical Result');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -