Báo cáo thí nghiệm thông tin số

21 27 0
Báo cáo thí nghiệm thông tin số

Đ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

báo cáo thí nghiệm môn học thông tin số trường đại học bách khoa hà nội.báo cáo thí nghiệm môn học thông tin số trường đại học bách khoa hà nội.báo cáo thí nghiệm môn học thông tin số trường đại học bách khoa hà nội.báo cáo thí nghiệm môn học thông tin số trường đại học bách khoa hà nội.báo cáo thí nghiệm môn học thông tin số trường đại học bách khoa hà nội.báo cáo thí nghiệm môn học thông tin số trường đại học bách khoa hà nội

Báo cáo Thí nghiệm thơng tin số Sinh viên: Nguyễn Văn Công Lớp: Điện tử – K56 MSSV: 20115466 Hà Nội ngày 28 tháng năm 2014 BÀI SỐ Q trình ngẫu nhiên tín hiệu Bài 1.1 Code matlab x=-5:0.1:5 % tao x la mang cac phan tu khoang (-5,5), cach 0.1 Px=exp(-x.^2/2)/sqrt(2*pi); % ham phan bo xs plot(x,Px); % ve thi ham phan phoi xs title(‘ham phan bo xs theo dinh luat phan phoi chuan’); % ten thi xlabel(‘x’); % dien ten truc x ylabel(‘y’); % dien ten truc y Bài 1.1 Code matlab len=100000; % dai cia qua trinh ngau nhien x=randn(1,len); % tao qua trinh ngau nhien phan phoi chuan step=.1; k=-5:step:5; % tao khoang cach % khoang cach xet khoang (-5,5) px=hist(x,k)/len/step; % tinh so vecto cac khoang duoc cho boi k stem(k,px); % ve thi roi rac Px_lythuyet = exp(-k.^2/2)/ sqrt(2*pi); % ham phan bo ly thuyet hold on; % giu thi vua ve plot(k,Px_lythuyet); % ve thi ham phan bo xs phan phoi chuan title('phan bo xac suat Gauss'); % tieu de thi xlabel('x'); ylabel('p(x)'); % truc hoanh % truc tung legend('Ly thuyet','Mo phong'); hold of; Thay đổi độ dài trình ngẫu nhiên 1.2 lên thành len=1000000 BÀI SỐ Lượng tử hóa tuyến tính Bài 2.1 Code matlab t=0:0.01:20; xt=sin(randn()+t).*cos(rand()*t); [inx xqt]= lquan(xt,-1,1,randint(1,1,3)+2); plot(t,xt,'b',t,xqt,'r'); grid on; BÀI SỐ Tạp âm lượng tử kỹ thuật lượng tử hóa tuyến tính Bài 3.1 Code matlab N=1000; x=2*rand(1,N)-1; % x phan bo deu tu -1 den nbit= 1:10; % so bit luong tu tu den 10 SNqR= zeros(size(nbit)); % khoi tao mang SNqR chua ket qua SNqR_lt= 6.02 * nbit; % Mang chua SNqR tinh theo ly thuyet Ps=sum(x.^2)/N; % cong suat tin hieu x for i=1:size(nbit,2) [inx xq]=lquan(x,-1,1,nbit(i)); eq= x-xq; Pq=sum(eq.^2)/N; SNqR(i)=10*log(Ps/Pq); end plot(nbit,SNqR,'b',nbit,SNqR_lt,'r'); title('Do thi mo phong'); xlabel('nbit'); ylabel('SNqR'); legend( 'Mo phong','ly thuyet'); grid on; Bài 3.2 Tương tự 3.1, thay đổi tín hiệu x tín hiệu điều hòa X=sin(linspace(1,5,N)); N=1000; x=sin(linspace(1,5,N)); nbit= 1:10; SNqR= zeros(size(nbit)); SNqR_lt= 6.02 * nbit; Ps=sum(x.^2)/N; for i=1:size(nbit,2) [inx xq]=lquan(x,-1,1,nbit(i)); eq= x-xq; Pq=sum(eq.^2)/N; SNqR(i)=10*log(Ps/Pq); end plot(nbit,SNqR,'b',nbit,SNqR_lt,'r'); title('Do thi mo phong'); xlabel('nbit'); ylabel('SNqR'); legend( 'Mo phong','ly thuyet'); grid on; BÀI SỐ Mật độ phổ lượng hàm tự tương quan tín hiệu Bài 4.1 Code matlab L=500; % dai cua qua trinh ngau nhien x=randn(1,L); % tao qua trinh ngau nhien theo phan phoi chuan [acorr_x,n]=xcorr(x); % ham tu tuong quan cua x, dong thoi lay cac gia tri truc %hoanh va bien n plot(n,acorr_x); % ve thi ham tu tuong quan title(' Do thi ham tu tuong quan '); xlabel('x'); % truc hoanh ylabel('r(x)'); % truc tung % tieu de thi Thay đổi tín hiệu x tín hiệu có biên độ tăng dần từ -1 đến Tín hiệu sin Bài 4.2 Code matlab N=200; % so luong tan so roi rac du lon L=50; % dai cua qua trinh ngau nhien x=randn(1,L); % x la qua trinh ngau nhien theo phan phoi chuan w=linspace(0,2*pi,N); %w khoang tan so (0,2*pi) voi N tan so roi rac fx=freqz(x,1,w); % bien doi fourier cua x tai cac tan so roi rac w esd_x=fx.*conj(fx); % mat nang luong cua x plot(w/(2*pi),esd_x); % thi mat nang luong title('do thi mat nang luong'); % tieu de thi xlabel('w/2\pi'); ylabel('ESD(x)'); Tìm hàm tự tương quan vẽ đồ thị so sánh Code matlab N=1000; % so luong tan so roi rac du lon L=500; % dai cua qua trinh ngau nhien x=randn(1,L); % x la qua trinh ngau nhien theo phan phoi chuan w=linspace(0,2*pi,N); % w khoang tan so (0,2*pi) voi N tan so roi rac fx=freqz(x,1,w); % bien doi fourier cua x tai cac tan so roi rac w esd_x=fx.*conj(fx); % mat nang luong cua x plot(w/(2*pi),esd_x); % thi mat nang luong hold on; title(‘do thi mat nang luong ham tu tuong quan’); xlabel(‘w/2\pi); [acorr_x,n]=xcorr(x); % ham tu tuong quan ft_acorr_x=freqz(acorr_x,1,w).*exp(j*w*(L-1)); plot(w/(2*pi),real(ft_acorr_x),’r:’); % thi ham tuong quan legend(‘ESD(w)’,’R(w)’); hold of; BÀI SỐ Mã đường dây NRZ Bài 5.1 Matlab code len=100000; % dai dong bit mo phong SNR_db=0:2:8 % tao vecto SNR_db SNR=10.^(SNR_db/10); % doi SNR tu decibel sang lann bsignal=(rand(1,len)>=0.5); NRZ_signal=bsignal*2-1; % bien doi dong bit sang -1 N0=1./SNR; % phuon sai cua tap am= cong suat tap am % cho tin hieu di qua kenh nhieu trang va giai dieu che for i=1:length(SNR_db) noise=sqrt(N0(i))*randn(1,len); % tap am noise r_signal=NRZ_signal+ noise; % tin hieu thu duoc = tin hieu NRZ ben %phat+ tap am noise NRZ_decoded=sign(r_signal); % giai ma tin hieu NRZ thu duoc Pe(i)=symerr(NRZ_signal, NRZ_decoded)/len; end plot(SNR_db,Pe,'bo '); % ve thi Bài 5.2 Code matlab len=100000; % dai dong bit mo phong SNR_db=0:2:8 % tao vecto SNR_db SNR=10.^(SNR_db/10); % doi SNR tu decibel sang lann % tao dong bit nhi phan bsignal=(rand(1,len)>=0.5); NRZ_signal=bsignal*2-1; % bien doi dong bit sang -1 N0=1./SNR; % phuon sai cua tap am= cong suat tap am % cho tin hieu di qua kenh nhieu trang va giai dieu che for i=1:length(SNR_db) noise=sqrt(N0(i))*randn(1,len); % tap am noise r_signal=NRZ_signal+ noise; % tin hieu thu duoc = tin hieu NRZ ben %phat+ tap am noise NRZ_decoded=sign(r_signal); % giai ma tin hieu NRZ thu duoc Pe(i)=symerr(NRZ_signal, NRZ_decoded)/len; end plot(SNR_db,Pe,'bo '); % ve thi hold on; Pe_lythuyet=(1/2)*(1-efr(sqrt(SNR/2))); plot(SNR_db,Pe_lythuyet,'rx '); % ve thi ly thuyet title('ty le loi bit BER theo ti le tin hieu tren tap am SNR'); xlabel('SNR [db]'); ylabel('BER'); legend('Mo phong','ly thuyet'); hold on; BÀI SỐ Điều chế QPSK Bài 6.1 Code matlab len=50000; bsignal = (rand(1,len) >=0.5); % tao dong bit ngau nhien dai len qpsk_signal=[]; for i= 1:2:length(bsignal) if bsignal(i)==0&bsignal(i+1)==0 qpsk_signal((i+1)/2)= exp(j*3*pi/4); elseif bsignal(i)==0&bsignal(i+1)==1 qpsk_signal((i+1)/2)= exp(j*5*pi/4); elseif bsignal(i)==0&bsignal(i+1)==1 qpsk_signal((i+1)/2)= exp(j*7*pi/4); elseif bsignal(i)==0&bsignal(i+1)==1 qpsk_signal((i+1)/2)= exp(j*pi/4); end end plot(qpsk_signal,'o'); % ve tin hieu dieu che len thi hold on; t=0:0.01:2*pi; plot(exp(j*t),'b '); xlabel('I'); ylabal('Q'); title('bieu chom qpsk'); Bài 6.2 Code matlab len=50000; bsignal = (rand(1,len) >=0.5); % tao dong bit ngau nhien dai len qpsk_signal=[]; for i= 1:2:length(bsignal) if bsignal(i)==0&bsignal(i+1)==0 qpsk_signal((i+1)/2)= exp(j*3*pi/4); elseif bsignal(i)==0&bsignal(i+1)==1 qpsk_signal((i+1)/2)= exp(j*5*pi/4); elseif bsignal(i)==0&bsignal(i+1)==1 qpsk_signal((i+1)/2)= exp(j*7*pi/4); elseif bsignal(i)==0&bsignal(i+1)==1 qpsk_signal((i+1)/2)= exp(j*pi/4); end end Es=std(qpsk_signal).^2; SNR_db=6; SNR=10^(SNR_db/10); N0=Es/SNR; noise=sqrt(N0/2)*(randn(size(qpsk_signal))+ j*randn(size(qpsk_signal))); output_signal=qpsk_signal+ noise; plot(qpsk_signal,'ro'); t=0:0.01:2*pi; plot(exp(j*t),'r '); xlabel('I'); ylabel('Q'); title('tin hieu qpsk dieu che di qua kenh nhieu trang voi SNR=6db'); hold of; BÀI SỐ Mô điều chế QPSK qua kênh nhiều Gauss Bài Code matlab function ber=QPSK_map(n,bit,snr) %n- number of bit %bit %snr-Signal Noise Ratio s=[]; for i=1:2:n if bit(i)==0&bit(i+1)==0 s((i+1)/2)=exp(j*pi/4); elseif bit(i)==0&bit(i+1)==1 s((i+1)/2)=exp(j*3*pi/4); elseif bit(i)==1&bit(i+1)==1 s((i+1)/2)=exp(j*5*pi/4); elseif bit(i)==1&bit(i+1)==0 s((i+1)/2)=exp(j*7*pi/4); end end es=var(s); eb=es/2; n_0=eb/10^(snr/10); noise=sqrt(n_0/2)*(randn(size(s))+j*randn(size(s))); r=s+noise; t=0:0.01:2*pi; d=[]; bit1=[]; a=[0 0 1 1 0]; for i=1:n/2 d(1)=(real(r(i))-real(exp(j*pi*1/4)))^2+(imag(r(i))-imag(exp(j*pi/4)))^2; m=1; for k=2:4 d(k)=(real(r(i))-real(exp(j*pi*(2*k-1)/4)))^2+(imag(r(i))-imag(exp(j*(2*k-1)*pi/4)))^2; if d(k)0.5; ber=[ ];p=[ ]; for i=1:length(snr) ber(i)=QPSK_map(n,bit,snr(i)); gamma_b(i)=10^(snr(i)/10); p(i)=erfc(sqrt(2*gamma_b(i))/sqrt(2))/2; end symilog(snr,ber,'-',snr,p,' '); legend('Mo phong','Ly thuyet'); title('BER/SNR'); xlabel('SNR'); ylabel('BER'); ... tap am % cho tin hieu di qua kenh nhieu trang va giai dieu che for i=1:length(SNR_db) noise=sqrt(N0(i))*randn(1,len); % tap am noise r_signal=NRZ_signal+ noise; % tin hieu thu duoc = tin hieu NRZ... tap am % cho tin hieu di qua kenh nhieu trang va giai dieu che for i=1:length(SNR_db) noise=sqrt(N0(i))*randn(1,len); % tap am noise r_signal=NRZ_signal+ noise; % tin hieu thu duoc = tin hieu NRZ... len=1000000 BÀI SỐ Lượng tử hóa tuyến tính Bài 2.1 Code matlab t=0:0.01:20; xt=sin(randn()+t).*cos(rand()*t); [inx xqt]= lquan(xt,-1,1,randint(1,1,3)+2); plot(t,xt,'b',t,xqt,'r'); grid on; BÀI SỐ Tạp

Ngày đăng: 21/03/2021, 22:59

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan