Professional Documents
Culture Documents
+
=
+
Theo cc chun Bc M, gi trca l 255. Max x v Max y ln lt l cc gi tr dng ln
nht ca x v y.
Lut A:
max
max
max
max
( / )
1 ln
1 ln[ ( / )]
sgn
1 ln
A x x
y sngx
A
y
A x x
y x
A
+
=
+
+
nu
max
max
1
0
1
1
x
x A
x
A x
< s
< s
vi A l hng s
Gi trchun ca A l 87.6
MATLAB cung cp hm compand thc hin nn gin tn hiu. Hm ny h tr hai lut nn
gin A v ni trn.
>> out = compand(in, param, v, method)
In l tn hiu vo cn out l tn hiu ra
10
v l bin nh ca tn hiu vo
param l thng s ca lut nn gin (hng sA hoc )
method c th nhn mt trong cc gi tr sau:
Code Matlab:
function sig_comp = compressor(sig_t)
%Nen tin hieu truoc khi dua vao khoi luong tu ho
%sig_t la tin hieu dua vao
%Su dung nen theo luat A voi he so A = 86.7
A = 87.6;
V = max(sig_t);
sig_comp = compand(sig_t,A,V,'A/compressor');
end
3) Khi Integer to Bit Converter
Chuyn i cc gi tr index t 0- 255 thnh cc s nh phn 8 bit.
Code Matlab:
function sig_enc = Encoder(index)
%Bien doi tu ma thap phan sang nhi phan k bit
ysym = de2bi(reshape(index,'left-msb');%Bien doi chuoi thap phan
%thanh chuoi bit nhi phan
sig_enc = reshape(ysym.',prod(size(ysym)),1);
end
4)Khi m chp
M chp l mt phng php m ho sa sai quan trng. Khc vi m khi, m chp l loi m
c nh. Mc d, b m ho chp cng nhn cc thng ip c s lng k hiu xc nh v to
11
ra mt t m cng c s k hiu xc nh, nhng t m to ra mi thi im khng ch ph
thuc vo cc k hiu ca thng ip hin ti m cn phthuc vo cc k hiu ca cc thng
ip c m ho trc .
M chp l m tuyn tnh c ma trn sinh c cu trc sao cho php m ha c th xem nh 1
php lc. M chp c s dng rng ri trong thc t bi m ha c xem nh mt tp hp
cc b lc s tuyn tnh vi cc m l cc u ra ca b lc c ghp xen k.
B m ha cho m chp thng c coi l mt tp hp cc b lc s. V d:
Dng m
k
i qua 2 b lc dng chung cc phn t nh to ra 2 dng ra.
C
(1)
k
= m
k
+ m
k-1
+ m
k-2
v C
(2)
k
= m
k
+ m
k-2
.
V c mi bit vo li c hai bit c m ha a ra, kt qu l ta c mt m c tc R=1/2.
M chp c t o r a bng cch cho chui t hng t i n t r uyn qua h t hng
cc thanh ghi dch tuyn tnh c s trng thi hu hn. Cho s lng thanh ghi dch
l m (cng k hiu l N), b m c k bit ng vo v u ra b m chp c n bit ng ra(n hm i
s tuyn tnh hoc n ng ra cng modulo). Tc m l R = k/n, s nh ca b ghi
dch l mk v tham s L gi l chiu di rng buc (Constraintlength) ca m chp
(vi L=k(m-1))
Code Matlab cho vic m ha m chp:
function sig_conv = EnConv(sig_bit)
%Ham ma chap voi toc do R=1/2
%Cac da thuc sinh la G2=5, G3=7
%Chieu dai rang buoc L=3
%inpbits la tin hieu vo
L=3;
G =[5 7];
trellis = poly2trellis (L,G);
sig_conv = convenc(sig_bit,trellis);
end
12
5) Khi iu ch QPSK
iu ch tn hiu l qu trnh bin i mt hay nhiu thng s ca mt tn hiu tun hon theo
s thay i mt tn hiu mang thng tin cn truyn i xa. Tn hiu tun hon gi l sng mang.
Tn hiu mang thng tin gi l tn hiu c iu ch. u thu b gii iu ch s da vo s
thay i thng s ca sng mang ti to li tn hiu mang thng tin ban u. Cc thng s
ca sng mang c dng trong qu trnh iu ch c th l bin , pha, tn s.
Trong iu ch s, mt sng mang tng t s c bin i theo mt chui bit c chiu di c
nh hoc thay i. y cng c th c coi l mt dng bin i tng t-s. Hnh dng ca
sng mang c ly t mt tp hp hu hn cc k hiu.
QPSK vit tt ca t Quadrature Phase Shift Keying, gi l iu ch pha cu phng (iu
ch pha vung gc). QPSK l 1 k thut iu ch tn hiu s, m ha 2 bit thnh 1 symbol.
S nguyn l b iu ch QPSK s dng mt trong 4 pha lch nhau 90
0
.
Tn hiu bng gc c a vo b bin i ni ni tip thnh song song. u ra c 2 lung
s liu c tc bit gim i 1 na, ng thi bin i tn hiu n cc thnh tn hiu 1 . Hai
sng mang a ti 2 b trn lm lch pha nhau 90
0
. Tng hp tn hiu u ra 2 b trn ta c
tn hiu QPSK.
Trong Matlab s dng hm pskmod vi s mc iu ch l 4 thc hin iu ch QPSK.
Trc khi iu ch th phi a 2 bit thnh cc k t t 0 n 3.
Code Matlab cho hm QPSK
function sig_mod = QPSK(sig_conv)
%Dieu che QPSK cho tin hieu da dc ma chap
%Chuyen doi 2 bit thanh cac ky hieu
13
k = 2;%2bit/1ky tu
x = bi2de(reshape(sig_conv,k,length(sig_conv)/k).','left-msb');
sig_mod = pskmod(x,4);
end
6) Knh truyn cng nhiu AWGN (ADDITIVE WHITE GAUSSIAN NOISE)
Vi mt knh thng tin c bn, tn hiu tin tc sau khi iu ch s c gi i trn knh
truyn. Trong thc t tn hiu khi truyn trn knh truyn s chu tc ng bi cc yu t ca
knh truyn lm cho tn hiu thu c khng cn ging hon ton tn hiu pht. Tu theo cc
dng mi trng truyn khc nhau v cc h thng thng tin khc nhau, s tc ng ni trn
s c nhng c trng khc nhau. MATLAB cho php ngi s dng m phng ba loi knh
truyn c bn, l: knh truyn vi nhiu AWGN, knh truyn fading v knh truyn i
xng nh phn.
Knh truyn AWGN l dng knh truyn c nhiu cng, trng v phn b theo hm Gauss.
Nh vy, mt tn hiu khi truyn qua knh truyn ny s phi thm vo mt tn hiu ngu
nhin khng mong mun phn b theo hm Gauss:
2
2
( )
2
1
( )
2
x
p x e
o
o t
=
Knh truyn AWGN trong MATLAB c m phng bng hm awgn. Hm ny s cng nhiu
Gauss vo mt tn hiu cho trc (c th l tn hiu thc hay phc), mc cng sut nhiu do
ngi s dng quy nh thng qua hai thng s nhp:
- Mc cng sut tn hiu pht (n vmc nh l dBW, hoc c thdng n v W)
- TsSNR (n v mc nh l dB)
C php ca hm awgn nh sau:
>> awgn(X,SNR,SigPower,State,PowerType)
Trong : X l tn hiu pht
SNR l tscng sut tn hiu trn nhiu (tnh bng dB)
SigPower cho bit cng sut tn hiu vo (dBW), hoc nu SigPower = measuredth MATLAB
s o cng sut tn hiu pht trc khi cng nhiu
State cho bit trng thi ca b pht tn hiu ngu nhin
PowerType ch ra n vca SNRv SigPowerl n vdecibel (dB) hay n v tuyn
tnh(linear)
14
Ba thng s cui khng nht thit phi a vo, trong trng hp khng c cc thng s ny
th xem nh cng sut tn hiu pht bng 0 dBW v n v ca SNR l dB.
Code Matlab cho knh AWGN:
function sig_noise = awgnchan(sig_mod)
%Cho tin hieu sau khi da dieu che vao kenh truyen cong nhieu AWGN
%Kenh truyen AWGN la kenh truyen nhieu trang va phan bo Gauss
%Gia su kenh truyen co nang luong bit tren mat do cong suat nhieu Eb/N0 =
%9dB
M = 4; %Dieu che QPSK
k = log2 (M);
nsamp = 1;
EbNo = 9;%Don vi dB
SNR = EbNo + 10*log10 (k) - 10*log10 (nsamp);
sig_noise = awgn(sig_mod,SNR,'measured');
end
7) Khi gii iu ch QPSK
S nguyn l:
Hai sng mang chun vo b trn sau khi qua c ng b vi tn hiu vo v qua cc b
lc thng thp s thu c tn hiu 1
.Qua mch logic s c cc tn hiu n cc.
Trong Matlab, gii iu ch QPSK dng hm Z = pskdemod(Y,M,PHASE) vi M = 4 l s
mc iu ch, PHASE l pha ban u.
Code Matlab cho hm gii iu ch:
function sig_demod = DeQPSK(sig_noise)
15
%Giai ma QPSK tin hieu sau khi cong nhieu
%Su dung ham pskdemod
sig_demod = pskdemod(sig_noise,4);
end
8) Khi gii m m chp
Thut ton Viterbi l mt gii php c s dng ph bin gii m chui bit c m ha
bi b m ha m chp. Thut ton Viterbi c th dng gii m nhng chui bit m c m
ha bi bt c b m chp no.
Tn hiu sau khi m ha c i qua knh truyn sau n b thu, ti y tin hiu c
lng t ha trc khi s dng thut ton viterbit gii m.
S dng quyt nh cng vi hm videc gii m
len = 2;%Chieu dai traceback gii m
decbits = vitdec(encbits,trellis,len,trunc,hard,3);
Code Matlab cho hm gii m:
function sig_deconv = DeConv(sig_demod)
%DeConv khoi giai ma ma chap voi toc do R = 1/2
%Su dung hm vitdec voi quyet dinh cung
%Dau vao la tin hieu sau khi giai dieu che QPSK
z = de2bi(sig_demod,'left-msb'); %Chuyen doi ky tu thanh cac bit nhi phan
z = reshape(z.',prod(size(z)),1); %Chuyen doi ma tran thanh 1 vecto
L = 3;
G = [5 7];
trellis = poly2trellis(L,G);
len = 2;
sig_deconv = vitdec(z,trellis,len,'trunc','hard');
end
9) Khi gii m Bit to Integer Converter
Khi ny chuyn i tng 8 bit nh phn thnh cc ch s index c gi tr t 0 255.
Code Matlab cho hm ny:
function index = Decoder(sig_deconv)
16
%Bien doi 1 chuoi nhi phan thanh so thuc
%8 bit la 1 ky tu
z = reshape(sig_deconv,8,length(sig_deconv)/8);
z = z;
index = bi2de(z,'left-msb');
end
10) Khi gii m lng t ha DPCM
thc hin gii m ho DPCM, xc nh s phn hoch vi gi tr ch s index u vo v
hm d on, d on gi tr ca tn hiu thi im hin ti. Chng ta s s dng li hm d
on dng phn m ha l: y = x(k-1). Trng hp c bit ny m = 1 c gi l iu ch
delta.
predictor = [0 1]; % Hm d on y(k)=x(k-1)
[sig, quant] = dpcmdeco(index, codebook, predictor);
sig l tn hiu tin tc c khi phc cn quant l tn hiu sai s d on.
Code Matlab cho hm:
function [sig,quants] = DeDPCM(index,codebook)
%Ham giai ma luong tu hoa DPCM
%Hm du on y(k)=x(k-1)
predictor = [0 1];
[sig,quants] = dpcmdeco(index, codebook, predictor);
end
11) Khi gin tn hiu
Tn hiu trc khi lng t ha c nn theo lut A, nn sau khi gii m lng t ha ta s
gin tn hiu c tn hiu thu c.
A = 87.6; %Thng s cho b gin tn hiu theo lut A
sig_r = compand(sig_quant,Mu,max(sig_quant),'mu/expander');
sig_quant l tn hiu sau khi gii m lng t ha DPCM
Code Matlab:
17
function [sig_r] = expander(sig_quant)
%Ham giai nen theo luat A
A = 87.6; %Thong so A cua bo giai nen
sig_r = compand(sig_quant,A,max(sig_quant),'A/expander');
end
12) Kho st t l li bit trong ng truyn
S dng hm bitter trong Matlab s so snh hai tp d liu nh phn cho trc v tr v s bit
li v t l li bit.
[number_of_errors,bit_error_rate] = biterr(sig_enc,sig_deconv);
Phng sai:
dictor_r = sum((signal_r signal).^2)/length(signal_r);
Vi signal_r l tn hiu thu c bn thu.
Code Matlab cho ton chng trnh:
>> %c vo 1 tn hiu m thanh wav c ly mu 16 bit vi tn s ly mu 8000Hz
>> [filename,pathname]=uigetfile('*.wav');
>> [signal Srate nBits] = wavread([pathname,filename]);
>> %File c c vo l BTL.wav
>> %Kho st tn hiu signal
>>l = length(signal);
>>k = mod(l,1024);%m bo di ca signal l bi ca 1024
>>signal = signal([1:l-k],1);% Loi b k phn t d
>> Mp = max(signal);
>> bits = 8;%Dng 8 bit m ha 1 mu
>> levels = 2^bits;%So mau 8 bit m ha c
>> step_size = (2*Mp)/levels;%Bc nhy cho mi khong
>> codebook = [-Mp+step_size:step_size:Mp]; % S i din cho mi khong trong phn
>>%partition
18
>> partition = [-Mp+2*step_size:step_size:Mp] %Chia tn hiu thnh 256 khong
>> %Chia tn hiu thnh cc frame, mi frame c cha 1024 mu
>> frame = reshape(signal,1024,length(signal)/1024);
>> %frame l mt ma trn c 1024 hng v length(signal)/1024 ct
>> k = length(signal)/1024;
>> %Thuc hin LTH,Nn ,m ha, iu ch , truyn, gii iu ch
>> %tng frame mt vi frame(:,j) ly tt c cc phn t ca ct th j
>> %Vng lp
>> for i = 1:k
sig_t = frame(:,i);%Chn frame th i
sig_comp = compressor(sig_t);%Thuc hien nen
[index,sig_quant] = DPCM(sig_comp,codebook,partition);
sig_enc = Encoder(index);%Chuyen cc ch s index sang chui s nh phn
sig_conv = EnConv(sig_enc);%Ma chap
sig_mod = QPSK(sig_conv);%iu ch QPSK vi pha 0
sig_noise = awgnchan(sig_mod);%a tn hiu iu ch ln knh truyn AWGN
sig_demod = DeQPSK(sig_noise);%Giai iu ch QPSK
sig_deconv = DeConv(sig_demod);%Gii m m chp
index_out = Decoder(sig_deconv);%Ch s u ra
sig_dequant = DeDPCM(index_out,codebook);% gii m lng t ha
sig_r = expander(sig_dequant);% Gii nn
%sig_r l tn hiu u ra ng vo frame th i u vo
%Tnh t l li bit trn mi frame[number_of_errors,bit_error_rate] =
biterr(sig_conv,decodmsg)
[number_of_errors,bit_error_rate] = biterr(sig_enc,sig_deconv);
19
N_er(i) = number_of_errors;
B_er(i) = bit_error_rate;
%Phng sai trong mi frame
sig_r = sig_r;
dictor(1,i) = sum((sig_r sig_t).^2)/length(sig_r);
signal_re (:,i) = sig_r;%tn hiu thu c a vo mt ct ca ma trn signal_r
end
>>%Kt thc vng lp. Tn hiu nhn c bn thu nm trong ma trn signal_r
>>signal_r = reshape(signal_re,prod(size(signal_re)),1);%Chuyn ma trn v ma trn 1 ct
>>%V N_er v B_er
>>subplot(2,1,2);plot(B_er);title(Ty le loi bit tren moi frame);xlabel(frame);ylabel(Ty le bit
loi);
>>sound(signal_r);%Pht tn hiu thu c
Kt qu:
Khi tn hiu m thanh a vo l file Test.wav
20
Source code c lu trong Script BTLFull.m. Ch cn gi lnh BTLFull chy chng trnh.
Nhn xt:
di ca tn hiu u vo cng ln th thi gian x l cng lu.
T l li bit tun theo phn b Gauss, vi t s Eb/No cng nh th t l li bit cng ln.
Vi Eb/No < 10dB th nn s dng phng php iu ch BPSK, cn 10 < Eb/No < 17 th s
dng iu ch QPSK.
Tn hiu thu c gn ging vi tn hiu pht i nhng c nhiu l khng ng k khi t s
Eb/No ln.
PHN C:KT LUN
Cng vic trong lnh vc x l m thanh l rt ln nn bi bo co khng th trnh c nhng
thiu st. Do nhm em mong nhn c s gp ca thy Hong v anh Ngha chng em
hon thin hn bi tp ln ny.
Mt ln na chng em xin cm n.