Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
618,16 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 THƠNG TIN SỐ ( ET3250) Họ tên : Đậu Công Dụng Mssv : 20172504 Mã lớp TN : 713389 Nhóm TN : T02 Hà Nội, 2022 download by : skknchat@gmail.com BUỔI THÍ NGHIỆM : Bài 1.1 Mã nguồn matlab: x=-5:0.1:5; %Tạo vector x Px=(1/sqrt(2*pi))*exp(-power(x,2)/2); %P(x) ứng với giá trị của x plot(x,Px); %Vẽ đồ thị xlabel('x'); % Dán nhãn x ylabel('P(x)'); %Dán nhãn y Kết mô Trả lời câu hỏi : 1.1 Mơ tả hình dạng đồ thị hàm P(x) : download by : skknchat@gmail.com Đồ thị có dạng hình chng Hàm P(x) biểu thị cho hàm số mũ lũy thừa có số e 1.2 Ý nghĩa ứng dụng hàm phân phối xác suất Gauss thông tin số Hàm phân phối xác suất Gauss thông tin số cho biết mật độ phân bố tập trung thông tin thời gian xác định 1.3 Nếu thay đổi kỳ vọng u phương sai P(x) thay đổi Nếu tăng kỳ vọng phương sai đồ thị có xu hướng thoải lệch sang bên phải Đó đăc trưng hàm lũy thừa Bài 1.2: Mã nguồn Matlab: leng=100000; % Độ dài của quá trình ngẫu nhiên x=randn(1,leng); %Tạo quá trình ngẫu nhiên theo pp chuẩn step=0.1; %step = 0.1; k=-5:step:5; %vector k px=hist(x,k)/leng/step; % Phân bố xác suất vào khoảng vector k stem(k,px); % Vẽ lên đồ thị hold on; Px_theo=(1/sqrt(2*pi))*exp(-power(k,2)/2); plot(k,Px_theo); title('Phan bo xac suat Gauss'); % Tiêu đề xlabel('x'); % Dán nhãn x ylabel('P(x)'); % Dán nhãn y legend('Analysis','Simulation'); % Chú thích hold off; download by : skknchat@gmail.com Kết mô Trả lời câu hỏi : Kết hai hàm mô lý thuyết tương đồng với Thay đổi trình ngẫu nhiên lên 10000000 phần tử Kết xác so với kết cũ , thay đổi độ dài trình ngẫu nhiên xác Câu lệnh : px= hist(x,k) /len/step phải chia cho len để tạo net liền phải chia cho step để tăng độ dài phần tử Bài 2.1 Hàm lquan function [id qy]= lquan(x,xmin,xmax,nbit) nlevel = 2^nbit; q = (xmax-xmin)/nlevel; [id qy] = quantiz(x,xmin+q:q:xmax-q,xmin+q/2:q:xmax-q/2); download by : skknchat@gmail.com Chạy chương trình: xs = rand(1,5)*2-1; [xi xq] = lquan(xs,-1,1,3) Trả lời câu hỏi xs = [0.6180 0.0006 0.9721 0.2069 -0.3657] xi = [ 2] xq = [0.6250 0.1250 0.8750 0.1250 -0.3750 ] Bài 2.2 Mã nguồn Matlab: t=0:0.01:20; %Thời gian xt=sin(randn()+t).*cos(rand()*t); %Tín hiệu x(t) [inx xqt]=lquan(xt,-1,1,randi(3)+1); %Lượng tử hóa plot(t,xt); %Vẽ đồ thị x(t) hold on; plot(t,xqt); %Vẽ đồ thị lượng tử xlabel('time'); %Dán nhãn x ylabel('signal'); %Dán nhãn y download by : skknchat@gmail.com Kết mô phỏng: Trả lời câu hỏi : Số bit dung để lượng tử cho mẫu tín hiệu : n=3 ( mức lượng tử hóa ) Bước lượng tử q: q=0.25 Mức biên độ tất mức lượng tử : 0.875, 0.625, 0.375, 0.125, -0.125, - 0.375, -0.625, -0.875 Bài N = 1000; x_uni = 2*rand(1,N)-1; x_sin = sin(linspace(1,5,N)); nbit = 1:10; SNqR_uni = zeros(size(nbit)); SNqR_sin = zeros(size(nbit)); SNqR_lt = 6.02*nbit; Ps_uni = sum(x_uni.^2)/N download by : skknchat@gmail.com Ps_sin = sum(x_sin.^2)/N; for i = 1:size(nbit,2) [indx_uni xq_uni] = lquan(x_uni,-1,1,nbit(i)); [indx_sin xq_sin] = lquan(x_sin,-1,1,nbit(i eq_uni = x_uni - xq_uni; eq_sin = x_sin - xq_sin; Pq_uni = sum(eq_uni.^2)/N; Pq_sin = sum(eq_sin.^2)/N; SNqR_uni(i) = 10*log10(Ps_uni/Pq_uni); SNqR_sin(i) = 10*log10(Ps_sin/Pq_sin); end plot(nbit,SNqR_uni,'b-'); hold on; plot(nbit,SNqR_sin,'r '); plot(nbit,SNqR_lt,'m-.'); title('Do thi SN_qR theo nbit'); xlabel('nbit'); ylabel('SN_qR'); legend('Phan bo deu','Hinh sin','Ly thuyet'); grid on; hold off; Kết quả: download by : skknchat@gmail.com SNqR_lt= [6.0200 12.0400 18.0600 24.0800 30.1000 36.1200 42.1400 48.1600 54.1800 60.2000] SNqR_uni= [6.1217 12.0590 18.0125 23.9371 29.9149 36.2382 42.0380 48.2333 54.1255 59.9320] SNqR_sin= [6.4171 12.8834 19.3981 25.6702 32.0389 38.1620 44.3266 50.4033 56.4544 62.5722] Trả lời câu hỏi : Khi n tăng lên SNqR tăng lên lần SNqR phụ thuộc vào n , mà không phụ thuộc vào kích thước lượng tử dải 2 n biên độ lượng tử : SNqR= ( ) ( n độ dài từ mã ) Khi thay đổi tín hiệu x tín hiệu điều hịa giá trị SNqR thay đổi so với x phân bố BUỔI THÍ NGHIỆM Bài số 4: Mật Độ Phổ Năng Lượng Và Hàm Tự Tương Quan Của Tín Hiệu 4.1 Đồ thị tín hiệu hàm tương quan - Code : download by : skknchat@gmail.com L=500; x=randn(1,L); x1=linspace(-1,1,L); x2=sin(linspace(-10,10,L)); [acorr_x nx]=xcorr(x); [acorr_x1 nx1]=xcorr(x1); [acorr_x2 nx2]=xcorr(x2); figure; plot(nx,acorr_x); xlabel('n'); ylabel('R_{xx}'); figure; plot(nx1,acorr_x1); xlabel('n'); ylabel('R_{xx}'); figure; plot(nx2,acorr_x2); xlabel('n'); ylabel('R_{xx}'); - Kết mô - Trả lời câu hỏi : Đồ thị hàm tự tương quan trường hợp tổng quát biên độ ln tăng dần đạt cực đại Giá trị cực đại hàm tự tương quan nằm khoảng bên phải đồ thị Hàm tương quan trường hợp tín hiệu khác u cầu thí nghiệm hầu hết khác hẳn đầu vào khác download by : skknchat@gmail.com 4.2 Biến đổi Fourier hàm tự tương quan Code L=50; x=rand(1,L); % 50 mẫu ngẫu nhiên từ đến N=200; % Số lượnng tần số rời rạc w=linspace(0,2*pi,N); % w từ - 2*pi fx=freqz(x,1,w); %Biến đổi fourier vector x esd_x=fx.*conj(fx); %esd_x bình phương biên độ fx acorr_x=xcorr(x); %Tự tương quan x ft_acorr_x=freqz(acorr_x,1,w); %Phổ hàm từ tương quan chưa xác ft_acorr_x=freqz(acorr_x,1,w).*exp(j*w*(N-1)); % Phổ hàm tự tương quan subplot(2,1,1); semilogy(w/pi,esd_x); xlabel('\omega (\pix)'); ylabel('S(e^{j\omega)}'); subplot(2,1,2); semilogy(w/pi,real(ft_acorr_x),'r'); xlabel('\omega (\pix)'); ylabel('FT[r_{xx}(n)]'); Kết mô Trả lời câu hỏi : Phổ biên độ rời rạc tín hiệu có đặc điểm biến đổi liên tục miền tần số Đồ thị phổ tín hiệu esd_x ft_acorr_x : 10 download by : skknchat@gmail.com - Với esd_x đồ thị phổ biên độ biên độ - Với ft-acorr_x đồ thị có biên độ tăng dần Khi vẽ đồ thị cách trục hồnh w/pi cách trục hoành 2k/N để tránh chổng phổ Chọn N >200 để kết xác Ý nghĩa ứng dụng định lý Weiner-Khintchine thông tin số : Phổ tần số hàm tự tương quan hàm mật độ phổ lượng tín hiệu số Bài số : Mã đường dây NRZ - Code : len=100000; SNR_db=0:2:8; SNR= 10.^(SNR_db/10); bsignal=randi(2,1,len)-1; NRZ_signal=bsignal*2-1; N0=1./SNR; BER=zeros(1,length(SNR_db)); for i=1:length(SNR_db) noise=sqrt(N0(i))*randn(1,len); r_signal=NRZ_signal+noise; NRZ_decoded=sign(r_signal); BE_sum=sum(NRZ_signal~=NRZ_decoded); BER(i)=BE_sum/len; end Pe=(1/2)*(1-erf(sqrt(SNR/2))); plot(SNR,Pe); hold on; plot(SNR,BER,'o'); xlabel('SNR'); ylabel('BER'); - Kết mô 11 download by : skknchat@gmail.com - Trả lời câu hỏi Phải sử dụng mã đường dây : - Chuyển đổi tín hiệu băng gốc miền tần số cao để vào băng thông đường dây , tăng mật độ chuyển đổi tích cực tín hiệu - Giúp kiểm sốt lỗi Khi tỷ sơ SNR tăng xác suất lỗi giảm tỉ lệ nghịch với Kết đồ thị phù hợp với lý thuyết Nếu giải mã tín hiệu NRZ lệnh “ NRZ_decoded = sign(r_signal)” hướng dẫn có số trường hợp khơng xác , trường hợp khơng mang dấu có hai loại tín hiệu NRZ đơn cực lưỡng cực 12 download by : skknchat@gmail.com Kết : SNR dB dB dB dB dB Pe lý thuyết 0.27 0.16 0.09 0.03 0.006 BER mô 0.08 0.06 0.02 0.004 0.0002 Nhận xét : Kết qủa thay đổi nhiều SNR tăng dần BUỔI THÍ NGHIỆM BÀI 6: KỸ THUẬT ĐIỀU CHẾ SỐ QPSK Chạy chương trình: 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); % Tao dong bit ngau nhien dai len % 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,'.'); % Ve bieu chom tin hieu co nhieu title('Do thi chom 4-QPSK'); xlabel('I'); ylabel('Q'); hold on; plot(qpsk_signal,'r*'); % Ve bieu chom tin hieu khong nhieu plot(exp(j*[0:0.01:2*pi]),'r '); 13 download by : skknchat@gmail.com Kết quả: SNR = dB Với SNR = dB Với SNR = dB 14 download by : skknchat@gmail.com Trả lời câu hỏi : 33 Điều chế tín hiệu để mang thơng tin xa Phải điều chế số tín hiệu mã hóa bảo mật tốt Khối điều chế đóng vai trị trung gian quan trọng q trình xử lý tín hiệu để truyền 34 Kết mơ : tín hiệu thu có dạng vùng mây bao quanh điểm chịm 35 Trong điều chế PSK , phía thu giải mã sai mức điều chế khác với bên phát 36 Năng lượng tín hiệu Es lượng bit Eb trường hợp : Es=3db, Eb=1.5dB BÀI 7: XÁC SUẤT LỖI BIT TRONG ĐIỀU CHẾ QPSK Chạy chương trình: len = 50000; % SNR_db = 0:2:8; % SNR = 10.^(SNR_db/10); % bsignal = randi([0 1],1,len); % Thuc hien dieu che QPSK for i=1:2:len Do dai dong bit mo phong Tao vector SNR_db = Doi SNR tu Decibel sang lan % Tao dong bit ngau nhien dai len 15 download by : skknchat@gmail.com 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 % Goc phan tu I r_bsignal(j) = 1; r_bsignal(j+1) = 0; 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)); % Xac suat loi bit plot(SNR_db,Pb,'ro '); % Ve thi Pb ly thuyet title('Do thi ty le bit loi ly thuyet va mo phong'); xlabel('SNR_d_B'); ylabel('BER'); hold on; plot(SNR_db,BER); % Ve thi BER mo phong legend('Ly thuyet','Mo phong'); hold off; Kết quả: 16 download by : skknchat@gmail.com SNR 0dB 2dB 4dB 6dB 8dB Pb lý thuyết 0.1587 0.1040 0.0565 0.0230 0.0060 BER mô 0.1606 0.1043 0.0551 0.0221 0.0062 Trả lời câu hỏi : 37 So sánh điều chế BPSK QPSK - Về xác suất lỗi bit : Xác suất lỗi bit BPSK QPSK , tương quan QPSK có tỷ lệ thấp - QPSK giảm BER , tăng hiệu suất phổ , tốc độ truyền liệu BPSK 38 Một số hệ thống thực tế sử dụng điều chế QPSK : ứng dụng vào truyền hình số 17 download by : skknchat@gmail.com BÀI 8: MÔ PHỎNG ĐIỀU CHẾ M-QAM QUA KÊNH NHIỄU GAUSS Chạy chương trình: 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)); % BER de luu ti le loi bit for k = 1:size(M,2) % size(M,2) la so cot cua M s_stream = randi([0 M(k)-1],1,n_sym); % Tao dong bieu tuong dai n_sym 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'); % Giai dieu che M-QAM [num ratio] = biterr(s_stream,s_demod); % Tinh ti le loi bit BER(k,r) = ratio; % Luu ti le loi bit vao BER end end semilogy(SNR_db,BER(1,:),'bo-'); % Ve thi BER ung voi M = 16 hold on; semilogy(SNR_db,BER(2,:),'rs-'); % Ve thi BER ung voi M = 32 semilogy(SNR_db,BER(3,:),'m*-'); % Ve thi BER ung voi M = 64 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; Kết quả: 18 download by : skknchat@gmail.com SNR 16-QAM 32-QAM 64-QAM 0dB 0.288 0.330 0.360 5dB 0.164 0.224 0.263 10dB 0.058 0.116 0.152 15dB 0.004 0.028 0.063 20dB 0 0.008 25dB 0 Trả lời câu hỏi : 39 Khi số mức điều chế M tăng BER thay đổi giảm dần Nhưng, tăng lên q lớn khả khơi phục tín hiệu 40 Số mức điều chế tăng lên cao làm khả khơi phục tín hiệu nên tăng lên lớn 19 download by : skknchat@gmail.com ... ft_acorr_x=freqz(acorr_x,1,w).*exp(j*w*(N-1)); % Phổ hàm tự tương quan subplot(2,1,1); semilogy(w/pi,esd_x); xlabel('omega ( pix)'); ylabel('S(e^{jomega)}'); subplot(2,1,2); semilogy(w/pi,real(ft_acorr_x),'r');... %Thời gian xt=sin(randn()+t).*cos(rand()*t); %Tín hiệu x(t) [inx xqt]=lquan(xt,-1,1,randi(3)+1); %Lượng tử hóa plot(t,xt); %Vẽ đồ thị x(t) hold on; plot(t,xqt); %Vẽ đồ thị lượng tử xlabel('time');... x=randn(1,L); x1=linspace(-1,1,L); x2=sin(linspace(-10,10,L)); [acorr_x nx]=xcorr(x); [acorr_x1 nx1]=xcorr(x1); [acorr_x2 nx2]=xcorr(x2); figure; plot(nx,acorr_x); xlabel('n'); ylabel('R_{xx}');