1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo thí nghiệm thông tin vô tuyến

17 1,3K 3
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo cáo thí nghiệm thông tin vô tuyến
Tác giả Hoàng Sỹ Tân
Trường học Trường Đại Học
Thể loại báo cáo
Định dạng
Số trang 17
Dung lượng 223,08 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Báo cáo thí nghiệm thông tin vô tuyến

Trang 1

Phụ 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

%================================

clear

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 phong

for 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);

end

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);

end

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 2

Bà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

%=====================================

clear;

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

g1=g(c1,f1,th1,t);

g2=g(c2,f2,th2,t);

g=g1+j*g2;

alpha=abs(g);

alpha_dB=20*log10(alpha);

plot(t,alpha_dB);

title('Bien do kenh (dB)');

xlabel('\alpha(t)');

legend('\alpha(t)in dB',0);

Đồ thị:

Trang 3

Bà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

%======================================

clear;

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 4

g2=g(c2,f2,th2,t);

g=g1+j*g2;

alpha=abs(g);

mean_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

n=length(alpha);

x=0:0.1:3; %Thoi gian tinh bang giay

b=hist(alpha,x); %Bieu do mat do xac suat cua alpha

figure(1);

stem(x,b/n/(x(2)-x(1)));%Ve tin hieu roi rac

hold on;

k=0; %He so k'=s^2/(2*b_0)

total_p=2; %Cong suat nhan duoc

alpha_p=(2.*x.*(k+1)/total_p).*exp(-k-((k+1).*x.^2/total_p)).*besseli(0, (2.*x.*sqrt(k*(k+1)/total_p)));

plot(x,alpha_p,'r');

title('Mat do xac suat cua alpha(x)');

xlabel('x');

ylabel('P_{\alpha}(x)');

legend('p_{\alpha}(x)','Phan bo Rayleigh');

hold off;

figure(2);

n1=length(g1);

x1=-4:0.1:4;

c=hist(g1,x1); %Bieu do mat do xac suat cua g1

stem(x1,c/n1/(x1(2)-x1(1)));

hold on;

p=(1/sqrt(2*pi))*exp(-x1.^2/2);

plot(x1,p,'r');

title('Mat do xac suat PDF cua g1');

xlabel('x');

ylabel('P_{g1}(x)');

legend('p_{g1}(x)','Phan bo Gaussian');

hold off;

Đồ thị:

Trang 7

Bài số 2: Mô hình kênh Fadding phân tập đa đường theo phương pháp

Monte 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]

=MCM_channel_model(u,initial_time,number_of_summations,symbol_duration,f_dmax ,channel_coefficients);

%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 CIR

for k=1:Channel_Length;

u_k=u(k,:);

%Mot bien ngau nhien cua k

phi=2*pi*u_k;

%tan so Doppler roi rac su dung trong Monte Carlo

f_d=f_dmax*sin(2*pi*u_k);

h_tem=channel_coefficients(k)*1/(sqrt(number_of_summations))*sum(exp(j*phi).* exp(j*pi*f_d*t));

h_vector=[h_vector,h_tem];

end;

h=h_vector;

t_next=initial_time+symbol_duration;

end

Chương trình chính:

%==========================================================================

%Chuong trinh chinh mo phong phuong phap Monte Carlo

%==========================================================================

clear all;

%Dat cac thong so

NFFT=64; %Chieu dai FFT

Trang 8

t_a=8.0000e-007; %Thoi gian lay mau tin hieu 1/t_a

T_S=NFFT*t_a; %Thoi gian quan sat

number_of_summations=40;

f_dmax=0.0; %Tan so Doppler lon nhat

channel_profile=[1.0000,0.8487,0.7663,0.7880,0.6658,0.6658,0.5174,0.0543,0.04 56];

%He so cong suat tre

rho=channel_profile;

N_P=length(rho); %Chieu dai dap ung kenh

u=rand(N_P,number_of_summations);

%Bien ngau nhien

initial_time=1.1; %Thoi gian bat dau

h=[]; %vector CIR

H=[]; %vector CTF

for 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];

end;

figure(2);

mesh(abs(H))

xlabel('f in B=1.25MHz')

ylabel('t in 1.024e-0.4s')

zlabel('H(f,t)')

title('f_{D,max}=0.0Hz')

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 11

Bà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;

t_a=8.0000e-007;

T_S=NFFT*t_a;

number_of_summations=40;

Trang 12

f_dmax2=9.0;

channel_profile=[1.0000,0.8487,0.7663,0.7880,0.6658,0.5644,0.5174,0.0543,0.04 65];

rho=channel_profile;

N_P=length(rho);

u=rand(N_P,number_of_summations);

T_S=NFFT*t_a;

NofSymbol=1000;

t=0.1;

H_sequence1=[];

H_sequence2=[];

for 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;

end;

time_autoc1=xcorr(H_sequence1,'coeff');

time_autoc2=xcorr(H_sequence2,'coeff');

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.');

xlabel('\Delta t (s)');

ylabel('Tuong quan thoi gian R(\Delta t)');

hold on;

plot(tau2,real(time_autoc2),'k.');

legend('f_{D,max}=9.0Hz','f_{D,max}=90.0Hz');

Đồ thị:

Trang 13

Bà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:

Code hàm “OFDM_Modulator”

function [y] = OFDM_Modulator(data,NFFT,G)

chnr=length(data);

N=NFFT;

x=[data,zeros(1,NFFT-chnr)];

a=ifft(x);%fft

y=[a(NFFT-G+1:NFFT),a];%chen khoang bao ve

Trang 14

Code hàm “OFDM_Demodulator”

function [y] = OFDM_Demodulator(data,chnr,NFFT,G)

%Chen khoang bao ve

x_remove_gaurd_interval=[data(G+1:NFFT+G)];

x=fft(x_remove_gaurd_interval);

y=x(1:chnr);

end

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

channel_profile=[1.0000,0.8487,0.7663,0.7880,0.6658,0.5644,0.5174,0.0543,0.04 65];

rho=channel_profile;

h=sqrt(rho);

N_P=length(rho);

H=fft([h,zeros(1,NFFT-N_P)]);

NofOFDMSymbol=100; %So ky tu cua OFDM

length_data=(NofOFDMSymbol)*NFFT; %Chieu dai tong cong cua du lieu

%Bits nguon

source_data=randint(length_data,sqrt(M_ary));

%Bit de ma hoa

symbols=bi2de(source_data);

%Dieu che QAM trong dai tan co so

QAM_Symbol=dmodce(symbols,1,1,'qam',M_ary);

%Chuan bi lay mau du lieu

Data_Pattern=[];

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 15

for 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;

%Nhan tin hieu

Receiver_Data=[];%Chuan bi ma tran de nhan ky tu

d=[];%Ky tu giai ma

data_symbol=[];

for i=1:NofOFDMSymbol;

if(N_P>G+1)&(i>1)

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];

end;

snr=snr_min:step:snr_max;

semilogy(snr,ser,'bo');

ylabel('SER');

xlabel('SNR in dB');

Kết quả mô phỏng:

Trang 16

Bà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:

Ngày đăng: 16/11/2012, 16:46

HÌNH ẢNH LIÊN QUAN

Bài số 2: Mô hình kênh Fadding phân tập đa đường theo phương pháp Monte Carlo - Báo cáo thí nghiệm thông tin vô tuyến
i số 2: Mô hình kênh Fadding phân tập đa đường theo phương pháp Monte Carlo (Trang 7)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w