Báo cáo thí nghiệm thông tin vô tuyến
Trang 1Phụ lục
Mã nguồn Matlab và các kết quả mô phỏng
Bài số 1: Mô phỏng kênh Rayleigh theo phương pháp Rice
Bài 1.1: Tính các thông số f, C, θ:%================================%Tinh cac thong so f, C, th
f_m=91; %Tan so Doppler lon nhat
b=1; %Phuong sai cua qua trinh g(t)
N1=9; %So phan tu g(t) phan thuc mo phong
N2=10; % So phan tu g(t) phan ao mo phongfor n=1:1:N1;
c1(n)=sqrt(2*b/N1);
f1(n)=f_m*sin(pi*(n-0.5)/(2*N1)); th1(n)=2*pi*n/(N1+1);
for n=1:1:N2;
c2(n)=sqrt(2*b/N2);
f2(n)=f_m*sin(pi*(n-0.5)/(2*N2)); th2(n)=2*pi*n/(N2+1);
save ex4p1_Res f1 f2 c1 c2 th1 th2
Bài 1.2: Lập hàm g.m để tính toán ~gi(t ) :
%=======================================%Ham tao qua trinh g(t)
%=======================================function y=g(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;
Trang 2Bài 1.3: Viết hàm để đưa ra biên độ kênh ~α(t )=|~g(t)|=|~g1+~g2| và vẽ hàm~αdB(t )=20 log~α (t) :
%=====================================%Tinh bien do kenh va ham alpha
load ex4p1_Res f1 f2 c1 c2 th1 th2
f_s=270800; %Tan so lay mau
T_sim=0.4; %Thoi gian mo phong
t=0:1/f_s:T_sim; % Thoi gian mo phong t
title('Bien do kenh (dB)');xlabel('\alpha(t)');
legend('\alpha(t)in dB',0);
Đồ thị:
Trang 3Bài 1.4: xác định các thông số giá trị trung bình, độ biến đổi, hàm mật độ xác suất (PDF):%======================================
%Ham tinh gia tri trung binh va
% do bien doi cua g1(t), g(t), alpha(t)%Ham mat do xac suat cua cac qua trinh% bang bieu do
load ex4p1_Res f1 f2 c1 c2 th1 th2
f_s=50000; %Tan so lay mau
T_sim=20; %Thoi gian mo phong
t=0:1/f_s:T_sim;
Trang 4mean_g=mean(g); %Gia tri trung binh cua g
mean_g1=mean(g1); % Gia tri trung binh cua g1
mean_alpha=mean(alpha); % Gia tri trung binh cua alpha
var_g=var(g); %Do bien doi cua g
var_g1=var(g1); % Do bien doi cua g1
var_alpha=var(alpha); % Do bien doi cua alpha
x=0:0.1:3; %Thoi gian tinh bang giay
b=hist(alpha,x); %Bieu do mat do xac suat cua alpha
c=hist(g1,x1); %Bieu do mat do xac suat cua g1
stem(x1,c/n1/(x1(2)-x1(1)));hold on;
title('Mat do xac suat PDF cua g1');xlabel('x');
legend('p_{g1}(x)','Phan bo Gaussian');hold off;
Đồ thị:
Trang 7Bài số 2: Mô hình kênh Fadding phân tập đa đường theo phương phápMonte Carlo
Bài 2.1: Mô hình kênh phân tập đa đường :Hàm mô hình Monte Carlo
%==========================================================================%Ham mo hinh kenh phan tap da duong theo phuong phap Monte Carlo
%==========================================================================function [h,t_next]
%u la bien ngau nhien duoc dung de roi rac tan so, pha cua hieu uong Doppler%number_of_summation: so luong hoac pha roi rac duoc su dung trong
%phuong phap Monte Carlo
%symbol+duration la khoang thoi gian lay mau cua tin hieu%f_fmax La tan so Doppler lon nhat
t=initial_time; %thoi gian bat dau quan sat kenh
Channel_Length=length(channel_coefficients); % Chieu dai dap ung kenh
h_vector=[]; %Vector mo hinh CIRfor k=1:Channel_Length;
clear all;
%Dat cac thong so
NFFT=64; %Chieu dai FFT
Trang 8t_a=8.0000e-007; %Thoi gian lay mau tin hieu 1/t_a
T_S=NFFT*t_a; %Thoi gian quan sat
f_dmax=0.0; %Tan so Doppler lon nhat
%He so cong suat tre
N_P=length(rho); %Chieu dai dap ung kenh
%Bien ngau nhien
initial_time=1.1; %Thoi gian bat dau
h=[]; %vector CIR
H=[]; %vector CTFfor i= 1:100;
h_i=MCM_channel_model(u,initial_time,number_of_summations,T_S,f_dmax,rho); h_i_tem=[h_i,zeros(1,NFFT-N_P)];
H_i_tem=fft(h_i_tem);
H_i=[H_i_tem(NFFT/2+1:NFFT),H_i_tem(1:NFFT/2)]; initial_time=initial_time+T_S;
h=[h;h_i]; H=[H;H_i];
xlabel('f in B=1.25MHz')ylabel('t in 1.024e-0.4s')zlabel('H(f,t)')
Lần lượt thay fD ,max bằng 0.0Hz, 5.0Hz và 500.0Hz ta có kết quả mô phỏng:Đồ thị:
Trang 11Bài 2.2: So sánh hàm tự tương quang thời gian của kênh cho 2 trường hợp:
%==========================================================================%chuong trinh uoc luong ham tu tuong tuong quan thoi gian cua kenh
clear all;NFFT=64;
number_of_summations=40;
Trang 12for i=0:NofSymbol-1;
[h1]=MCM_channel_model(u,t,number_of_summations,T_S,f_dmax1,rho); [h2]=MCM_channel_model(u,t,number_of_summations,T_S,f_dmax2,rho); h_extended1=[h1,zeros(1,NFFT-length(h1))];
h_extended2=[h2,zeros(1,NFFT-length(h2))]; H1=fft(h_extended1);
H2=fft(h_extended2); H_f11=H1(3);
H_f12=H2(3);
H_sequence1=[H_sequence1,H_f11]; H_sequence2=[H_sequence2,H_f12]; t=t+T_S;
tau1=-(NofSymbol-1)*T_S:T_S:(NofSymbol-1)*T_S;tau2=-(NofSymbol-1)*T_S:T_S:(NofSymbol-1)*T_S;plot(tau1,real(time_autoc1),'k.');
Trang 13Bài số 3: Mô phỏng hệ thống OFDM qua kênh vô tuyến
Bài 3.1: mô phỏng hệ thống đa sóng mang tần trực giao (OFDM) sử dụng các thông số lấy từ chuẩn HyperLAN/2:
y=[a(NFFT-G+1:NFFT),a];%chen khoang bao ve
Trang 14Code hàm “OFDM_Demodulator”
function [y] = OFDM_Demodulator(data,chnr,NFFT,G)
%Chen khoang bao ve
Code chương trình chính:
%=============================%Chuong trinh chinh
clear all;
NFFT=64; %Chieu dai NFFT
G=9; %Khoang bao ve
M_ary=16; %Dang dieu che QAM
t_a=50*10^(-9);%Thoi gian lay mau
NofOFDMSymbol=100; %So ky tu cua OFDM
length_data=(NofOFDMSymbol)*NFFT; %Chieu dai tong cong cua du lieu%Bits nguon
%Bit de ma hoa
%Dieu che QAM trong dai tan co so
%Chuan bi lay mau du lieu
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;
Trang 15for snr=snr_min:step:snr_max;
snr=snr-10*log10((NFFT-G)/NFFT); rs_frame=[];%Ma tran tin hieu nhan
for i=0:NofOFDMSymbol-1; %Dieu che OFDM
OFDM_signal_tem=OFDM_Modulator(Data_Pattern(i+1,:),NFFT,G); %Tin hieu nhan duoc qua kenh da duong duoc tao ra boi phep chap
rs=conv(OFDM_signal_tem,h); %Nhieu duoc them vao
rs=awgn(rs,snr,'measured','dB'); rs_frame=[rs_frame;rs];
clear OFDM_signal_tem; end;
previous_symbol=rs_frame(i-1,:);
ISI_term=previuos_symbol(NFFT+2*G+1:NFFT+G+N_P-1);
ISI=[ISI_term,zeros(1,length(previuos_symbol)-length(ISI_term))]; rs_i=rs_frame(i,:)+ISI;
else
rs_i=rs_frame(i,:); end;
%Giai ma OFDM
Demodulated_signal_i=OFDM_Demodulator(rs_i,NFFT,NFFT,G); d=Demodulated_signal_i./H;
demodulated_symbol_i=ddemodce(d,1,1,'QAM',M_ary); data_symbol=[data_symbol,demodulated_symbol_i]; end;
data_symbol=data_symbol'; %Tinh toan ky tu loi
[number,ratio]=symerr(symbols,data_symbol); ser=[ser,ratio];
xlabel('SNR in dB');
Kết quả mô phỏng:
Trang 16Bài 3.2: Thay G=0 (không có khoảng bảo vệ) và công suất trễ :
channel_profile=[1.0000,0.6095,0.4945,0.3940,0.2371,0.1900,0.1159,0.0699,0.0462];ta có đồ thị SER của hệ thống: