Professional Documents
Culture Documents
THÍ NGHIỆM
MSSV: 20193030
Hà Nội, 2023
MỤC LỤC
Bài 1.1...................................................................................................................................2
Bài 1.2...................................................................................................................................3
Bài 1.3...................................................................................................................................3
Bài 1.4...................................................................................................................................4
Bài 2.1...................................................................................................................................7
Bài 2.2...................................................................................................................................8
Bài 3.1..................................................................................................................................11
Bài 3.2.................................................................................................................................12
Bài 4.1.................................................................................................................................13
Bài 4.2.................................................................................................................................16
Báo cáo thí nghiệm thông tin vô tuyến
Mô phỏng kênh vô tuyến theo phương pháp RICE: Phương pháp Rice được hiểu là
phương pháp mô hình các quá trình xác suốt sử dụng các hàm tuần hoàn,tuy nhiên
các tham số như chu kì dao động pha và biên độ được xác định trước.Đối với
phương pháp Monte Carlo thì các tham số này được xác định ngẫu nhiên
Bài 1.1
i n f i ,n C i ,n θi , n [ rad ]
Bài 1.2
function y = g_function(c, f, th, t)
y = zeros(size(t));
for n = 1:length(f)
y = y + c(n) * cos(2 * pi * f(n) .* t + th(n));
end
Bài 1.3
clear;
load bai11_res f1 f2 c1 c2 th1 th2
fs = 270800;
Tsim = 0.4;
t = 0:1/fs:Tsim;
g1 = g_function(c1, f1, th1, t);
g2 = g_function(c2, f2, th2, t);
g = g1 + 1i * g2;
a_dB = 20 * log10(abs(g));
plot(t, a_dB);
title('The channel amplitude in dB');
xlabel('t');
ylabel('\alpha(t)');
legend('\alpha(t) in dB');
Kết quả:
3
Báo cáo thí nghiệm thông tin vô tuyến
Bài 1.4
clear;
load bai11_res f1 f2 c1 c2 th1 th2
fs = 50000;
Tsim = 20;
t = 1:1/fs:Tsim;
g1 = g_function(c1, f1, th1, t);
g2 = g_function(c2, f2, th2, t);
g = g1 + 1i * g2;
a = abs(g);
g_mean = mean(g);
g_var = var(g);
a_mean = mean(a);
a_var = var(a);
n = length(a);
x = 0:0.1:3;
b = hist(a, x);
figure(1);
stem(x, b/n/(x(2)-x(1)));
hold on;
k = 0;
ohm_p = 2;
p_a = (2.*x.*(k+1)/ohm_p).*exp(-k-((k+1).*x.^2/ohm_p)).*besseli(0,
(2.*x.*sqrt(k(k+1)/ohm_p)));
plot(x, p_a, 'r');
title('The PDF of \alpha(x)');
xlabel('x');
ylabel('P_{\alpha}(x)');
legend('P_{\alpha}(x)', 'Rayleigh distribution (Theory)');
figure(2);
n1 = length(g1);
Báo cáo thí nghiệm thông tin vô tuyến
x1 = -4:0.1:4;
c = hist(g1, x1);
stem(x1, c/n1/(x1(2)-x1(1)));
hold on;
p=(1/sqrt(2*pi))*exp(-x1.^2/2);
plot(x1, p, 'r');
title('The PDF of g1 process');
xlabel('x');
ylabel('P_{g1}(x)');
legend('P_{g1}(x)', 'Gaussian distribution (Theory)');
hold off;
Kết quả:
5
Báo cáo thí nghiệm thông tin vô tuyến
Bài 2.1
Hàm receiver.m
function chann_1=receiver(SNR_db,S_m,FS,x,S,g);
Es=var(S);
Eb=Es/2;
N_0=Eb/10^(SNR_db/10);
N0=sqrt(N_0/2)*(randn(size(FS))+j*randn(size(FS)));
NFS=(FS+N0)./g;
for i=1:length(FS)
d=abs(S_m-NFS(i));
md=min(d);
if md==d(1)
R(2*i-1)=0;
R(2*i)=0;
elseif md==d(2)
R(2*i-1)=0;
R(2*i)=1;
elseif md==d(3)
R(2*i-1)=1;
R(2*i)=1;
elseif md==d(4)
R(2*i-1)=1;
R(2*i)=0;
end
end
c=0;
for i=1:length(x)
if R(i)~=x(i)
c=c+1;
end
end
chann_1=c;
S=S(1:20000);
x=x(1:40000);
7
Báo cáo thí nghiệm thông tin vô tuyến
f_m=91;
b=1/2;
N1=9;
N2=N1+1;
f1=f_m*sin(pi/2/N1*((1:N1)-1/2));
c1=sqrt(2*b/N1)*ones(size(f1));
th1=rand(size(f1))*2*pi;
f2=f_m*sin(pi/2/N2*((1:N2)-1/2));
c2=sqrt(2*b/N2)*ones(size(f2));
th2=rand(size(f2))*2*pi;
f_s=270800;
T_symb=1/f_s;
t=(0:length(S)-1)*T_symb;
g1=g(c1,f1,th1,t);
g2=g(c2,f2,th2,t);
g=g1+j*g2;
FS=g.*S;
theta_m=[pi/4,3*pi/4,5*pi/4,7*pi/4];
S_m=exp(j*theta_m);
for i=1:length(S)/4
gS_m(4*i-3:4*i)=S_m.*g(4*i-3:4*i);
end
SNR_db=0:5:30;
for i=1:length(SNR_db)
c(i)=receiver(SNR_db(i),S_m,FS,x,S,g);
end
BER=c/length(x);
save Bai2_1 BER;
semilogy(SNR_db,BER,'.--');
title('The bit error probability of QPSK over a fading channel');
xlabel('SNR in dB');
ylabel('P_b');
Kết quả:
0
The bit error probability of QPSK over a fading channel
10
-1
10
-2
Pb
10
-3
10
-4
10
0 5 10 15 20 25
SNR in dB
Bài 2.2
clear;
b=1/2;
SNR_db=0:5:30;
Báo cáo thí nghiệm thông tin vô tuyến
Y_b=2*b*10.^(SNR_db/10);
p_b=(1-sqrt(Y_b./(1+Y_b)))/2;
k=semilogy(SNR_db,p_b,'*--');
set(k,'LineWidth',1);
hold on;
load Bai2_1 BER;
semilogy(SNR_db,BER,'ro');
hold off;
title('BER of slow flat Rayleigh fading channel');
xlabel('Y_b');
ylabel('P_b');
legend('Theory','Simulation');
Kết quả:
0
BER of slow flat Rayleigh fading channel
10
Theory
Simulation
-1
10
Pb
-2
10
-3
10
-4
10
0 5 10 15 20 25 30
Yb
SNR (dB) 0 5 10 15 20
pb lý thuyết 0.1464 0.0642 0.0233 0.0077 0.0025
BER mô phỏng 0.1626 0.0716 0.0215 0.0056 0.0018
Nhận xét: Khi ta tăng tỷ số SNR lên thì tỷ lệ lỗi bit sẽ giảm dần và SNR lớn thì mô
phỏng cho kết quả lỗi bit thấp hơn trên lí thuyết
So sánh với trường hợp điều chế QPSK qua kênh nhiễu Gauss. Kênh Rayleigh có tir lệ
lỗi bit cao hơn nhiều so với kênh Gauss khi xét cùng một mức tỉ số SNR
9
Báo cáo thí nghiệm thông tin vô tuyến
Hàm g.m
function h = g(t);
f_m=91;
b=1/2;
N1=9;
N2=N1+1;
f1=f_m*sin(pi/2/N1*((1:N1)-1/2));
c1=sqrt(2*b/N1)*ones(size(f1));
phi1=rand(size(f1))*2*pi;
f2=f_m*sin(pi/2/N2*((1:N2)-1/2));
c2=sqrt(2*b/N2)*ones(size(f2));
phi2=rand(size(f2))*2*pi;
y1 = zeros(size(t));
for n=1:length(f1);
y1 = y1 + c1(n)*cos(2*pi*f1(n).*t + phi1(n));
end;
y2 = zeros(size(t));
for n=1:length(f2);
y2 = y2 + c2(n)*cos(2*pi*f2(n).*t + phi2(n));
end;
h = y1 + j*y2;
clear y1,y2;
Bai3.m
x = round(rand(1,1000000));
S = qammod(x,2,'Inputtype','bit');
Es = var(S);
Eb = Es/2;
fs = 270800;
T_sym = 1/fs;
t = (0:length(S)-1)*T_sym;
SNR_db = -10:30;
L = [1 2 3 4];
BER = zeros(length(L),length(SNR_db));
Pb = zeros(length(L),length(SNR_db));
for a=1:length(L)
for i=1:length(SNR_db)
N_0 = Eb/10^(SNR_db(i)/10);
N0 = sqrt(N_0/2)*(randn(size(S)) + j*randn(size(S)));
z = zeros(1,length(S));
for l=1:L(a)
h = g(t);
y = S.*h;
Báo cáo thí nghiệm thông tin vô tuyến
y = y + N0;
w = conj(h);
z = z + y.*w;
end
r = zeros(1,1000000);
for j=1:length(z)
if z(j) > 0
r(j) = 1;
end
if z(j) <= 0
r(j) = 0;
end
end
count = 0;
for n=1:length(x)
if r(n) == x(n)
count = count + 1;
end
end
BER(a,i) = 1 - count/length(x);
SNR = 10^(SNR_db(i)/10);
mu = sqrt(SNR/(SNR+1));
for l=1:L(a)
Pb(a,i) = Pb(a,i) + ((0.5*(1-mu))^L(a))*nchoosek(L(a)+l-2,l-
1)*((0.5*(1+mu))^(l-1));
end
clear j;
clear n;
end
end
Bài 3.1
plot(SNR_db, BER(2,:),'b-')
hold on;
plot(SNR_db, Pb(1,:),'r--');
hold on;
plot(SNR_db, Pb(2,:),'g--');
legend('BER(1)','Pb(1)','Pb(2)');
xlabel('SNR_{dB}');
ylabel('BER/P_b');
hold off;
Kết quả:
11
Báo cáo thí nghiệm thông tin vô tuyến
0.35
BER(1)
Pb(1)
0.3
Pb(2)
0.25
0.2
BER/Pb
0.15
0.1
0.05
0
-10 -5 0 5 10 15 20 25 30
SNR dB
Bài 3.2
plot(SNR_db, BER,'-')
hold on;
plot(SNR_db, Pb(),'--');
legend('BER(1)','BER(2)','BER(3)','BER(4)','Pb(1)','Pb(2)','Pb(
3)','Pb(4)');
hold off;
Kết quả:
0.35
BER(1)
BER(2)
0.3
BER(3)
BER(4)
Pb(1)
0.25
Pb(2)
Pb(3)
Pb(4)
0.2
BER/P b
0.15
0.1
0.05
0
-10 -5 0 5 10 15 20 25 30
SNR dB
Q3.1. Khi số ăng-ten sử dụng tăng lên thì tỷ lệ lỗi bit càng nhỏ, do sử dụng càng nhiều
anten càng tối ưu được công suất truyền và hạn chế được nhiễu không thể kiểm soát của
kênh fading Rayleigh
Báo cáo thí nghiệm thông tin vô tuyến
Q3.2. Các anten phải độc lập xác suất với nhau để tín hiệu truyền đi từ các anten là độc
lập, không gây nhiễu lên nhau gây méo tín hiệu.
Q3.3. Để đảm bảo được tính độc lập thì các anten bên thu phải được sắp xếp cách đều
nhau và cách nhau một số nguyên lần nửa bước sóng.
13
Báo cáo thí nghiệm thông tin vô tuyến
Bài 4.1
OFDM_Modulator.m
function [y]=OFDM_Modulator(data,NFFT,G);
chnr=length(data);
N=NFFT;
x=[data,zeros(1,NFFT-chnr)]; %insert the guard interval
OFDM_Demoodulator.m
function [y]=OFDM_Demodulator(data,chnr,NFFT,G);
%insert the guard interval
x_remove_guard_interval=[data(G+1:NFFT+G)];
x=fft(x_remove_guard_interval);
y=x(1:chnr); %Zero removing
Bai4_1.m
clear all;
NFFT=64; %FFT length
G=9; % Guard interval length
M_ary=16; % Multilevel of M-ary symbol
t_a=50*10^(-9); % Sampling duration of HiperLAN/2
%load rho.am-ascii; % load discrete multi-path channel profile
rho=[1,0.8487,0.7663,0.7880,0.6095,0.6658,0.5174,0.0543,0.0465];
h=sqrt(rho);
N_P=length(rho);
H=fft([h,zeros(1,NFFT-N_P)]);
NofOFDMSymbol=100; % Number of OFDM symbol
length_data=(NofOFDMSymbol)*NFFT; % The total data length
% ------------------------
% Source bites
% ------------------------
source_data=randi([0,1],length_data,sqrt(M_ary));
Báo cáo thí nghiệm thông tin vô tuyến
% ------------------------
% bit to symbol coder
% ------------------------
symbols=bi2de(source_data);
% ------------------------
% QAM modulator in base band
% ------------------------
QAM_Symbol=dmodce(symbols,1,1,'qam',M_ary);
% ------------------------
% Preparing data pattern
% ------------------------
Data_Pattern=[];% Transmitted Signal before IFFT
for i=0:NofOFDMSymbol-1
QAM_tem=[];
for n=1:NFFT
QAM_tem=[QAM_tem,QAM_Symbol(i*NFFT+n)];
end
Data_Pattern=[Data_Pattern;QAM_tem];
clear QAM_tem;
end
ser=[]; % Set the counter of symbol error ratio to be a empty vector
snr_min=0;
snr_max=25;
step=1;
for snr=snr_min:step:snr_max
snr=snr-10*log10((NFFT+G)/NFFT);% Miss matching effect
rs_frame=[];% A Matrix of received signal
for i=0:NofOFDMSymbol-1
% OFDM modulator
OFDM_signal_tem=OFDM_Modulator(Data_Pattern(i+1,:),NFFT,G);
% The received signal over multi-path channel is created by a
% convolutinal operation.
rs=conv(OFDM_signal_tem,h);
% Additive noise is add
15
Báo cáo thí nghiệm thông tin vô tuyến
rs=awgn(rs,snr,'measured','dB');
rs_frame=[rs_frame;rs];
clear OFDM_signal_tem;
end
% ------------------------
% Receiver
% ------------------------
Receiver_Data=[];% Prepare a matrix for received data symbols
d=[]; % Demodulated symbols
data_symbol=[];
for i=1:NofOFDMSymbol
if(N_P>G+1)&&(i>1)
% If it is not first symbol and the length of CIR is longer than
% the guard interval length,then the ISI term must be taken into
% accout
previous_symbol=rs_frame(i-1,:);
% The previous OFDM symbol
ISI_term=previous_symbol(NFFT+2*G+1:NFFT+G+N_P+1);
% Position from NFFT+2G+1:NFFT+G+N_P-1 is ISI term
ISI=[ISI_term,zeros(1,length(previous_symbol)-length(ISI_term))];
rs_i=rs_frame(i,:)+ISI;
% the ISI term is added to the current OFDM symbol
else
rs_i=rs_frame(i,:);
end
% ------------------------
% OFDM Demodulator
% ------------------------
Demolated_signal_i=OFDM_Demodulation(rs_i,NFFT,NFFT,G);
% ------------------------
% OFDM Equalization
% ------------------------
d=Demolated_signal_i./H;
demodulated_symbol_i=ddemodce(d,1,1,'QAM',M_ary);
Báo cáo thí nghiệm thông tin vô tuyến
data_symbol=[data_symbol;demodulated_symbol_i];
end
%data_symbol=data_symbol';
% Calculation of error symbols
[number,ratio]=symerr(symbols,data_symbol);
ser=[ser,ratio];
save Bai3_1 ser;
end
snr=snr_min:step:snr_max;
semilogy(snr,ser,'bo');
ylabel('SER');
xlabel('SNR in dB');
0
10
SER
-1
10
-2
10
0 5 10 15 20 25
SNR in dB
Bài 4.2
G=0;
17
Báo cáo thí nghiệm thông tin vô tuyến
0
10
G=0
G=9
SNR in dB
-1
10
-2
10
0 5 10 15 20 25
SER
Hình 3.5 Comparision of SER of an OFDM system with and without guard interval
SNR (dB) 0 5 10 15 20 25
0.724687
SER(G=0) 0.78734375 0.6109375 0.48171875 0.33875 0.2484375
5
0.710937
SER(G=9) 0.7865625 0.58734375 0.426875 0.21140625 0.06078125
5
Q4.1. Tiền tố vòng : là cách chèn khoảng bảo vệ để tránh ISI, ngta sử dụng một số lượng
mẫu ở cuối ofdm symbol đưa lên đầu để tạo một khoảng bảo vệ giữa hau kí hiệu liên tiếp
Q4.2. Tín hiệu OFDM là tín hiệu phức khi truyền qua kênh phần thực sẽ nhân một sóng
mang cos, còn phần ảo sẽ nhân một sóng mang hình sin tạo hệ trực giao
Q4.3. SER của G=9 thấp hơn SER của G=0, tuy nhiên khi SNR bé thì tỉ số SER là như
nhau, điều này chứng tỏ điều quan trọng của khoảng bảo vệ và tiền tố vòng crc