1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Giải thích code Matlab Cơ sở kỹ thuật thông tin vô tuyến PTIT PHẦN 1

27 189 1
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

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

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

Nội dung

GIẢI THÍCH code MATLAB thầy N.V.Đảm

Trang 1

BÀI 1_1:PSD Base_band and Passband(Sim_FWC_01_1)

command window

minh họa cho chương trình

không gian làm việc, giải phóng bộ nhớ hệ thống

f= -200:5:200; Tạo vecto biến f có

giá trị bắt đầu từ

f=-200 đến giá trị f=200 cách nhau 5

Khảo sát hàm mật độ phổ công suất theo tần số

SD_PassBand=(AA/4)*((sinc(

(f+fc)*

Tính mật độ phổ công suất của BPSK

Trang 2

inc((f+

fc)*Tb)).^2 );

Thành phần mật độ phổ công suất của BPSK

hiện tại

Trang 3

neWidth',3);

Tạo bản đồ cành của tần số, PSD của thành phần trong BPSK

Trang 5

BÀI 1_2: Mô phỏng PSD_Modulation(SIM_FWC_01_2)

a, Chương trình:

f = linspace(-2000,2000,1500); Khởi tạo tập giá trị

f có giá trị từ -2000 tới 2000 trong đó gồm 1500 giá trị

Thiết lập tập giá trị input cho quá trình mô phỏng

Tb = 0.002 Khởi tạo giá trị chu

AA = A^2*Tb; Khởi tạo biến AA

sóng mang

1 2 3 4

-2000 -10000 0 1000 2000 2

Trang 6

Eb = P*Tb; Khởi tạo biến Eb

năng lượng bit phát

PSD_BaseBand =

AA*(sinc((f*Tb)).^2);

Thiết lập công thức phổ công suất phát tín hiệu băng gốc dựa vào công thức

lý thuyết

Khảo sát phổ công suất của tín hiệu băng gốc

PSD_BPSK =

(Eb*log2(2))*((sinc((f-fc)*Tb*log2(2))).^2);

Thiết lập hàm tính PSD của từng phương pháp điều chế BPSK theo 1 bên dựa trên lý thuyết

Khảo sát phổ công suất của tín hiệu điều chế BPSK

PSD_QPSK =

(Eb*log2(4))*((sinc((f-fc)*Tb*log2(4))).^2);

Thiết lập hàm tính PSD của từng phương pháp điều chế QPSK theo 1 bên dựa trên lý thuyết

Khảo sát phổ công suất của tín hiệu điều chế QPSK

PSD_8_PSK =

(Eb*log2(8))*((sinc((f-fc)*Tb*log2(8))).^2);

Thiết lập hàm tính PSD của từng phương pháp điều chế 8-PSK theo 1 bên dựa trên lý thuyết

Khảo sát phổ công suất của tín hiệu điều chế 8-PSK

Khảo sát phổ công suất của tín hiệu điều chế BPSK

Trang 7

SF = ((16*Eb)/(pi^2));

Tạo biến SF Chia hàm tính

PSD của MSK thành nhiều thành phần để dễ dàng thiết lập công thức khi viết chương trình MATLAB

Num = (cos(2*pi*(f-fc)*Tb)); Tạo biến Num

Dum = (16*(Tb^2)*(f-fc).^2)-1; Tạo biến Dum

Num_2 = (cos(2*pi*(f+fc)*Tb)); Tạo biến Num_2

có giá trị được tính bằng biểu thức bên phải

Thiết lập giá trị cho phía còn lại của MSK

Dum_2 = (16*(Tb^2)*(f+fc).^2)-1; Tạo biến Dum-2 có

giá trị được tính bằng biểu thức bên phải

PSD_MSK_2 =

(SF/2)*(((Num./Dum).^2) +

((Num_2./Dum_2).^2));

Thiết lập hàm tính PSD của MSK theo

2 phía dựa theo công thức lý thuyết

Biểu diễn mật độ phổ PSD-MSK 2 side trên trục Ox

đồ thị

một ma trận 2x1 và chọn hang thứ 1 để biểu diễn kết quả

plot(f,PSD_BaseBand, 'b' , 'LineWidth' ,3 Biểu diễn kết quả

của các phổ PSD lên đồ thị các điểm

Trang 8

giá trị được nối liền với nhau

Ox, chọn màu sắc chữ, font, size

Oy, chọn màu sắc chữ, font, size

subplot

tại nguyên subplot

đó

THAY ĐỔI THAM SỐ

SNRindB = 0:1:9; % signal to noise ratio dB

SNR = 10.^(SNRindB/10);

Eb = 1; % energy per bit

sgma = Eb./sqrt(2*SNR); % sigam, standard deviation of noise is

M« pháng TÝnh to¸n

Trang 9

SNRindB = 0:1:9; % signal to noise ratio dB

SNR = 10.^(SNRindB/10);

Eb = 2; % energy per bit

sgma = Eb./sqrt(2*SNR); % sigam, standard deviation of noise is

% noisepower = sgma.^2

NumBits = 10^3; % Number of Bits

Bài 2:

- Giải thích chương trình :

command

Khởi tạo môi trường chạy chương trình

phần khỏi workspace, giải phóng bộ nhớ

Khởi tạo môi trường chạy chương trình

hiển thị kết quả mô phỏng hiện tại

Chuẩn bị môi trường để chạy chương trình

SNRindB = 0:1:9; Khởi tạo một vecto

giá trị từ 0-9 cách nhau 1 đơn vị

Sinh tỉ lệ tín hiệu trên nhiễu

ở đơn vị dB

SNR=10.^(SNRindB/10); Khởi tạo biến SNR

có giá trị bằng kết quả của biểu thức bên phải

Xác định phương sai

Trang 10

theo_Antipodal_err_prb = 0.5

*erfc(sqrt(SNR));

Tính xác suất lỗi bit cho tín hiệu đối cực theo công thức

lý thuyết

h = waitbar(0, 'Please

Hiển thị cửa sổ hiện % chương trình hoàn thành

Hỗ trợ quá trình

mô phỏng

làm mốc để xác định thời gian chạy

mô phỏng

Bắt đầu khảo sát thời gian chạy mô phỏng

for j=1:length(SNR) Khởi tạo vòng lặp Lặp n lần với n

là độ dài của vecto SNR

gian chạy từ hiện tại

Tính toán thời gian chạy chương trình

waitbar(j/length(SNRindB)); Tính toán của sổ

hiển thị chương trình đã chạy được bao nhiêu %

Tạo nguồn bit ngẫu nhiên

Bắt đầu tạo nguồn nhị phân

giá trị random từ

0-1

if (temp<0.5), Nếu giá trị temp <

0.5

Trang 11

dsource(i) =1; Đưa vào mảng tại

index i giá trị 1

Nếu temp < ½ nguồn bit ra bằng 1

X = sgma(j)*randn(1); Khởi tạo Biến X Sinh biến ngẫu

nhiên phân bố gauss (nhiễu)

Y= -sqrt(Eb) + X; Khởi tạo Biến Y Đưa ra tín hiệu

sau khi đi qua kênh AWGN với mức năng lượng tương ứng với bit 1 là -sqrt(Eb)

X = sgma(j)*randn(1); Khởi tạo Biến X Sinh biến ngẫu

nhiên phân bố gauss (nhiễu)

Y = sqrt(Eb) + X; Khởi tạo Biến Y Đưa ra tín hiệu

sau khi đi qua kênh AWGN với mức năng lượng tương ứng với bit 0 là +sqrt(Eb)

decis vị trí i giá trị

0

Sau khi tín hiệu

đi qua bộ quyết định cho ra bit 0

Trang 12

smld_err_prb(j)= numoferr/NumBits; Đưa giá trị vào

mảng smld_er_prb tại vị trí j

Xác định xác suất lỗi theo tính toán thực tế

tElapsed = toc(tStart); Ngắt chương trình

đếm thời gian chạy

Xác định thời gian chạy mô phỏng

SimTime = max(tElapsed) Đưa ra thời gian

chạy lớn nhất trong array

trạng thái chjay chương trình

hiển thị kết quả

Tạo space vẽ đồ thị kết quả set(h1, ‘Name’,

Vẽ đồ thị so sánh giữa BER theo tính toán

mô phỏng và lý thuyết

set(G, 'LineWidth' ,[1.5]); Set độ dày của

đường đồ thị

Xlabel()

ylabel()

Gán nhãn cho các trụng x,y

Trang 13

minSNRindB và maxSNRindB, trục

Mô phỏng BER theo trực giao

và đối cực theo công thức tính toán lý thuyết

set(G, 'LineWidth' ,[1.5]); Set độ dày của

ylabel( 'X¸c suÊt lçi

Trang 14

set(LT, 'FontName' , '.VnTime' , 'FontSi

minSNRindB và maxSNRindB, trục

Trang 15

- Nhận xét:

o Ở đồ thị BER trong kênh BPSK theo tính toán mô phỏng và theo công

thức lý thuyết đối cực(đồ thị phía bên phải) xác suất lỗi gần tương đương nhau tại mọi SNR

o Ở đồ thị so sánh BER hệ thống BPSK trong kênh AWGN ở tín hiệu

đối cực và trực giao thấy xác suất lỗi ơ cùng một tỉ lệ SNR xác suất lỗi của tín hiệu trực giao lớn hơn khá nhiều

- Mô phỏng khi tăng số bit vào lên 10^8

Bài 3_1 Sim_FWC_03_01_COV_Encoder_Decoder.m

clc; clear; close all ; Clear tất cả các

cửa sổ, thành phần trong command window

Khởi tạo môi trường chạy

mô phỏng

1

Nhập giá trị k cho bộ mã hóa (số bit dịch vào bộ lập mã)

G = [1 1 1 1 0 0 1;1 0 1 1 0 1 0]; Khởi tạo ma

trận G

Nhập ma trận

G cho bộ mã hóa

InfoBitlen

Trang 16

iput= randi(1,InfoBitLen,2); Random chuỗi

Mã hóa xoắn chuỗi bit theo

lý thuyết

MF1=round(length(Encoder_output)/d_Ha

ming);

Tính giá trị MF1

error_index=MF1:MF1/2:length(Encoder_o

utput);

Sinh vecto lỗi chiều dài bằng chiều dài bit sau mã hóa

error_vector(error_index)= 1; Tạo Vector

error tại error index có giá trị

1

Tạo vecto lỗi chiều dài bằng vecto tín hiệu sau khi mã hóa tại những bị trí error index

có giá trị bằng 1

channel_out=xor(Encoder_output,error_vec

tor);

Thực hiện phép toán logic XOR giữa encode output

và vecto lỗi

Đầu ra của kênh truyền

decoder_output=FWC_COV_Dencoder(G,k

0,channel_out);

Sử dụng hàm fwc_cov dencoder để giải mã

Giải mã xoắn

disp( '==========Cac ket

Hiển thị các kết quả

Trang 17

và iput

Tính tổng sự sai khác bit giữa bit vào

và bit ra sau khi giải mã

bit

disp( 'd_Haming/length(channel_out):t_corr

Hiển thị giá trị kết quả

Hiển thị kết quả

t_corr = d_Haming/length(channel_out) Tính giá trị t

corr

Giá trị sai khác giữa bit thông tin và bit ra sau khi

có vector lỗi tác động

Sim_FWC_03_02_BPSK_AWGN_ChannelCode.m

- Giải thích câu lệnh chương trình

clc;

clear all;

close all;

Clear cửa sổ lệnh Command

window và tắt các cửa sổ mô phrong khác

Chuẩn bị môi trường chạy mô phỏng

SNRindB = 0:1:9; Tạo vecto

SNRindB từ 0-9 cách nhau 1

Sinh giá trị SNR

SNR = 10.^(SNRindB/10); Tính giá trị SNR Chuyển đổi

giá trị dB sang SNR

Trang 18

mode_Sim = 2; set modeSim = 2 Xác định chế

Cài đặt biến cần trong tiến hành mô phrong

Cài đặt biến cần trong tiến hành mô phrong

Cài đặt biến cần trong tiến hành mô phrong

theo_Antipodal_err_prb = 0.5

*erfc(sqrt(SNR));

Tính giá trị theo Antodopal err prb

Tính tỉ lệ lỗi bit theo trực giao tính theo công thức lý thuyết

Trang 19

h = waitbar(0, 'Please wait ' ); Khởi động waitbar

biểu diễn tiến trình chạu chương trình

waitbar(j/length(SNRindB)); Chia waitbar ra

thành các phần khi chạy mô phỏng hết 1 tiến trình sẽ dịch một khaorng nhất định

Tạo nguồn bit ngẫu nhiên

if mode_Sim ==2

dsource =

FWC_COV_Encoder(G,k0,dsource_1);

Xác định mode_sim

Nếu modeSim ==

2 dsource sẽ được mã hóa xoắn

if dsource(i)==1,

X = sgma(j)*randn(1);

Y = -sqrt(Eb) + X;

Nếu phần tử thứ I của vecto dsource

== 1 thực hiện gán các biến dưới đây

Nếu dsource

==1 tính giá trị X là biến ngẫu nhiên

Trang 20

phân bố gauss và giá trị Y là tín hiệu sau khi

đi qua kênh truyền

Nếu dsource khác 1 tính giá trị X là biến ngẫu nhiên phân

bố gauss và giá trị Y là tín hiệu sau khi đi qua kênh truyền

if (Y<0)

decis(i) = 1;

Nếu Y < 0 Nếu giá trị Y

< 0 quyết định bit thứ i nhận được là

Nếu mode sim =2 thực hiện giải mã xoắn với chuỗi bit dcis nhận được

và dsource 1

Tính số lỗi khi giữa chuỗi bit truyền và nhận

Trang 21

smld_err_prb(j) =

numoferr_tot/NumBits;

Tính giá trị và đưa vào một mảng smld er prb

Tính tỉ lệ lỗi bit

Sim_Elapsed = toc(Start_sim); Dừng thời gian

mô phỏng

SimTime = max(Sim_Elapsed); Gán SimTime

bằng giá trị max của Sim_elapsed

Xác định mode sim để lưu kết quả

Xác định mode sim và codding type

để lưu kết quả

Xác định mode sim và codding type

để lưu kết quả

Xác định mode sim và codding type

để lưu kết quả

sổ hiển thị kết quả

mô phỏng

Hiển thị kết quả

set(h1, 'Name' , ' Programmed by Nguyen

Đặt tên cho cửa sổ vừa mở

Hiển thị kết quả

G = semilogy(SNRindB,smld_err_prb,

'-vr' ,SNRindB,theo_Antipodal_err_prb,

Vẽ đồ thị dạng semilogarithmic với giá trị xét theo lượng lỗi bit theo tính toán và lý thuyết

Hiển thị kết quả

Trang 22

set(G, 'LineWidth' ,1.5); Set giá trị của

đường đồ thị

Hiển thị kết quả

Tạo hàm

mã hóa để gọi ở các file khác

if rem(length(input),k0) > 0 Kiểm tra xem có cầm

bit 0 thêm là cần thiết

ma trận g

error( 'Error, g is not of the right size.' ); Đưa ra lỗi

Trang 26

C Kết quả mô phỏng trường hợp 2:

- Coding_type == 1, mode_sim = 2

Trang 27

- Coding_type = 2, mode_sim = 2

- Nhận xét:

o Khi ta thực hiện thêm mã hóa kênh vào kênh hệ thống BPSK có thể

thấy rõ cùng một tỉ số SNR xác suất lỗi Pe của hệ thống có sử dụng

mã hóa kênh sẽ thấp hơn nhiều với không sử dụng mã hóa kênh

o Ở trường hợp Coding_type = 2 khi ta tăng đa thức tạo mã G và vẫn

giữ nguyên k0 => chất lượng việc mã hóa nguồn không tốt

o Khi ta tăng sô lượng bit đầu vào k0 trong một lần và tăng bậc và số

lượng đa thức tạo mã G => tỉ lệ SNR tăng

o Luồng bit ra có tốc độ cao => tăng độ rộng băng tần => giảm hiệu quả

sử dụng phổ tần

Ngày đăng: 16/09/2021, 17:20

TỪ KHÓA LIÊN QUAN

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

w