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

Trực quan hóa nguyên lý hoạt động hệ thống truyền dẫn ofdm trên cơ sở thực hiện fft fft và chèn khử cp

20 1 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 20
Dung lượng 796,27 KB

Nội dung

1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÁO CÁO HỌC TẬP ĐA TRUY NHẬP VÔ TUYẾN Sim MA06 và Sim MA07 Giảng Viên Nguyễn Viết Đảm Hà Nội 2 Sim MA06 Trực quan hóa nguyên lý hoạt động hệ thống truyền dẫn[.]

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÁO CÁO HỌC TẬP ĐA TRUY NHẬP VÔ TUYẾN Sim_MA06 Sim_MA07 Giảng Viên: Nguyễn Viết Đảm Hà1Nội Sim_MA06: Trực quan hóa nguyên lý hoạt động hệ thống truyền dẫn OFDM sở thực FFT/FFT chèn/khử CP Phần matlab: MA_06_Basis_OFDM_System_Modeling_2.m Câulệnh stt Giải thích clc; clear all; close all; FFTsize = 8; CPsize = 2; data= 0.5*(sign(rand (1,FFTsize)-0.5)+1); data= 2*data-1 data_IFFT= ifft(data) data_IFFT_CP = [data_IFFT(FFTsize-CPsize+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; num_error1 sum(error_vector1); BER1 num_error1/FFTsize BER_op = sum(sign(real(data_FFT)) ~=data)/FFTsize 11 -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ố Tạo cho bit kích thước FFT: BPSK bước 1: Quy trình IFFT bước 2: thêm CP bước 3: loại bỏ CP bước 4: Quy trình IFFT Quyết định xác định lỗi để xác định lỗi (so sánh) Tổng số lỗi 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 = zeros(V,N); O_V_N_V = zeros(V,N-V); I_V = eye(V); for i=1:V O_I(i,:) = [O_V_N_V(i,:) I_V(i,:)] ; end I_N = eye(N); CP_insert = [O_I;I_N]; Giải thích Khởi tạo function MA_06_CP_insertvới tham số đầu vào V,N; -tao ma trận - tao ma trận đơn vị Tạo vòng lặp Tạo ma trận đơn vị MA_06_CP_Remove.m Stt Câu lệnh 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ị function [CP_Remve] = MA_06_CP_Remove(N, V) CP_Remve = zeros(N,N+V); O_V = zeros(N,V); I_N = eye(N); for i =1:N CP_Remve(i,:) = [O_V(i,:) I_N(i,:)]; end Tạo vòng lặp 10 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 Giải thích Khởi tạo function MA_06_CP_ matrixvới tham số đầu vào N; -tạo ma trận Tạo vòng lăpj 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_matrixvới tham số đầu vào N; Tạo ma trận Taọ vòng lặp 11 MA_06_OFDM_Principle.m stt Câu lệnh N = 4; V = 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 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 clc; clear; chế độ 1: -nếu Chế độ = 1; -nếu khác X1 Mode == = 0.5*(sign(rand(1,N)- 0.5)+1); else X1 = 0.5*(sign(rand(1,N)-0.5)+1); end Test_IFFT_FFT_matrix abs(W_H*W); Test_CP_inser_remove = = CP_Remve*CP_insert; data_IFFT Kiểm tra IFFT / FFT; Quy trình IFFT = sqrt(N)*ifft(X1,N); data_IFFT_CP = [data_IFFT(NV+1:N) data_IFFT]; data_CPR = data_IFFT_CP(V+1:N+V); data_FFT = (1/sqrt(N))*fft(data_CPR,N) Test_IFFT_FFT_matrix abs(W_H*W); Test_CP_inser_remove thêm CP loại bỏ CP Quy trình IFFT = = CP_Remve*CP_insert; 12 Kiểm tra IFFT / FFT; Sim_MA_06_PSD_OFDM.m Stt Câu lệnh 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 ylabel grid on; set 13 Giải thích - 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 Đặ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 14 15 16 17 Phần mô Sim_MA_07_BPSK_OFDM_AWGN_ChannelCode.m St t Câu lệnh clc; clear all; close all; SNR = [0:1:9]; FFTsize = 512; CPsize = 20; numRun = 10^3; NumBits = FFTsize*numRun; mode_Sim = Codding_Type = 1; 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 for n = 1:length(SNR), errCount = 0; for k = 1:numRun numSymbols = FFTsize; data = 0.5*(sign(rand(1,numSymbols)- 0.5)+1); data2 = 2*data-1; if mode_Sim ==2inputSymbols = FWC_COV_Encoder(G,k0,data); inputSymbols = 2*inputSymbols-1; else inputSymbols 18 = 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 -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 -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; G = [0 1 0 1;0 0 0 0 1;1 0 0 0 1]; Cho biến j chạy giá trị từ tới 10 (length(SNR)) + 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 Nếu chế độ mơ = inputSymbolsđược tính hàm function: FWC_COV_Encoder(G,k0,dat a); Nếu chế độ mơ loại khác inputSymbols = 2*data-1; 10 11 12 13 14 TxSamples = sqrt(length(inputSymbols))*if ft (inputSymbols,length(inputSym bols)); numSymbols = length(inputSymbols); Tx_ofdm = [TxSamples(numSymbolsCPsize+1:numSymbols) TxSamples]; numSymbols_2 = length(inputSymbols); tmp = randn(1,numSymbols_2+CPsize); noisePower = 10^(-SNR(n)/10); RxSymbols = Tx_ofdm + sqrt(noisePower)*tmp; EstSymbols_1 = RxSymbols(CPsize+1:numSymbols _2 +CPsize); Y = fft(EstSymbols_1, length(EstSymbols_1)); 17 18 19 20 Chèn CP Kênh% AWGN Loại bỏ CP IFT (Giải điều chế OFDM) Phát định 15 16 -FFT (Điều chế OFDM) EstSymbols_1 = Y; EstSymbols_1 = sign(real(EstSymbols_1)); for i = 1:length(EstSymbols_1) if EstSymbols_1(i)>0 Decis(i)= 1; else Decis(i)= 0; end end if mode_Sim==2 EstSymbols = FWC_COV_Dencoder(G,k0,Decis); else EstSymbols = EstSymbols_1; if mode_Sim==2 I = find((data-EstSymbols) == 0); else I = find((data2-EstSymbols) == 0); end errCount = errCount + (FFTsizelength(I)); 19 end Cho biến I chạy giá trị từ tới 10 (length(EstSymbols_1)) -nếu EstSymbols_1(i)>0 Decis(i)= 1; - ngược lại Decis(i)= 0; Nếu chế độ mô = EstSymbols = FWC_COV_Dencoder(G,k0,De cis); Nếu chế độ mơ loại khác EstSymbols = EstSymbols_1; Nếu chế độ mơ = I = find((data-EstSymbols) == 0); Nếu chế độ mơ loại khác I = find((data2-EstSymbols) == 0); Lỗi đối chiếu 21 SER(n,:) = errCount / (FFTsize*numRun); figure subplot plot hold on xlabel ylabel grid on; set 20 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 Đặt thích cho trường hợp hiển thị figure ...Sim_MA06: Trực quan hóa nguyên lý hoạt động hệ thống truyền dẫn OFDM sở thực FFT/ FFT chèn/ khử CP Phần matlab: MA_06_Basis _OFDM_ System_Modeling_2.m Câulệnh stt Giải thích clc; clear all; close all; FFTsize... 8; CPsize = 2; data= 0.5*(sign(rand (1,FFTsize)-0.5)+1); data= 2*data-1 data_IFFT= ifft(data) data_IFFT _CP = [data_IFFT(FFTsize-CPsize+1:FFTsize) data_IFFT]; data_CPR= data_IFFT _CP( CPsize+1:FFTsize... Test_IFFT _FFT_ matrix abs(W_H*W); Test _CP_ inser_remove = = CP_ Remve *CP_ insert; data_IFFT Kiểm tra IFFT / FFT; Quy trình IFFT = sqrt(N)*ifft(X1,N); data_IFFT _CP = [data_IFFT(NV+1:N) data_IFFT];

Ngày đăng: 25/02/2023, 10:56

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN