1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo THÍ NGHIỆM THÔNG TIN số ( ET3250) viết chương trình matlab vẽ hàm mật độ xác suất của phân phối chuẩn

22 37 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

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)

Ngày đăng: 27/03/2022, 06:36

Xem thêm:

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w