1. Trang chủ
  2. » Tất cả

MA 49 đỗ văn thịnh B17DCVt344

23 10 0

Đ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

Định dạng
Số trang 23
Dung lượng 1,25 MB

Nội dung

Trần Xuân Quỳnh HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA VIỄN THÔNG BÀI TIỂU LUẬN Đa truy nhập vô tuyến Giảng viên Nguyễn Viết Đảm Trực quan hóa nguyên lý hoạt đôṇ g hệ thống truyền dẫn OFDM trên cơ sở thực hiện FFTFFT và chènkhử CP

Trần Xn Quỳnh HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA VIỄN THÔNG BÀI TIỂU LUẬN Đa truy nhập vô tuyến Giảng viên : Nguyễn Viết Đảm Sinh viên thực : Đỗ Quốc Thịnh Mã sinh viên : B17DCVT144 Nhóm:06 Hà Nơi, tháng 11/2021 Sim_MA06: Trực quan hóa ngun lý hoạt đơṇ g hệ thống truyền dẫn OFDM sở thực FFT/FFT chèn/khử CP Mục tiêu: + Làm sáng q trình xây dựng mơ hình nguyên lý hoạt động hệ thống truyền dẫn OFDM sở xử lý IFFT/FFT chèn/khử CP + Trực quan hóa nguyên lý hoạt động sở mơ tả mơ tín hiệu điển hình Matlab MA_06_Basis_OFDM_System_Modeling_2.m stt clc; Câu lệnh Giải thích -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống - Đóng hết đè mục Khai báo gia srij tham số clear all; close all; FFTsize CPsize data = 0.5*(sign(rand (1,FFTsize)-0.5)+1); data = 2*data-1 Tạo cho bit kích thước FFT: BPSK data_IFFT = ifft(data) data_IFFT_CP = [data_IFFT(FFTsizeCPsize+1:FFTsize) data_IFFT]; data_CPR = data_IFFT_CP(CPsize+1:FFTsize +CPsize); data_FFT = fft(data_CPR) data_des1 = zeros(1, length(data)); for i = 1:length(data_FFT) if data_FFT(i) >= data_des1(i) = 1; else data_des1(i) = -1; end end error_vector1 = data~=data_des1; bước 1: Quy trình IFFT bước 2: thêm CP bước 3: loại bỏ CP = 8; = 2; num_error1 sum(error_vector1); BER1 num_error1/FFTsize data_des2 = sign(real(data_FFT)); bước 4: Quy trình IFFT định xác định lỗi để xác định lỗi (so sánh) Tổng số lỗi = = error_vector2 = data~=data_des2; 10 num_error2 sum(error_vector2); BER2 num_error2/FFTsize = = 11 BER_op = sum(sign(real(data_FFT)) ~=data)/FFTsize giải pháp tối ưu tối ưu MA_06_CP_insert.m stt Câu lệnh function [CP_insert] = MA_06_CP_insert(N,V) O_I O_V_N_V I_V = zeros(V,N); = zeros(V,N-V); = eye(V); for i=1:V O_I(i,:) = [O_V_N_V(i,:) I_V(i,:)] ; end I_N CP_insert = [O_I;I_N]; = eye(N); Giải thích Khởi tạo function MA_06_CP_insert với tham số đầu vào V,N; -tao ma trận - tao ma trận đơn vị Tạo ma trận đơn vị MA_06_CP_Remove.m Stt Câu lệnh CP_Remve O_V I_N function [CP_Remve] = MA_06_CP_Remove(N,V) = zeros(N,N+V); = zeros(N,V); = eye(N); Giải thích Khởi tạo function MA_06_CP_ Remove với tham số đầu vào V,N; -tao ma trận - tao ma trận đơn vị for i =1:N CP_Remve(i,:) = [O_V(i,:) I_N(i,:)]; end MA_06_FFT_matrix.m Stt Câu lệnh function [W] = MA_06_FFT_matrix(N) W = zeros(N); for m =1:N for i= 1:N W(m,i) = exp(j*2*pi/N*(m-1)*(i-1)); end end W = 1/sqrt(N)*W; Giải thích Khởi tạo function MA_06_CP_ matrix với tham số đầu vào N; -tạo ma trận MA_06_IFFT_FFT_AWGN.m stt Câu lênh clc; clear all; close all; FFTsize = 1000; CPsize = 25; snr_in_dB = 10; noisePower = 10^(-snr_in_dB/10); data = 0.5*(sign(rand(1,FFTsize) -0.5)+1); data = 2*data-1; Giải thích -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống - Đóng hết đè mục Các thơng số data_IFFT ifft(data); data_IFFT_CP = [data_IFFT(FFTsizeCPsize+1:FFTsize) data_IFFT]; tmp = randn(1,FFTsize+CPsize); RV_Gausian = tmp*noisePower; RxSymbols = = data_IFFT_CP + RV_Gausian; data_CPR = RxSymbols(CPsize+1:FFTsize +CPsize); data_FFT = fft(data_CPR); data_des1 = zeros(1, length(data)); for i = 1:length(data_FFT) if data_FFT(i) >= data_des1(i) = 1; else data_des1(i) = 1; end end error_vector1 = data~=data_des1; num_error1 sum(error_vector1); BER1 num_error1/FFTsize = = data_des2 = sign(real(data_FFT)); error_vector2 data~=data_des2; num_error2 sum(error_vector2); BER2 num_error2/FFTsize = = = BER_op = sum(sign(real(data_FFT)) ~=data)/FFTsize MA_06_IFFT_FFT_matrix.m stt Câu lệnh clc clear; display('SOLUTION 1: belong to Generation OF MATRIX'); W_H W_H=1/2*W_H = [1 1 1; exp(j*2*pi/4) exp(j*4*pi/4) exp(j*6*pi/4); exp(j*4*pi/4) exp(j*8*pi/4) exp(j*12*pi/4); exp(j*6*pi/4) exp(j*12*pi/4) exp(j*2*3*3*pi/4)]; Giải thích -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống W W=1/2*W test = abs(W_H*W); display('tich ma tran W_H*W'); disp(test); display(' so lieu vao ma tran IFFT (W_H)'); x11 = 1:4 display(' dau IFFT sau nhan ma tran W_H (W_H*x11)'); x12 = W_H*x11' display(' dau FFT sau nhan ma tran W'); x13 = W*x12 display(' so sanh I/O cua IFFT & FFT o dang ma tran'); test2 = x11~=round(x13') = [1 1 1; exp(-j*2*pi/4) exp(-j*4*pi/4) exp(j*6*pi/4); exp(-j*4*pi/4) exp(-j*8*pi/4) exp(j*12*pi/4); exp(-j*6*pi/4) exp(-j*12*pi/4) exp(j*2*3*3*pi/4)]; display('SOLUTION 2: belong to Generation OF MATRIX'); clc; -Xóa cửa sổ lệnh N= 4; W_H_2 = zeros(N); N=4 Tạo ma trận for i =1:N for m= 1:N W_H_2(i,m) = exp(j*2*pi/N*(i-1)*(m-1)); end end W_H_2 = 1/sqrt(N)*W_H_2 W_H W_H_2~=W_H W_2 = zeros(N); for m =1:N for i= 1:N W_2(m,i) = exp(j*2*pi/N*(m-1)*(i-1)); end end W_2 = 1/sqrt(N)*W_2 W W_2~=W MA_06_IFFT_matrix.m stt Câu lệnh function [W_H] = MA_06_IFFT_matrix(N) W_H = zeros(N); for i =1:N for m= 1:N W_H(i,m) = exp(j*2*pi/N*(i-1)*(m-1)); end end W_H = 1/sqrt(N)*W_H; Giải thích Khởi tạo function MA_ MA_06_IFFT_matrix với tham số đầu vào N; Tạo ma trận MA_06_OFDM_Principle.m stt Câu lệnh clc; clear; N V = 4; = 2; X1 = 1:N; [W_H] = MA_06_IFFT_matrix(N); [W] = MA_06_FFT_matrix(N); [CP_insert] = MA_06_CP_insert(N,V); [CP_Remve] = MA_06_CP_Remove(N,V); Mode = 1; if Mode == else X1 = 0.5*(sign(rand(1,N)-0.5)+1); Giải thích -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống Với N=4, V=2 Tao ma trận khác chế đô 1̣ : -nếu Chế đô ̣= 1; -nếu khác X1 = 0.5*(sign(rand(1,N)0.5)+1); end X2 = X1'; X3 = W_H*X2; X4 = X3'; X5 = X4'; X6 = CP_insert*X5; X7 = X6'; X8 = X7'; X9 = CP_Remve*X8; X10 = X9'; X11 = X10'; X12 = W*X11; X13 = X12' Test_IFFT_FFT_matrix = abs(W_H*W); Test_CP_inser_remove CP_Remve*CP_insert; Kiểm tra IFFT / FFT; = data_IFFT = sqrt(N)*ifft(X1,N); Quy trình IFFT data_IFFT_CP = [data_IFFT(NV+1:N) data_IFFT]; thêm CP data_CPR = data_IFFT_CP(V+1:N+V); loại bỏ CP data_FFT = (1/sqrt(N))*fft(data_CPR,N) Quy trình IFFT Sim_MA_06_PSD_OFDM.m Stt Câu lệnh clc; clear; close all; Giải thích -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống - Đóng hết đè mục deta_f = 20; BW_channel = 200; num_subcarrier = round(BW_channel/deta_f); T_ofdm = 1/deta_f; R_ofdm = 1/T_ofdm; Tb = T_ofdm/num_subcarrier; Rb = 1/Tb; A = 10; A1 = A^2*Tb; AA = A^2*T_ofdm; f_i = deta_f:deta_f:BW_channel+deta_f; f = Rb:BW_channel+4*deta_f; fc = 3*max(f); f2 = f:1:(fc+BW_channel+4*deta_f); PSD_ofdm_in = A1*(sinc((f*Tb)).^2); PSD_RF_SC = A1*(sinc(((f2-fc)*Tb)).^2); PSD_OFDM = zeros(num_subcarrier ,max(size(f))); PSD_OFDM_RF = zeros(num_subcarrier, max(size(f2))); for k = 1:num_subcarrier PSD_OFDM(k,:) = AA*(sinc((f-f_i(k))*T_ofdm)) ^2; PSD_OFDM_RF(k,:) = AA*(sinc((f2-f_i(k)fc)*T_ofdm)).^2; end figure subplot plot hold on xlabel - Không gian sóng mang - Băng thơng kênh - Số lượng sóng mang vịng kênh - thời gian -các thông số dầu vào - PSD đầu vào Khối điều chế OFFDM - PSD đầu Khối điều chế OFFDM - PSD đầu Khối điều chế OFFDM - bảng hiển thị kết - Đặt title, font, color cho trục x y -Vẽ thêm đồ thị khác vào cửa sổ figure ylabel grid on; set - Đặt thích cho trường hợp hiển thị figure Sim_MA07: Mơ hình hóa mơ hiệu BER cho hệ thống truyền dẫn BPSK-OFDM dùng mã kênh môi trường kênh AWGN Mục tiêu - Mơ hình hóa trực quan hóa nguyên lý hoạt động hệ thống BPSK-OFDM dùng mã kênh môi trường kênh AWGN - Matlab hóa mơ hệ thống BPSK-OFDM dùng mã kênh môi trường kênh AWGN để: làm sáng tỏ nguyên lý hoạt động phân tích đánh giá hiệu Presentation_Sim_MA_07.m stt Câu lệnh clc; clear all; close all; load MA_07_BPSK_OFDM_NoCC_AWGN.mat; SER_noChannelCoding = SER; SNR_1 = SNR; clear SER; load MA_07_BPSK_OFDM_CC_AWGN.mat; SER_ChannelCoding = SER; SNR_2 = SNR; clear SER; figure(1) G = semilogy(SNR_1,SER_noChannelCoding, '-ob'); set(G,'LineWidth',1.5); hold on; Giải thích -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống - Đóng hết đè mục Mở cửa sổ hình mớ AX = gca; set(AX,'fontsize',14); X = xlabel('SNR (dB)'); set(X,'fontname','.Vntime', 'fontsize',14,'color','b'); Y = ylabel('SER'); set(Y,'fontname','.Vntime', 'fontsize',14,'color','b'); title(['M« pháng SER hƯ thèng - Đặt thích cho trường hợp hiển thị figure - Thêm nhãn text vào trục ox - Thêm nhãn text vào trục oy - Thêm text vào góc th BPSK/OFDM kênh AWGN có không mà hóa kênh; Số bit mô = ', num2str(NumBits),' bits '],'FontName','.VnTime','color', 'b','FontSize',14); L=legend('OFDM - kênh AWGN không mà hóa kªnh','OFDM - kªnh AWGN cã m· hãa kªnh'); set(L,'fontname','.Vntime' ,'fontsize',13); Bật đường lưới lên grid on; Sim_MA_07_BPSK_OFDM_AWGN_ChannelCode.m St Câu lệnh t clc; Giải thích clear all; close all; SNR FFTsize CPsize numRun NumBits FFTsize*numRun; = = = = = mode_Sim Codding_Type = = 1; [0:1:9]; 512; 20; 10^3; -Xóa cửa sổ lệnh -Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống - Đóng hết đè mục -Lấy 10 điểm xét SNR đơn vị dB từ đến Mỗi điểm cách -Chế độ mô =2 -Mã hóa loại if mode_Sim ==2 if Codding_Type == k0 = 1; G = [1 1;1 1]; elseif Codding_Type == k0 = 1; G = [1 1 0 1;1 1 0]; else k0 = 2; G = [0 1 0 1;0 0 0 0 1;1 0 0 0 1]; end end -Nếu chế độ mô = mã hóa loại ta có: k0 = 1; G = [1 1; 1]; -Nếu chế độ mơ = mã hóa loại ta có: k0 = 1; G = [1 1 0 1; 1 1 0]; Nếu chế độ mô = mã hóa loại khác ta có: k0 = 2; for n = 1:length(SNR), errCount = 0; Cho biến j chạy giá trị từ tới 10 (length(SNR)) for k = 1:numRun numSymbols = FFTsize; data = 0.5*(sign(rand(1,numSymbols)0.5)+1); data2 = 2*data-1; + Hàm sign: dùng để lấy dấu (lấy -1 1) + Hàm rand(1,numSymbols): Lấy 1000 giá trị ngẫu nhiên khoảng từ đến if mode_Sim ==2 inputSymbols = FWC_COV_Encoder(G,k0,data); Nếu chế độ mơ = inputSymbols tính hàm function: inputSymbols = 2*inputSymbols-1; FWC_COV_Encoder(G,k0,dat a); else Nếu chế độ mơ loại khác inputSymbols = = 2*data-1; inputSymbols G = [0 1 0 1;0 0 0 0 1;1 0 0 0 1]; 2*data-1; ... function MA_ MA_ 06_IFFT_matrix với tham số đầu vào N; Tạo ma trận MA_ 06_OFDM_Principle.m stt Câu lệnh clc; clear; N V = 4; = 2; X1 = 1:N; [W_H] = MA_ 06_IFFT_matrix(N); [W] = MA_ 06_FFT_matrix(N);... function MA_ 06_CP_ Remove với tham số đầu vào V,N; -tao ma trận - tao ma trận đơn vị for i =1:N CP_Remve(i,:) = [O_V(i,:) I_N(i,:)]; end MA_ 06_FFT_matrix.m Stt Câu lệnh function [W] = MA_ 06_FFT_matrix(N)... tạo function MA_ 06_CP_insert với tham số đầu vào V,N; -tao ma trận - tao ma trận đơn vị Tạo ma trận đơn vị MA_ 06_CP_Remove.m Stt Câu lệnh CP_Remve O_V I_N function [CP_Remve] = MA_ 06_CP_Remove(N,V)

Ngày đăng: 15/11/2022, 11:06

w