Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
739,61 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THƠNG BÁO CÁO THÍ NGHIỆM MƠN HỌC THƠNG TIN SỐ Sinh viên :Nguyễn Văn Bình MSSV : 20182382 Lớp : Điện tử 04 – K63 Mã lớp thí nghiệm : 706763 Hà Nội, 2021 BÀI SỐ 1: MÔ PHỎNG NHIỄU GAUSS Bài 1.1: Yêu cầu: Viết chương trình Matlab vẽ hàm mật độ xác suất phân phối chuẩn Bài làm: -Code: x=-5:0.1:5; Px=exp(-x.^2/2)/sqrt(2*pi); plot(x,Px); title('Ham phan phoi xac suat Gauss'); xlabel('x'); ylabel('P(x)'); -Đồ thị kết quả: Bài 1.2: Yêu cầu: Vẽ đồ thị hàm phân phối lý thuyết (Bài 1.1) mô đồ thị Bài làm: -Code: len=100000; % Độ dài trình ngẫu nhiên x=randn(1,len); % Tạo trình ngẫu nhiên theo phân phối chuẩn step=.1; k=-5:step:5; % step = 0.1 % Khoảng xét từ -5 den 5, cách 0.1 Px=hist(x,k)/len/step; cho vecto k stem(k,Px); % Tính số vecto khoảng % Vẽ đồ thị rời rạc dùng hàm stem Px_lythuyet=exp(-k.^2/2)/sqrt(2*pi); % Vẽ đồ thị hàm phân bố xác suất lý thuyết hold on; plot(k,Px_lythuyet); thuyết % Vẽ đồ thị hàm phân bố xác suất lý title('Phan bo xac suat Gauss'); xlabel('x'); ylabel('P(x)'); legend('Ly thuyet','Mo phong'); hold off; -Đồ thị kết quả: BÀI SỐ 2: KỸ THUẬT LƯỢNG TỬ HÓA TUYẾN TÍNH Lý thuyết: Hàm lquan function [id qy]= lquan(x,xmin,xmax,nbit) nlevel = 2^nbit; % So muc luong tu hoa q = (xmax-xmin)/nlevel; % Buoc luong tu [id qy] = quantiz(x,xmin+q:q:xmax-q,xmin+q/2:q:xmax-q/2) Bài 2.1: Yêu cầu: Sử dụng hàm lquan để thực lượng tử hóa tín hiệu Code: xs = rand(1,5)*2-1 [xi xq] = lquan(xs,-1,1,3) Số liệu kết quả: xs = 0.8238 -0.1516 0.0984 -0.4236 -0.4741 xi = 2 xq = 0.8750 -0.1250 0.1250 -0.3750 -0.3750 Bài 2.2: Yêu cầu: Vẽ đồ thị tín hiệu xt xqt đồ thị Bài làm: -Code: t=0:0.01:20; 0.01 % Khoang thoi gian xet tu den 20, cach deu xt=sin(randn()+t).*cos(rand()*t); % Tin hieu ngau nhien co bien -1 den [inx xqt] = lquan(xt,-1,1,randi(3)+1); plot(t,xt,'b',t,xqt,'r'); % Tinh xqt % Ve thi xt va xqt grid on; title('Do thi cua tin hieu x(t) va x_q(t)'); xlabel('t'); legend('x(t)','x_q(t)'); hold off; -Đồ thị kết quả: BÀI SỐ 3: TẠP ÂM LƯỢNG TỬ TRONG KỸ THUẬT LƯỢNG TỬ HĨA TUYẾN TÍNH Bài 3: u cầu: - Tính SNqR vẽ đồ thị mối quan hệ SNqR số bit lượng tử hóa nbit lấy giá trị từ đến 10 trường hợp - Điền kết mô vào bảng - Vẽ đồ thị hệ tỷ số SNqR mô lý thuyết với số bit mã hóa n trường hợp đồ thị, có thích Bài làm: -Code: N = 1000; x_uni = 2*rand(1,N)-1; % x_uni phân bố từ -1 den x_sin = sin(linspace(1,5,N)); % Tín hiệu sin nbit = 1:10; % Số bit lượng tử từ đến 10 SNqR_uni = zeros(size(nbit)); SNqR_sin chứa % Khởi tạo mảng SNqR_uni va SNqR_sin = zeros(size(nbit)); tín hiệu sin % SNqR tín hiệu phân bố SNqR_lt = 6.02*nbit; thuyết % Mảng chứa SNqR tính theo lý Ps_uni = sum(x_uni.^2)/N; (3-3) % Cơng suất tín hiệu x theo Ps_sin = sum(x_sin.^2)/N; for i = 1:size(nbit,2) n % size(n,2) trả số cột [indx_uni xq_uni] = lquan(x_uni,-1,1,nbit(i)); hóa tín hiệu x_uni % Lượng tử [indx_sin xq_sin] = lquan(x_sin,-1,1,nbit(i)); hóa tín hiệu x_sin % Lượng tử eq_uni = x_uni - xq_uni; x_uni % Tính sai số lượng tử hóa eq_sin = x_sin - xq_sin; x_sin % Tính sai số lượng tử hóa Pq_uni = sum(eq_uni.^2)/N; lượng tử x_uni % Tính cơng suất tạp âm Pq_sin = sum(eq_sin.^2)/N; lượng tử x_sin % Tính cơng suất tạp âm SNqR_uni(i) = 10*log10(Ps_uni/Pq_uni); x_uni % Tính SNR_db SNqR_sin(i) = 10*log10(Ps_sin/Pq_sin); x_sin % Tính SNR_db end plot(nbit,SNqR_uni,'b-'); mơ % Vẽ đồ thị SNR tín hiệu phân bố hold on; plot(nbit,SNqR_sin,'r '); % Vẽ đồ thị SNR tín hiệu sin mơ plot(nbit,SNqR_lt,'m-.'); lý thuyết % Vẽ đồ thị SNR tín hiệu phân bố title('Do thi SN_qR theo nbit'); xlabel('nbit'); ylabel('SN_qR'); legend('Phan bo deu','Hinh sin','Ly thuyet'); grid on; hold off; -Đồ thị kết quả: -Bảng số liệu kết quả: nbit SNqR_lt 6.02 12.0 00 400 18.06 00 24.0 800 30.1 000 36.1 200 42.14 48.1 54.1 00 600 800 60.2 000 SNqR_uni 5.84 11.8 516 415 17.93 03 23.8 322 29.9 208 35.9 878 42.14 47.8 54.0 43 473 430 59.9 831 SNqR_sin 6.41 12.8 71 834 19.39 81 25.6 702 32.0 389 38.1 620 44.32 50.4 56.4 66 033 544 62.5 722 BÀI SỐ 4: MẬT ĐỔ PHỔ NĂNG LƯỢ NG VÀ HÀM TỰ TƯƠNG QUAN CỦA TÍN HIỆU Bài 4.1: Bài làm: -Code: L = 500; % Chieu dai tin hieu x = randn(1,L); % Tao tin hieu ngau nhien acorr_x = xcorr(x); % Tinh ham tu tuong quan n = (-L+1):(L-1); % Cac mau gia tri plot(n,acorr_x); ngau nhien % Ve thi ham tu tuong quan tin hieu title('Ham tu tuong quan'); xlabel('n'); ylabel('r_x_x'); hold on; x = linspace(-1,1,L); % Tao tin hieu co bien tang dan acorr_x = xcorr(x); % Tinh ham tu tuong quan plot(n,acorr_x,'m '); co bien tang dan % Ve thi ham tu tuong quan tin hieu 10 x = sin(linspace(-10,10,L)); % Tao tin hieu hinh sin acorr_x = xcorr(x); % Tinh ham tu tuong quan plot(n,acorr_x,'r*'); hinh sin % Ve thi ham tu tuong quan tin hieu legend('Ngau nhien','Bien tang dan','Hinh sin') hold off; -Đồ thị kết quả: Bài 4.2: -Code: L = 50; % Do dai tin hieu N = 200; 2*pi % So luong cac tan so roi rac khoang den x = rand(1,L); % Tao tin hieu ngau nhien w = linspace(0,2*pi,N); % Tao N tan so tang dan tu den 2*pi fx = freqz(x,1,w); so roi rac % Bien doi Fourier cua x tai cac tan esd_x = fx.*conj(fx); % Tinh ham mat nang luong acorr_x = xcorr(x); x % Tinh ham tu tuong quan cua tin hieu ft_acorr_x = freqz(acorr_x,1,w).*exp(j*w*(L-1)); % Bien doi Fourier cua ham tu tuong quan cua tin hieu x % Ve thi subplot(2,1,1); semilogy(w/pi,esd_x); title('Mat nang luong'); xlabel('\omega'); ylabel('S(e^j^\omega)') hold on; subplot(2,1,2); semilogy(w/pi,real(ft_acorr_x),'r'); xlabel('\omega'); ylabel('R_x_x(e^j^\omega)'); hold off; -Đồ thị kết quả: BÀI SỐ 5: MÃ ĐƯỜNG DÂY NRZ Bài 5: -Code: len = 100000; % Do dai dong bit mo phong SNR_db = 0:2:8; % Tao vector SNR_db = SNR = 10.^(SNR_db/10); % Doi SNR tu Decibel sang lan bsignal = randi([0 1],1,len); len % Dong bit ngau nhiên dai NRZ_signal = bsignal*2-1; % Bien doi dòng bit sang -1 N0 = 1./SNR; % Cong suat tap am for i=1:length(SNR_db) noise = sqrt(N0(i))*randn(1,len); ti so SNR(i) r_signal = NRZ_signal + noise; NRZ + noise NRZ_decoded = sign(r_signal); thu duoc % Tao tap am noise voi % Tin hieu thu duoc = % Giai ma tin hieu NRZ [n,BER(i)] = symerr(NRZ_decoded,NRZ_signal); suat loi end plot(SNR_db,BER,'bo '); title('Ty le bit loi'); xlabel('SNR_d_B'); ylabel('BER'); % Ve thi % Tinh xac -Đồ thị kết quả: -Code: len = 100000; % Do dai dong bit mo phong SNR_db = 0:2:8; % Tao vector SNR_db = SNR = 10.^(SNR_db/10); % Doi SNR tu Decibel sang lan bsignal = randi([0 1],1,len); len % Dong bit ngau nhiên dai NRZ_signal = bsignal*2-1; % Bien doi dòng bit sang -1 N0 = 1./SNR; % Cong suat tap am for i=1:length(SNR_db) noise = sqrt(N0(i))*randn(1,len); ti so SNR(i) % Tao tap am noise voi r_signal = NRZ_signal + noise; NRZ + noise % Tin hieu thu duoc = NRZ_decoded = sign(r_signal); thu duoc % Giai ma tin hieu NRZ [n,BER(i)] = symerr(NRZ_decoded,NRZ_signal); suat loi % Tinh xac end plot(SNR_db,BER,'bo '); % Ve thi BER Pe = 1/2*(1-erf(sqrt(SNR)/sqrt(2))); thuyet % Xac suat loi theo ly hold on; plot(SNR_db,Pe,'r* '); % Ve thi Pe title('Do thi ty le bit loi theo ly thuyet va mo phong'); xlabel('SNR_d_B'); ylabel('BER'); legend('Mo phong','Ly thuyet'); -Đồ thị kết quả: -Bảng số liệu kết quả: SNR 0dB 2dB 4dB 6dB 8dB Pe lý thuyết 0.1587 0.1040 0.0565 0.0230 0.0060 BER mô 1.1579 0.1031 0.0568 0.0228 0.0059 BÀI SỐ 6: KỸ THUẬT ĐIỀU CHẾ SỐ QPSK Bài 6: -Code: len = 50000; % Do dai dong bit mo phong SNR_db = 0; % SNR co don vi Decibel SNR = 10^(SNR_db/10); % Doi SNR tu Decibel sang lan bsignal = randi([0 1],1,len); dai len % Tao dong bit ngau nhien % Thuc hien dieu che QPSK for i=1:2:len if bsignal(i)==0 & bsignal(i+1)==0 % 00 qpsk_signal((i+1)/2) = exp(j*3*pi/4); elseif bsignal(i)==0 & bsignal(i+1)==1 % 01 qpsk_signal((i+1)/2) = exp(j*5*pi/4); elseif bsignal(i)==1 & bsignal(i+1)==1 % 11 qpsk_signal((i+1)/2) = exp(j*7*pi/4); elseif bsignal(i)==1 & bsignal(i+1)==0 % 10 qpsk_signal((i+1)/2) = exp(j*pi/4); end end Es = std(qpsk_signal)^2; % Nang luong ky hieu N0 = Es/SNR; % Cong suat tap am % Tao nhieu Gauss noise = sqrt(N0/2)*(randn(1,length(qpsk_signal)) +j*randn(1,length(qpsk_signal))); qpsk_awgn = qpsk_signal + noise; % Cho tin hieu dieu che di qua kenh AWGN plot(qpsk_awgn,'.'); hieu co nhieu title('Do thi chom 4-QPSK'); % Ve bieu chom tin xlabel('I'); ylabel('Q'); hold on; plot(qpsk_signal,'r*'); hieu khong nhieu plot(exp(j*[0:0.01:2*pi]),'r '); - Đồ thị kết quả: + Trường hợp SNR=0dB: + Trường hợp SNR=3dB: % Ve bieu chom tin + Trường hợp SNR=6dB: BÀI SỐ 7: XÁC SUẤT LỖI BIT TRONG ĐIỀU CHẾ QPSK Bài 7: -Code: len = 50000; % Do dai dong bit mo phong SNR_db = 0:2:8; % Tao vector SNR_db = SNR = 10.^(SNR_db/10); % Doi SNR tu Decibel sang lan bsignal = randi([0 1],1,len); dai len % Tao dong bit ngau nhien % Thuc hien dieu che QPSK for i=1:2:len if bsignal(i)==0 & bsignal(i+1)==0 % 00 qpsk_signal((i+1)/2) = exp(j*3*pi/4); elseif bsignal(i)==0 & bsignal(i+1)==1 % 01 qpsk_signal((i+1)/2) = exp(j*5*pi/4); elseif bsignal(i)==1 & bsignal(i+1)==1 % 11 qpsk_signal((i+1)/2) = exp(j*7*pi/4); elseif bsignal(i)==1 & bsignal(i+1)==0 % 10 qpsk_signal((i+1)/2) = exp(j*pi/4); end end % Tim BER mo phong for i=1:length(SNR_db) r_signal = awgn(qpsk_signal,SNR_db(i)); % Dieu che QPSK di qua nhieu AWGN for j=1:2:len % Giai dieu che tin hieu QPSK co nhieu if real(r_signal((j+1)/2))>=0 if imag(r_signal((j+1)/2))>=0 r_bsignal(j) = 1; r_bsignal(j+1) = 0; % Goc phan tu I else % Goc phan tu IV r_bsignal(j) = 1; r_bsignal(j+1) = 1; end else if imag(r_signal((j+1)/2))>=0 % Goc phan tu II r_bsignal(j) = 0; r_bsignal(j+1) = 0; else % Goc phan tu III r_bsignal(j) = 0; r_bsignal(j+1) = 1; end end end [n,BER(i)] = biterr(r_bsignal,bsignal); end Pb = 1/2*erfc(1/sqrt(2).*sqrt(SNR)); plot(SNR_db,Pb,'ro '); thuyet % Xac suat loi bit % Ve thi Pb ly title('Do thi ty le bit loi ly thuyet va mo phong'); xlabel('SNR_d_B'); ylabel('BER'); hold on; plot(SNR_db,BER); phong legend('Ly thuyet','Mo phong'); hold off; % Ve thi BER mo -Đồ thị kết quả; -Bảng số liệu kết quả: SNR 0dB 2dB 4dB 6dB 8dB Pb lý thuyết 0.1587 0.1040 0.0565 0.0230 0.0060 BER mô 0.1567 0.1073 0.0556 0.0234 0.0065 BÀI SỐ 8: MÔ PHỎNG ĐIỀU CHẾ M-QAM QUA KÊNH NHIỄU GAUSS Bài 8.1: -Code: n_sym = 50000; % So ky tu dieu che M = [16 32 64]; % So symbol ky hieu SNR_db = 0:25; % Tao vector SNR = - 25 Decibel BER = zeros(length(M),length(SNR_db)); bit for k = 1:size(M,2) % BER de luu ti le loi % size(M,2) la so cot cua M s_stream = randi([0 M(k)-1],1,n_sym); tuong dai n_sym % Tao dong bieu s_mod = qammod(s_stream,M(k),0,'GRAY'); % Dieu che M-QAM for r = 1:size(SNR_db,2) % Vong lap tinh BER s_mod_awgn = awgn(s_mod,SNR_db(r),'measured'); % Tin hieu qua nhieu s_demod = qamdemod(s_mod_awgn,M(k),0,'GRAY'); dieu che M-QAM [num ratio] = biterr(s_stream,s_demod); loi bit BER(k,r) = ratio; % Giai % Tinh ti le % Luu ti le loi bit vao BER end end semilogy(SNR_db,BER(1,:),'bo-'); = 16 % Ve thi BER ung voi M hold on; semilogy(SNR_db,BER(2,:),'rs-'); = 32 % Ve thi BER ung voi M semilogy(SNR_db,BER(3,:),'m*-'); = 64 % Ve thi BER ung voi M grid on; title('Do thi the hien ty le loi bit M-QAM'); xlabel('SNR_d_B'); ylabel('BER'); legend('16-QAM','32-QAM','64-QAM'); hold off; -Đồ thị kết quả: -Bảng số liệu kết quả: SNR= 0dB 5dB 10dB 15dB 20dB 25dB 16-QAM 0.2875 0.1867 0.0782 0.0093 0 64-QAM 0.3305 0.2462 0.1368 0.0423 0.0018 256-QAM 0.3599 0.2846 0.1736 0.0807 0.0151 ...BÀI SỐ 1: MÔ PHỎNG NHIỄU GAUSS Bài 1.1: Yêu cầu: Viết chương trình Matlab vẽ hàm mật độ xác suất phân phối chuẩn Bài làm: -Code: x=-5:0.1:5; Px=exp(-x.^2/2)/sqrt(2*pi); plot(x,Px); title('Ham... Px_lythuyet=exp(-k.^2/2)/sqrt(2*pi); % Vẽ đồ thị hàm phân bố xác suất lý thuyết hold on; plot(k,Px_lythuyet); thuyết % Vẽ đồ thị hàm phân bố xác suất lý title('Phan bo xac suat Gauss'); xlabel('x'); ylabel('P(x)');... bsignal(i+1)==1 % 01 qpsk_signal((i+1)/2) = exp(j*5*pi/4); elseif bsignal(i)==1 & bsignal(i+1)==1 % 11 qpsk_signal((i+1)/2) = exp(j*7*pi/4); elseif bsignal(i)==1 & bsignal(i+1)==0 % 10 qpsk_signal((i+1)/2)