You are on page 1of 355

TS.

PHM HNG LIN


NG NGC KHOA - TRN THANH PHNG






MATLAB V
NG DNG TRONG
VIN THNG







Thng 11/2005
L0I N0I 0a0




































ii




iii

N00 L00

LI NOI AU.......................................................................................................... i
MUC LUC..............................................................................................................iii
1. M AU ........................................................................................................... 3
1.1. NHAP MOT DONG LENH........................................................................................ 3
1.2. CONG CU GIUP .................................................................................................. 5
1.3. DNG MOT LENH HAY CHNG TRNH.......................................................... 6
1.4. NG DAN............................................................................................................... 6
1.5. KHONG GIAN LAM VIEC (WORKSPACE)......................................................... 6
1.6. SAVE VA LOAD D LIEU........................................................................................ 7
2. C BAN VE CU PHAP VA BIEN..................................................................... 9
2.1. MATLAB NH LA MOT CONG CU TNH TOAN............................................... 9
2.2. PHEP GAN VA BIEN.............................................................................................. 10
3. PHEP TOAN VI VECTOR VA MA TRAN .................................................... 14
3.1. VECTOR..................................................................................................................... 14
3.1.1. DAU : VA PHAN TRCH RA T VECTOR............................................... 15
3.1.2. VECTOR COT VA PHEP CHUYEN V........................................................ 16
3.1.3. NHAN, CHIA VA SO MU CUA VECT....................................................... 17
3.2. MA TRAN................................................................................................................... 19
3.2.1. NHNG MA TRAN AC BIET...................................................................... 21
3.2.2. XAY DNG MA TRAN VA TRCH RA MOT MA TRAN CON T MOT
MA TRAN LN HN...................................................................................................... 23
3.2.3. TNH TOAN VI MA TRAN............................................................................ 27
4. O TH 2D VA 3D .......................................................................................... 32
4.1. NHNG O TH N GIAN.................................................................................. 32
4.2. MOT SO HAM C S DUNG TRONG VE O TH ................................... 34
4.3. CAC THUOC TNH KHAC CUA NG CONG 2D....................................... 37
4.4. IN AN........................................................................................................................... 38
4.5. O TH 3D.................................................................................................................. 39

iv
4.6. BE MAT O TH .......................................................................................................40
4.7. HNH ONG...............................................................................................................46
5. BIEU THC RE NHANH................................................................................ 49
5.1. CAC TOAN T LOGIC VA BIEU THC QUAN HE .........................................49
5.2. BIEU THC IEU KIEN.........................................................................................53
5.3. VONG LAP.................................................................................................................56
6. TAP LENH VA HAM....................................................................................... 60
6.1. TAP LENH M-FILE...................................................................................................60
6.2. HAM M-FILE..............................................................................................................61
6.2.1. NHNG BIEN AC BIET TRONG HAM.....................................................63
6.2.2. BIEN TOAN CUC VA BIEN CUC BO...........................................................64
6.2.3. CACH GOI HAM GIAN TIEP .........................................................................65
6.3. TAP TIN VA HAM.....................................................................................................66
7. VAN BAN........................................................................................................ 69
7.1. CHUOI KY T ............................................................................................................69
7.2. XUAT VA NHAP VAN BAN...................................................................................71
8. GIAO DIEN NGI S DUNG (GUI) ............................................................. 77
8.1. CACH LAM VIEC CUA MOT GUI ........................................................................77
8.2. TAO VA HIEN TH MOT GUI .................................................................................79
8.3. THUOC TNH CUA CAC OI TNG................................................................85
8.4. CAC THANH PHAN TAO NEN GUI.....................................................................86
8.4.1. Text Fields...........................................................................................................87
8.4.2. Edit Boxes ...........................................................................................................87
8.4.3. Frames .................................................................................................................88
8.4.4. Pushbuttons ........................................................................................................89
8.4.5. Toggle Buttons ...................................................................................................89
8.4.6. Checkboxes va Radio Buttons.......................................................................90
8.4.7. Popup Menus......................................................................................................91
8.4.8. List Boxes ............................................................................................................93
8.4.9. Sliders...................................................................................................................95
9. TN HIEU VA HE THONG .............................................................................. 91

v
9.1. BIEU DIEN MOT TN HIEU TRONG MATLAB................................................. 91
9.2. TAO TN HIEU: VECTOR THI GIAN................................................................ 91
9.3. LAM VIEC VI CAC FILE D LIEU................................................................... 94
9.4. PHAN TCH VA THIET KE CAC BO LOC ........................................................ 94
9.5. CAC HAM KHAC E THC HIEN LOC............................................................ 97
9.5.1. THC HIEN BANG LOC A TOC O (MULTIRATE FILTER BANK) 97
9.5.2. KH MEO PHA CHO BO LOC IIR................................................................ 98
9.5.3. THC HIEN BO LOC TRONG MIEN TAN SO .......................................... 99
9.6. AP NG XUNG.................................................................................................... 100
9.7. AP NG TAN SO ................................................................................................ 100
9.7.1. TRONG MIEN SO ........................................................................................... 100
9.7.2. TRONG MIEN ANALOG................................................................................ 101
9.7.3. AP NG BIEN O VA AP NG PHA ................................................. 101
9.7.4. THI GIAN TRE .............................................................................................. 102
9.8. GIAN O CC ZERO........................................................................................ 103
9.9. CAC MO HNH HE THONG TUYEN TNH...................................................... 104
9.9.1. CAC MO HNH HE THONG RI RAC THEO THI GIAN................... 104
9.9.2. CAC MO HNH HE THONG LIEN TUC THEO THI GIAN................. 108
9.9.3. CAC PHEP BIEN OI HE THONG TUYEN TNH................................. 108
9.10. BIEN OI FOURIER RI RAC........................................................................... 109
10. THIET KE CAC BO LOC ............................................................................. 117
10.1. CAC CH TIEU THIET KE BO LOC.................................................................. 117
10.2. THIET KE BO LOC IIR......................................................................................... 118
10.2.1. THIET KE CAC BO LOC IIR CO IEN DA TREN CAC NGUYEN
MAU ANALOG............................................................................................................... 119
10.2.2. THIET KE TRC TIEP CAC BO LOC IIR TRONG MIEN SO ............. 126
10.2.3. THIET KE BO LOC BUTTERWORTH TONG QUAT............................. 127
10.2.4. PHNG PHAP MO HNH THONG SO ................................................... 128
10.3. THIET KE BO LOC FIR........................................................................................ 129
10.3.1. CAC BO LOC CO PHA TUYEN TNH....................................................... 129
10.3.2. PHNG PHAP CA SO (WINDOWING)............................................... 130

vi
10.3.3. THIET KE BO LOC FIR NHIEU DAI TAN VI CAC DAI CHUYEN
TIEP 133
10.3.4. THIET KE BO LOC FIR VI GIAI THUAT BNH PHNG CC TIEU
CO GII HAN (CLS CONSTRAINED LEAST SQUARE) ................................136
10.3.5. THIET KE BO LOC FIR CO AP NG TAN SO TUY CHON.............139
10.4. THC HIEN BO LOC ............................................................................................141
11. C BAN VE X LY ANH SO ....................................................................... 147
11.1. BIEU DIEN ANH VA XUAT NHAP ANH...........................................................147
11.1.1. CAC KIEU HNH ANH TRONG MATLAB.................................................147
11.1.2. OC VA GHI CAC D LIEU ANH..............................................................150
11.1.3. CHUYEN OI GIA CAC KIEU D LIEU................................................151
11.1.4. CAC PHEP TOAN SO HOC C BAN OI VI D LIEU ANH..........152
11.1.5. CAC HAM HIEN TH HNH ANH TRONG MATLAB..............................155
11.2. CAC PHEP BIEN OI HNH HOC.....................................................................156
11.2.1. PHEP NOI SUY ANH.....................................................................................156
11.2.2. THAY OI KCH THC ANH....................................................................156
11.2.3. PHEP QUAY ANH...........................................................................................157
11.2.4. TRCH XUAT ANH..........................................................................................158
11.2.5. THC HIEN PHEP BIEN OI HNH HOC TONG QUAT .....................158
11.3. CAC PHEP BIEN OI ANH.................................................................................160
11.3.1. BIEN OI FOURIER.......................................................................................160
11.3.2. BIEN OI COSINE RI RAC.......................................................................163
11.3.3. BIEN OI RADON...........................................................................................165
11.3.4. PHEP BIEN OI FAN-BEAM.......................................................................168
12. NANG CAO CHAT LNG ANH................................................................. 176
12.1. PHNG PHAP BIEN OI MC XAM.............................................................176
12.2. CAN BANG HISTOGRAM....................................................................................180
12.2.1. TAO VA VE BIEU O HISTOGRAM..........................................................180
12.2.2. CAN BANG HISTOGRAM.............................................................................181
12.3. LOC ANH..................................................................................................................186
12.3.1. LOC TUYEN TNH ..........................................................................................187
12.3.2. LOC PHI TUYEN.............................................................................................191

vii
12.3.3. LOC THCH NGHI........................................................................................... 194
13. NEN ANH SO ............................................................................................... 199
13.1. PHNG PHAP MA HOA X LY KHOI BTC (BLOCK TRUNCATING
CODING) .............................................................................................................................. 199
13.2. NEN TON HAO DA VAO DCT ......................................................................... 201
13.3. NEN ANH BANG GIAI THUAT PHAN TCH TR RIENG (SVD)................ 205
13.3.1. GII THIEU PHNG PHAP SVD............................................................ 205
13.3.2. NG DUNG SVD E NEN ANH SO ......................................................... 206
14. MA HOA NGUON......................................................................................... 203
14.1. TAO MOT NGUON TN HIEU.............................................................................. 203
14.2. LNG T HOA TN HIEU................................................................................. 206
14.3. TOI U HOA CAC THONG SO CUA QUA TRNH LNG T ................. 208
14.4. IEU CHE MA XUNG VI SAI DPCM (DIFFERENTIAL PULSE CODE
MODULATION) ................................................................................................................... 209
14.5. TOI U HOA CAC THONG SO CUA QUA TRNH MA HOA DPCM......... 210
14.6. NEN VA GIAN TN HIEU...................................................................................... 211
14.7. MA HOA HUFFMAN.............................................................................................. 213
14.8. MA HOA SO HOC (ARITHMETIC CODING)................................................... 215
15. TRUYEN DAN BASEBAND VA PASSBAND.............................................. 219
15.1. IEU CHE TNG T ......................................................................................... 219
15.2. IEU CHE SO ......................................................................................................... 221
16. KENH TRUYEN VA ANH GIA CHAT LNG KENH TRUYEN............... 231
16.1. KENH TRUYEN AWGN (ADDITIVE WHITE GAUSSIAN NOISE) ............. 231
16.2. KENH TRUYEN FADING..................................................................................... 235
16.3. KENH TRUYEN AO BIT NH PHAN.............................................................. 239
16.4. ANH GIA CHAT LNG THONG QUA MO PHONG (PHNG PHAP
MONTE CARLO) ................................................................................................................ 240
16.5. TNH XAC SUAT LOI TREN LY THUYET....................................................... 243
16.6. MOT SO CONG CU HO TR E VE O TH BER...................................... 245
16.7. GIAN O MAT (EYE DIAGRAM) ....................................................................... 247
16.8. O TH PHAN BO (SCATTER PLOT) .............................................................. 249

viii
16.9. ANH GIA CHAT LNG DUNG KY THUAT SEMIANALYTIC (BAN
PHAN TCH) ........................................................................................................................250
17. MA HOA KENH TRUYEN ............................................................................ 256
17.1. MA KHOI...................................................................................................................256
17.1.1. BIEU DIEN MOT PHAN T TRONG TRNG GALOIS......................257
17.1.2. MA REED-SOLOMON....................................................................................258
17.1.3. MA BCH.............................................................................................................262
17.1.4. MA KHOI TUYEN TNH.................................................................................264
17.2. MA CHAP.................................................................................................................269
17.2.1. DANG A THC CUA BO MA HOA CHAP.............................................270
17.2.2. DANG CAU TRUC TRELLIS CUA BO MA HOA CHAP .......................271
17.2.3. MA HOA VA GIAI MA MA CHAP................................................................273
18. CAC BO CAN BANG ................................................................................... 281
18.1. CAC BO CAN BANG THCH NGHI ...................................................................281
18.1.1. BO CAN BANG KHOANG CACH KY HIEU.............................................281
18.1.2. BO CAN BANG NH KHOANG TY LE ....................................................282
18.1.3. BO CAN BANG HOI TIEP QUYET NH.................................................283
18.2. CAC GIAI THUAT CAN BANG THCH NGHI..................................................284
18.2.1. GIAI THUAT BNH PHNG TRUNG BNH CC TIEU (LMS
LEAST MEAN SQUARE).............................................................................................284
18.2.2. GIAI THUAT LMS CO DAU (SIGN LMS) ..................................................285
18.2.3. GIAI THUAT LMS CHUAN HOA (NORMALIZED LMS)........................285
18.2.4. GIAI THUAT LMS CO BC NHAY THAY OI (VARIABLE-STEP-
SIZE LMS) .......................................................................................................................285
18.2.5. GIAI THUAT BNH PHNG CC TIEU HOI QUY (RLS
RECURSIVE LEAST SQUARE) ................................................................................285
18.2.6. GIAI THUAT MODULUS HANG SO (CONSTANT MODULUS
ALGORITHM) .................................................................................................................286
18.3. S DUNG CAC BO CAN BANG THCH NGHI TRONG MATLAB............286
18.3.1. XAC NH GIAI THUAT THCH NGHI ......................................................286
18.3.2. XAY DNG OI TNG MO TA BO CAN BANG THCH NGHI .......288
18.3.3. TRUY XUAT VA HIEU CHNH CAC AC TNH CUA BO CAN BANG
THCH NGHI ...................................................................................................................289

ix
18.3.4. S DUNG BO CAN BANG THCH NGHI ................................................. 289
18.4. CAC BO CAN BANG MLSE ............................................................................... 295
PHU LUC........................................................................................................... 303
TAI LIEU THAM KHAO..................................................................................... 324























M u

3
Chng 1
I. N0 0a0

MATLAB l mt cng c tnh ton ton hc. MATLAB c th c s dng tnh ton, n
cng cho php chng ta v cc biu , th theo nhiu cch khc nhau. Ging nh mt
chng trnh phn mm, chng ta c th to, thc thi v lu mt dy cc lnh my tnh c
th chy t ng. Cui cng, MATLAB cng c th c coi nh l mt ngn ng lp trnh.
Tm li, nh l mt mi trng dng lp trnh hay tnh ton, MATLAB c thit k
lm vic vi nhng tp d liu c bit chng hn nh ma trn, vector, hnh nh.
Trong mi trng Windows, sau khi ci MATLAB biu tng ca n s xut hin trn mn
hnh ca my tnh, chng ta c th khi ng MATLAB bng cch double click vo biu
tng ca n. Trong khi chy, ty theo yu cu ca ngi s dng, MATLAB s to ra mt
hoc nhiu ca s trn mn hnh. Ca s quan trng nht l ca s lnh (Command Window),
y l ni chng ta giao tip (tng tc) vi MATLAB v cng l ni chng ta nhp vo cc
lnh v MATLAB s cho ra cc kt qu. Chui >> l du nhc ca chng trnh MATLAB.
Khi MATLAB hot ng, con tr chut s xut hin sau du nhc, lc ny MATLAB ang
ch ngi s dng nhp lnh vo. Sau khi nhp lnh v nhn enter, MATLAB p ng li
bng cch in ra cc dng kt qu trong ca s lnh hay to ra mt ca s hnh (Figure
Window). thot khi chng trnh MATLAB chng ta s dng lnh exit hoc quit.
I.I. Nh4F M0I 00N0 LNh
Bng 1.1: Tng quan gia cc php ton v lnh.
Php ton Lnh MATLAB
a + b a + b
a b a b
ab a*b
a/b a/b hay b\a
x
b
x^b
x
sqrt(x) hay x^0.5
x
abs(x)
pi
4.10
3
4e3 hay 4*10^3
i i hay j
3 4i 3- 4*i hay 3 4*j
e, e
x
exp(1), exp(x)
lnx, logx log(x), log10(x)
sinx, arctanx, sin(x), atan(x),
MATLAB l mt h thng tng tc, lnh s c thc thi ngay lp tc khi nhn Enter.
Nhng kt qu ca mi lnh, nu c yu cu, s c xut hin trn mn hnh. Tuy nhin,
mt lnh ch c thc thi nu lnh c nhp vo ng c php. Bng 1.1 l danh sch cc
M u

4
php ton c bn v lnh tng ng ca chng c s dng trong chng trnh MATLAB
gii nhng phng trnh ton hc (a, b v x l nhng s).
Sau y l mt s lu nhp vo mt dng lnh ng:
Nhng lnh trong MATLAB c thc thi ngay lp tc khi nhn Enter. Kt qu ca mi
lnh s c hin th trn mn hnh ngay lp tc. Th thi hnh vi cc lnh sau y:
>> 3 + 7.5
>> 18/4
>> 3 * 7
Lu rng khong trng trong MATLAB l khng quan trng.
Kt qu ca php tnh cui cng s c gn cho bin ans.
>> 14/4
ans =
3.5000
>> ans^(-6)
ans =
5.4399e-04
5.4399e-04 l mt cch th hin ca 5.4399*10
-4
.
Lu rng ans lun c cp nht gi tr bi kt qu ca php tnh cui cng.
Chng ta cng c th nh ngha nhng bin mi. Theo di gi tr c lu trong bin a v
b:
>> a = 14/4
a =
3.5000
>> b = a^(-6)
b =
5.4399e-04
Khi mt lnh c kt thc bi du ; th kt qu ca n s khng c xut hin trn
mn hnh. Kim nghim s khc bit gia hai biu thc sau:
>> 3 + 7.5
>> 3 + 7.5;
c th thc thi nhiu lnh cng mt lc, cc lnh cn c cch nhau bi du , (hin
th kt qu) hay cch nhau bi du ; (khng hin th kt qu)
>> sin (pi/4), cos(pi); sin(0)
ans =
0.7071
ans =
0
Lu rng trong cc kt qu trn gi tr ca cos(pi) khng c hin th.
M u

5
Vi mi gi tr MATLAB mc nh s hin th dng c 5 ch s. Lnh format long s
tng s ch s hin th ln 15 v lnh format short s gim tr v 5.
>> 312/56
ans =
5.5714
>> format long
>> 312/56
ans =
5.57142857142857
Kt qu ca mi lnh c th cha vi dng trng, iu ny c th c khc phc bi lnh
format compact. Ngc li lnh format loose s thm vo nhng dng trng.
nhp vo mt biu thc qu di ta s dng du xung hng
>> sin(1) + sin(2) - sin(3) + sin(4) - sin(5) + sin(6) -
sin(8) + sin(9) - sin(10) + sin(11) - sin(12)
MATLAB phn bit ch thng v ch hoa.
Tt c cc k t t sau du % n cui dng ch c tc dng ghi ch.
>> sin(3.14159) % gn bng sin(pi)
Ni dung ca lnh thc thi cng c th c ly li bng phm . thay i ni dung
ca lnh ta s dng cc phm mi tn v di chuyn con tr n v tr mong mun v
sa lnh. Trong trng hp lnh qu di, Ctrl-a v Ctrl-e c s dng di chuyn nhanh
con tr n v tr u v cui ca lnh.
gi li lnh thc thi bt u bng k t, v d c, ta nhn phm sau khi nhn phm
c. iu ny cng ng vi mt cm t, v d, cos theo sau bi phm s tm nhng lnh
thc thi bt u bi cos.
Lu : nn kt thc mi lnh bng du ; trnh trng hp xut ra mn hnh mt kt qu
qu ln, v d xut ra mn hnh mt ma trn 1000x1000.
I.2. 00N0 00 0I0F 00
MATLAB cung cp mt cng c gip trc tip. Lnh help l cch n gin nht c
gip . bit chi tit hn v lnh help:
>> help help
Nu bit tn mc hay tn mt lnh c th no , ta c th s dng lnh help mt cch
c th hn, v d:
>> help ops
cho ta bit thng tin v cc ton t v cc k t c bit trong MATLAB. Khi s dng lnh
help tn mc m bn mun gip phi chnh xc v ng. Lnh lookfor hu dng hn
trong trng hp bn khng bit chnh xc tn ca lnh hay mc. V d:
>> lookfor inverse
th hin danh sch cc lnh v mt m t ngn gn ca cc lnh m trong phn gip c t
inverse. Bn cng c th s dng mt tn khng hon chnh, v d lookfor inv. Bn cnh
lnh help v lnh lookfor cn c lnh helpwin, lnh helpwin m ra mt ca s mi th hin
th mc cc mc gip .
M u

6
# Bi tp 1-1.
S dng lnh help hoc lookfor tm kim thng tin cho cc cu hi sau:
Hy tm lnh th hin php ton hm cosin o hay cos
-1
.
C phi MATLAB c mt hm ton hc dng tnh c s chung ln nht (the greatest
common divisor)?
Tm thng tin v hm logarithms.
I.3. 00N0 M0I LNh h4 0h00N0 I8Nh
Thnh thong chng s gp mt li bn trong lnh hay chng trnh ca mnh, li ny c th
lm cho lnh hay chng trnh khng th dng li. dng lnh hay chng trnh ny li ta
nhn t hp phm Ctrl-C hoc Ctrl-Break. i khi chng trnh dng li ta phi lm
ng tc ny vi ln v phi ch trong vi pht.
I.4. 000N0 04N
Trong MATLAB, lnh hay chng trnh c th cha m-flie, cc file ny ch l cc file text v
c phn m rng l .m. Cc file ny phi c t trong cc th mc m MATLAB thy
c. Danh sch cc th mc ny c th c lit k bi lnh path. Mt trong cc th mc
m MATLAB lun nhn thy l th mc lm vic hin ti, th mc ny c th c xc nh
bi lnh pwd. S dng hm path, addpath v rmpath thm hay xa cc th mc ng
dn. Cng vic ny cng c th c thc hin t thanh cng c: File Set path
# Bi tp 1-2.
G lnh path kim tra cc th mc c trong ng dn. Cng mt th mc bt k vo
trong ng dn.
I.5. Kh0N0 0I4N L4M I0 {w08K5F40)
Khi lm vic trong ca s lnh (Command Window), MATLAB s nh tt c cc lnh v tt
c cc bin m chng ta to ra. Cc lnh v bin ny c hin th trong workspace. Chng
ta c th d dng gi li cc lnh ny khi cn, v d gi lnh trc ta s dng phm . Cc
gi tr bin c th c kim tra li bi lnh who, lnh who s cho danh sch cc bin c
trong workspace. V lnh whos th hin c tn, kch thc v lp ca bin. V d, gi s rng
bn thc thi tt c cc lnh trong phn 1, khi thc thi lnh who bn s c c cc thng
tin nh sau:
>> who
Your variables are:
a ans b x
Lnh clear <tn bin> s xa bin ny khi workspace, clear hay clear all s xa tt c cc
gi tr bin. Vic xa tt c cc gi tr bin l cn thit khi ta bt u mt chng trnh hay
mt bi tp mi
>> clear a x
>> who
Your variables are:
ans b
M u

7
I.6. 54 4 L040 00 LI0
Cch d nht save hay load cc bin l s dng thanh cng c, chn File v sau chn
Save Workspace as hay Load Workspace.MATLAB cng c lnh save d liu vo
file hoc load d liu ra t file.
Lnh Save s lu cc bin trong workspace mt file nh phn hoc file ASCII, file nh phn t
ng c phn rng .mat.
# Bi tp 1-3.
Hc cch thc thi lnh save.
>> s1 = sin(pi/4);
>> c1 = cos(pi/4); c2 = cos(pi/2);
>> str = hello word; % y l mt chuI k t.
>> save % lu cc bin dng nh phn vo
file matlab.mat.
>> save numdata s1, c1 % lu hai bin s1 v c1 vo file
numdata.mat
>> save strdata str % lu chui str vo file strdata
>> save allcos.dat c* -ascii % lu 2 bin c1 v c2 di dng ascci
vo file allcos.dat
Lnh load cho php chp cc bin v gi tr ca chng t file vo workspace. C php ging
nh lnh save. Lnh load c s dng khi chng ta cn np cc gi tr c khi to
trc vo trong chng trnh.
# Bi tp 1-4.
Gi s rng chng ta lm bi tp trc, thc thi cc lnh load sau y. Trc mi lnh
load, s dng lnh clear all xa workspace v sau s dng lnh who kim tra gi tr
cc bin c trong workspace.
>> load % load tt c cc bin trong file matlab.mat
>> load data s1 c1 % ch load cc bin c ch nh trong file
data.mat
>> load strdata % load tt c cc bin trong file strdata.mat
Ta cng c th c c file ASCII, l file cha mt dy cc bin ring r. Chng hn nh
file cha cc ch thch c bt u t k t %. Kt qu c t vo bin c cng tn vi
file ASCII (ngoi tr phn m rng).
>> load allcos.dat % load d liu t file allcos vo bin allcos
>> who % lit k tt c cc bin c trong workspace
M u

8
Danh sch cc lnh v hm c gii thiu trong chng 1
addpath Thm ng dn vo danh sch cc ng dn ca MATLAB
clear Xo khng gian lm vic (workspace)
exit Thot khi MATLAB
format nh dng d liu hin th
help Xem thng tin gip v mt hm no
helpwin M mt ca s hng dn mi
load Ti d liu t file .mat vo khng gian lm vic hin ti
lookfor Tm kim cc hm MATLAB nh t kho cho trc
path Lit k cc ng dn m MATLAB c th thy c
pwd Xc nh th mc hin hnh ca MATLAB
quit Thot khi MATLAB
rmpath Xo mt ng dn khi danh sch cc ng dn ca MATLAB
save Lu cc bin d liu vo file .mat
who Lit k danh sch cc bin c trong workspace
whos Lit k cc bin c trong workspace: gm tn, kch thc v lp ca bin



C bn v c php v bin

9
Chng 2
2. 00 8aN 9 00 Na 9a 8IN

2.I. M4IL48 Nh0 L4 M0I 00N0 00 INh I04N
Cc kiu s c bn c s dng trong MATLAB l s nguyn, s thc v s phc.
MATLAB cng c th biu din cc s non-number. C hai dng s non-number trong
MATLAB: Inf, l s v cc dng c to ra bi php chia 1/0 v NaN, l s c to ra t
cc php ton chng hn nh 0/0 hay - .
Nh chng ta bit, MATLAB l mt cng c thc s hu dng i vi cc php tnh.
Chng hn khi nhp vo lnh:
>> (23*17)/7
Kt qu s l
ans =
55.8571
MATLAB c su php ton s hc c bn: +, -, *, / hoc \ v ^ (s m).
Lu rng hai php ton chia tri v chia phi l khc nhau
>> 19/3 % 19/3
ans =
6.3333
>> 19\3, 3/19 % 3/19
ans =
0.1579
ans =
0.1579
Cc hm lng gic v cc hm m logarith cng c s dng trong MATLAB. S dng
help elfun lit k danh sch cc hm c bn c trong MATLAB.
# Bi tp 2-1.
Th tnh ton cc biu thc sau y bng tay v sau s dng MATLAB kim tra li kt
qu. Lu s khc nhau gia php chia tri v phi. S dng lnh help c hng dn v
cch s dng cc lnh mi, chng hn nh cc lnh lm trn s: round, floor, ceil,
2/2*3 3^2/4
8*5\4 3^2^3
8*(5\4) 2 + round(6/9 + 3*2)/2
7 5*4\9 2 + floor(6/9 + 3*2)/2
6 2/5 + 7^2 1 2 + ceil(6/9 + 3*2)/2
10/2\5 3 + 2*4 x = pi/3, x = x 1, x = x + 5, x=abs(x)/x
C bn v c php v bin

10
# Bi tp 2-2.
S dng cc lnh nh dng MATLAB khng xut hin dng trng trong kt qu v kt
qu c xut ra dng s c 15 ch s. Thc hin cc lnh:
>> pi
>> sin(pi)
sau s dng lnh cc lnh format khi phc li nh dng chun.
2.2. FhF 04N 4 8IN
Cc php ton lin quan n s phc c thc thi mt cch d dng bi MATLAB.
# Bi tp 2-3.
Cho hai s phc bt k, v d 3 + 2i v 5 7i. Hy thc hin cc php ton cng, tr,
nhn v chia hai s phc ny vi nhau.
Trong bi tp ny vi 4 php tnh th cc s phc phi c nhp 4 ln, n gin vic ny
ta gn mi s phc cho mt bin. Kt qu ca bi tp ny s l:
>> z = -3 + 2*i;
>> w = 5 7*i;
>> y1 = z + w;
>> y2 = z w;
>> y3 = z*w;
>> y4 = z/w; y5 = w\z;
Khng ging nh cc ngn ng lp trnh thng thng, trong MATLAB ta khng cn phi
khai bo bin. Mt bin s c t ng to ra trong qu trnh gn d liu cho bin . Mi
gi tr khi mi to ra th c mc nh c kiu s l double, kiu s 32 bit. Chng ta c th
s dng lnh single chuyn kiu s t dng double sang dng single, l kiu s 16 bit.
>> a = single(a);
Lnh single nn c s dng trong trng hp cn x l nhng ma trn c kch thc ln.
Tuy nhin trong trng hp ch c vi gi tr c s dng th ta nn chuyn qua dng double
c c s chnh xc hn. S dng lnh double thc hin php bin i ny.
>> a = double(a);
Lu rng mt bin cha c nh ngha th khng c s dng gn cho mt bin khc
>> clear x;
>> f = x^2 + 4*sin(x);
on lnh trn s khng cho ra mt kt qu ng bi v gi tr ca x cha c khi to.
Biu thc trn c th sa li bng cch gn mt gi tr bt k cho bin x.
>> x = pi;
>> f = x^2 + 4*sin(x);
Trong MATLAB, tn ca mt bin phi c bt u bi mt k t ch, c th l ch thng
hay ch in hoa, v theo sau bi cc k t ch, cc k t s s hoc du gch chn. MATLAB
ch c th phn bit c cc bin vi nhau bi ti a 31 k t u tin ca tn bin.

C bn v c php v bin

11
# Bi tp 2-4.
Sau y l v d v mt vi kiu bin s khc nhau ca MATLAB. Chng ta s c hc k
hn v cc lnh ny phn sau.
>> this_is_my_very_simple_variable_today = 5 % iu g s xy ra?
>> 2t = 8; % iu g s xy ra?
>> M = [1 2; 3 4; 5 6]; % mt ma trn
>> c = E % mt k t
>> str = Hello word; % mt chui
>> m = [J,o,h,n] % m l ci g?
S dng lnh who kim tra thng tin v cc bin. S dng lnh clear <tn bin> xo
cc bin khi workspace.
Trong MATLAB c nhng s c mc nh to ra v c xem nh l cc hng s, v d
nh pi, eps, hay i, mt s cc gi tr khc c cho trong bng 2.1.
Bng 2.1: Mt s bin mc nh trong MATLAB
Tn bin Gi tr / ngha
ans Tn bin mc nh dng lu kt qu ca php tnh
cui cng.
pi = 3.14159
eps S dng nh nht
inf M t s dng
nan hay NaN M t mt not-a-number, v d 0/0
i hay j
1 = = j i
nargin/nargout S i s input/output ca hm
realmin/realmax S thc dng nh nht/ln nht c th
Cc bin c to ra bng cch gn gi tr cho chng. Mt cch khc l gn gi tr ca bin
ny cho bin khc.
>> b = 10.5
>> a = b
Theo cch ny bin a t ng c to ra, nu bin a tn ti th gi tr c ca n s b
chng ln bi mt gi tr mi.
Mt bin cng c th c to ra bi kt qu ca mt php ton:
>> a = 10.5;
>> c = a^2 + sin(pi*a)/4;
Kt qu tr v ca mt hm c th c s dng gn v to ra cc bin mi. V d, nu
min l tn ca mt hm (tm hiu thm chc nng v cch s dng ca hm min bi lnh
help min) th:
>> b = 5; c = 7;
C bn v c php v bin

12
>> a = min(b,c); % gi tr nh nht ca b v c
s gi mt hm vi hai bin b v c l hai i s. Kt qu ca hm ny (gi tr tr v ca hm)
s c gn cho bin a.
Lu : ta khng c s dng tn bin trng vi tn hm. kim tra mt tn no c phi
tn hm hay khng ta s dng lnh help <tn> xc nh. Nu kt qu l cc hng dn
lin quan n hm th tn c s dng lm tn hm.
V d, trong trng hp thc hin cc vng lp lin quan n s phc, ta khng s dng bin
i hoc j lm bin m bi v cc gi tr ny c s dng lm s phc.
C bn v c php v bin

13
Danh sch cc lnh v hm c gii thiu trong chng 2
ceil Lm trn ln
double Chuyn sang kiu s chiu di 32 bit
floor Lm trn xung
format nh dng cc d liu s
min Tr v gi tr nh nht ca hai hay nhiu s
round Lm trn v s nguyn gn nht
single Chuyn sang kiu s chiu di 16 bit
who Lit k cc bin c trong workspace

Php ton vi vector v ma trn

14
Chng 3
3. N T0aN 90I 90T08 9a Na T8aN

Trong Matlab, tt c cc i tng u c xem nh l mt ma trn hay cn c gi l
mng. Mt ch s c xem nh l mt ma trn 1x1 v ma trn ch c mt hng hay mt ct
c gi l vector.
3.I. 0I08
Trong qu trnh khi to, cc thnh phn ca mt vector c phn bit vi nhau bi khong
trng hoc du ,. Chiu di ca mt vector l s thnh phn tn ti trong n (lnh length
c s dng xc nh chiu di ca vector). Tt c cc thnh phn ca mt vector phi
c t trong du []:
>> v = [-1 sin(3) 7]
v =
-1.0000 0.1411 7.0000
>> length(v)
ans =
3
Ta c th p dng nhiu php tnh c bn khc nhau i vi vector. Mt vector c th nhn
vi mt h s hoc cng/tr vi mt vector khc c cng chiu di. Trong php cng/tr,
tng thnh phn ca hai vector cng/ tr vi nhau v cho ra mt vector c cng chiu di. Ta
cng c th s dng php gn i vi vector.
>> v = [-1 2 7];
>> w = [2 3 4];
>> z = v + w % cng tng thnh phn vi nhau
z =
1 5 11
>> vv = v + 2 % 2 c cng vo tng thnh phn ca vector v
vv =
1 4 9
>> t = [2*v, -w]
ans =
-2 4 14 -2 -3 -4
Mi thnh phn ca vector cng c th c s dng mt cch ring bit:
>> v(2) = -1 % thay I gi tr thnh phn th 2 ca v
v =
-1 -1 7
>> w(2) % hin th gi tr thnh phn th 2 ca w
ans = 3
Php ton vi vector v ma trn

15
3.I.I. 040 : 4 Fh4N I80h 84 I0 0I08
Du : l mt ton t quan trng, n c s dng x l vi cc vector hng (xem thm
bng 3.1 hoc s dng lnh help colon c nhiu thng tin hn v ton t ny):
Bng 3.1: Nhng thnh phn con ca ma trn
Lnh Kt qu
A(i, j) A
ij
A(:, j) Ct th j ca A
A(i, :) Hng th i ca A
A(k:l,m:n) Ma trn con ca ma trn A
v(i:j) Mt phn ca vector v
>> 2:5
ans =
2 3 4 5
>> -2:3
ans =
-2 -1 0 1 2 3
Mt cch tng qut, lnh c cu trc first:step:last s to ra mt vector c thnh phn u
tin bng first, gi tr ca cc thnh phn tip theo c tng bi step v thnh phn cui
cng c gi tr last:
>> 0.2:0.5:2.4
ans =
0.2000 0.7000 1.2000 1.7000 2.2000
>> -3:3:10
ans =
-3 0 3 6 9
>> 1.5:-0.5:-0.5 % step cng c th l s m
ans =
1.5000 1.0000 0.5000 0 -0.5000
Ton t : cng c s dng trch ra mt s thnh phn t mt vector.
>> r = [-1:2:6, 2, 3, -2] % -1:2:6 -1 1 3 5
r =
-1 1 3 5 2 3 -2
>> r(3:6) % cc gi tr ca r t 3 n 6
ans =
3 5 2 3
>> r(1:2:5) % ly cc v tr 1, 3, 5
ans =
Php ton vi vector v ma trn

16
-1 3 2
>> r(5:-1:2) % iu g s xy ra?
3.I.2. 0I08 00I 4 FhF 0h0N j
i vi mt vector ct, cc thnh phn ca n phi c phn bit vi nhau bi du ; hoc
xung dng:
>> z = [1
7
7];
z =
1
7
7
>> u = [-1; 3; 5]
u =
-1
3
5
Nhng php ton p dng vi vector hng cng c th c s dng vector ct. Tuy nhin,
chng ta khng th cng mt vector hng vi mt vector ct. thc hin c php tnh
ny, ta cn s dng ton t chuyn v, ton t ny s chuyn mt vector hng thnh mt
vector ct v ngc li:
>> u' % u l vector ct, u s l vector hng
ans =
-1 3 5
>> v = [-1 2 7]; % v l mt vector hng
>> u + v % khng th cng mt vector ct v vector hng
??? Error using ==> +
Matrix dimensions must agree.
>> u' + v
ans =
-2 5 12
>> u + v'
ans =
-2
5
12
Nu z l mt vector phc th z s cho ra mt chuyn v lin hp ca z, ngha l tng thnh
phn ca z l lin hp phc vi cc thnh phn trong z. Trong trng hp cn chuyn v theo
kiu thng thng (cc s phc c gi nguyn gi tr) ta phi s dng ton t .
Php ton vi vector v ma trn

17
>> z = [1+2i, -1+i]
z =
1.0000 + 2.0000i -1.0000 + 1.0000i
>> z' % chuyn v lin hp
ans =
1.0000 - 2.0000i
-1.0000 - 1.0000i
>> z.' % php chuyn v thng thng
ans =
1.0000 + 2.0000i
-1.0000 + 1.0000i
3.I.3. Nh4N, 0hI4 4 50 M0 004 0I0
Chng ta c th nhn hai vector c cng chiu di,

=
i
i i
T
y x y x theo cch n gin:
>> u = [-1; 3; 5] % mt vector ct
>> v = [-1; 2; 7] % mt vector ct
>> u * v % khng th nhn 2 vector ct vi nhau
??? Error using ==> *
Inner matrix dimensions must agree.
>> u' * v % kt qu nhn 2 vector
ans =
42
Mt cch khc nhn hai vector l s dng ton t .*. Vi ton t ny cc thnh phn
tng ng ca hai vector s c nhn vi nhau. Cho hai vector x v y c cng chiu di, tch
.* ca hai vector l [x
1
y
1
, x
2
y
2
, , x
n
y
n
]:
>> u .* v % nhn tng thnh phn tng ng
1
6
35
>> sum(u.*v) % tng ng php nhn 2 vector
ans =
42
>> z = [4 3 1]; % z l vector hng
>> sum(u'.*z) % php nhn 2 vector
ans =
10
>> u'*z' % tch 2 vector
ans =
Php ton vi vector v ma trn

18
10
V d 3-1:
>> x = 1:0.5:4;
>> y = sqrt(x) .* cos(x)
y =
0.5403 0.0866 -0.5885 -1.2667 -1.7147 -1.7520 -1.3073
Trong ton hc khng tn ti php chia hai ma trn cho nhau. Tuy nhin, trong MATLAB
ton t ./ c nh ngha nh l php chia tng thnh phn tng ng ca hai ma trn vi
nhau. Kt qu cng l mt ma trn c cng kch thc:
>> x = 2:2:10
x =
2 4 6 8 10
>> y = 6:10
y =
6 7 8 9 10
>> x./y
ans =
0.3333 0.5714 0.7500 0.8889 1.0000
>> z = -1:3
z =
-1 0 1 2 3
>> x./z % 4/0, kt qu l Inf
Warning: Divide by zero.
ans =
-2.0000 Inf 6.0000 4.0000 3.3333
>> z./z % 0/0, kt qu l NaN
Warning: Divide by zero.
ans =
1 NaN 1 1 1
Ton t ./ cng c th c s dng chia mt s cho mt vector:
>> x=1:5; 2/x % chng trnh bo li
??? Error using ==> /
Matrix dimensions must agree.
>> 2./x % php tnh ng
ans =
2.0000 1.0000 0.6667 0.5000 0.4000
# Bi tp 3-1.
Php ton vi vector v ma trn

19
lm quen vi cc php ton v vector hng v vector ct, hy thc hin cc vn sau
y:
To mt vector bao gm nhng s l trong khong t 21 n 47.
Cho x = [4 5 9 6].
- Tr i 3 mi thnh phn ca vector
- Cng 11 vo cc thnh phn c v tr l
- Tnh cn bc 2 ca mi thnh phn
- M 3 mi thnh phn
To mt vector vi cc thnh phn
- 2, 4, 6, 8, , 20
- 9, 7, 5, , -3, -5
- 1, , 1/3, , 1/5, , 1/10
- 0, , 2/3, , 4/5, , 9/10
To mt vector vi cc thnh phn:
1 2
) 1 (

=
n
x
n
n
vi n = 1, 2, 3, , 100. Tm tng 50 thnh
phn u tin ca vector ny.
Cho vector t bt k, vit biu thc MATLAB tnh
- ln(2 + t + t
2
)
- cos(t)
2
sin(t)
2

- e
t
(1 + cos(3t))
- tan
-1
(t)
Kim tra vi t = 1:0.2:2
Cho x = [1 + 3i, 2 2i] l mt vector phc. Kim tra cc biu thc sau:
- x - x*x
- x. - x*x.
# Bi tp 3-2.
Cho x = [2 1 3 7 9 4 6], hy gii thch cc lnh sau y (x(end) l thnh phn cui
cng ca vector x)
- x(3) - x(6:-2:1)
- x(1:7) - x(end-2:-3:2)
- x(1:end) - sum(x)
- x(1:end-1) - mean(x)
- x(2:2:6) - min(x)
3.2. M4 I84N
Vector hng v vector ct l nhng trng hp c bit ca ma trn. Ma trn nxk l mt mng
gm c n hng v k ct. nh ngha mt ma trn trong MATLAB tng t nh nh ngha
Php ton vi vector v ma trn

20
mt vector. Cc thnh phn ca hng c phn bit vi nhau bi du , hoc khong trng,
cn cc hng c phn bit bi du ;. V d ma trn

=
9 8 7
6 5 4
3 2 1
A c nh ngha nh
sau:
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
Mt s v d khc:
>> A2 = [1:4; -1:2:5]
A2 =
1 2 3 4
-1 1 3 5
>> A3 = [1 3
-4 7]
A3 =
1 3
-4 7
T nhng v d trn ta nhn thy rng mt vector hng l mt ma trn 1xk v mt vector ct
l mt ma trn nx1. Php chuyn v s chuyn mt vector hng thnh mt vector ct v ngc
li. iu ny c th m rng cho mt ma trn, php chuyn v s bin cc hng ca ma trn
thnh cc ct v ngc li.
>> A2
A2 =
1 2 3 4
-1 1 3 5
>> A2' % chuyn v ca ma trn A2
ans =
1 -1
2 1
3 3
4 5
>> size(A2) % kch thc ca ma trn A2
ans =
2 4
>> size(A2')
Php ton vi vector v ma trn

21
ans =
4 2
3.2.I. Nh0N0 M4 I84N 040 8II
Trong MATLAB c mt s hm c s dng to ra cc ma trn c bit, tham kho thm
bng 3.2.
Bng 3.2: Mt s hm v php ton thng s dng vi ma trn.
Lnh Kt qu
n = rank(A) S chiu ca ma trn A
x = det(A) nh thc ca ma trn A
x = size(A) Kch thc ca A
x = trace(A) Tng cc thnh phn trn ng cho ca A
x = norm(v) Chiu di Euclide ca vector v
C = A + B Tng hai ma trn
C = A B Hiu hai ma trn
C = A*B Tch hai ma trn
C = A.*B Tch tng thnh phn tng ng ca hai ma trn
C = A^k Ly tha ca ma trn
C = A.^k Ly tha tng thnh phn ca ma trn
C = A Ma trn chuyn v A
T

C = A./B Chia tng thnh phn tng ng ca hai ma trn
C = inv(A) Nghch o ca ma trn A
X = A\B Gii phng trnh AX = B
X = B\A Gii phng trnh XA = B
x = linspace(a,b,n) Vector x c n thnh phn phn b u trong khong [a,b]
x = logspace(a,b,n) Vector x c n thnh phn bt u 10
a
v kt thc vi 10
b

A = eye(n) Ma trn ng nht
A = zeros(n,m) Ma trn all-0
A = ones(n,m) Ma trn all-1
A = diag(v) Ma trn zero vi ng cho l cc thnh phn ca vector v
X = tril(A) Trch ra ma trn tam gic di
X = triu(A) Trch ra ma trn tam gic trn
A = rand(n,m) Ma trn A vi cc thnh phn l phn b ng nht gia (0,1)
A = randn(n,m) Ging nh trn vi cc thnh phn phn b chun.
v = max(A)
Nu A l mt vector th v l gi tr ln nht ca A
Neu A l ma trn th v l mt vector vi cc thnh phn l gi tr ln nht trn
mi ct ca A
v = min(A) Nh trn vi gi tr nh nht
v = sum(A) Nh trn vi tng
Php ton vi vector v ma trn

22
>> E = [] % mt ma trn rng 0 hng 0 ct
E =
[]
>> size(E)
ans =
0 0
>> I = eye(3); % ma trn ng nht 3x3
I =
1 0 0
0 1 0
0 0 1
>> x = [2; -1; 7]; I*x % I*x = x
ans =
2
-1
7
>> r = [1 3 -2];
>> R = diag(r) % to mt ma trn ng cho
R =
1 0 0
0 3 0
0 0 -2
>> A = [1 2 3; 4 5 6; 7 8 9];
>> diag(A) % trch ra ng cho ca ma trn A
ans =
1
5
9
>> B = ones(3,2)
B =
1 1
1 1
1 1
>> C = zeros (size(C')) % ma trn all zero vi kch thc ca C
C =
0 0 0
0 0 0
Php ton vi vector v ma trn

23
>> D = rand(2,3) % ma trn cc gi tr ngu nhin trong
khong (0, 1)
D =
0.0227 0.9101 0.9222
0.0299 0.0640 0.3309
>> v = linspace(1, 2, 4) % v l mt vector c 4 gi tr cch u
nhau trong khong [1, 2]
v =
1.0000 1.3333 1.6667 2.0000
3.2.2. I4 00N0 M4 I84N 4 I80h 84 M0I M4 I84N 00N I0 M0I M4 I84N L0N h0N
Chng ta c th to ra mt ma trn ln t cc ma trn nh hn:
>> x = [4; -1], y = [-1 3]
x =
4
-1
y =
-1 3
>> X = [x y'] % X bao gm cc ct ca x v y'
X =
4 -1
-1 3
>> T = [ -1 3 4; 4 5 6]; t = 1:3;
>> T = [T; t] % cng thm vo T mt dng mi, t
T =
-1 3 4
4 5 6
1 2 3
>> G = [1 5; 4 5; 0 2]; % G l ma trn 3x2
>> T2 = [T G] % kt ni 2 ma trn
T2 =
-1 3 4 1 5
4 5 6 4 5
1 2 3 0 2
>> T3 = [T; G ones(3,1)] % G l ma trn 3x2
% T l ma trn 3x3
T3 =
-1 3 4
4 5 6
Php ton vi vector v ma trn

24
1 2 3
1 5 1
4 5 1
0 2 1
>> T3 = [T; G']; % iu g xy ra?
>> [G' diag(5:6); ones(3,2) T] % kt ni nhiu ma trn
ans =
1 4 0 5 0
5 5 2 0 6
1 1 -1 3 4
1 1 4 5 6
1 1 1 2 3
Cng tng t nh vi vector, chng ta c th trch ra mt s thnh phn ca ma trn. Mi
thnh phn ca ma trn c nh du bi v tr hng v ct. Thnh phn hng i v ct j
c k hiu l A
ij
, v k hiu trong MATLAB l A(i,j).
>> A = [1:3; 4:6; 7:9]
A =
1 2 3
4 5 6
7 8 9
>> A(1,2), A(2,3), A(3,1)
ans =
2
ans =
6
ans =
7
>> A(4,3) % khng ng v A l ma trn 3x3
??? Index exceeds matrix dimensions.
>> A(2,3) = A(2,3) + 2*A(1,1) % thay I gi tr ca A(2,3)
A =
1 2 3
4 5 8
7 8 9
Mt ma trn cng c th c m rng theo cch sau y:
>> A(5,2) = 5 % gn 5 cho v tr A(5,2) v
% cc thnh phn khc l zero
A =
Php ton vi vector v ma trn

25
1 2 3
4 5 8
7 8 9
0 0 0
0 5 0
Cc thnh phn zero ca ma trn A trn cng c th c thay i:
>> A(4,:) = [2, 1, 2]; % gn vector [2, 1, 2] vo hng th 4 ca
A
>> A(5,[1,3]) = [4, 4]; % gn A(5,1) = 4 v A(5,3) = 4
>> A % kim tra s thay i ca ma trn A?
Nhng phn khc nhau ca ma trn A c trch ra theo cch sau y:
>> A(3,:) % trch ra hng th 3 ca A
ans =
7 8 9
>> A(:,2) % trch ra ct th 2 ca A
ans =
2
5
8
1
5
>> A(1:2,:) % trch ra hng th 1 v 2 ca A
ans =
1 2 3
4 5 8
>> A([2,5],1:2) % trch ra mt phn ca A
ans =
4 5
4 5
Cc lnh nhng v d trn c gii thch ngn ngn trong bng 3.1.
Lu khi nim ma trn rng [], chng hn cc hng hay ct ca ma trn c th c xa b
bng cch gn gi tr ca n cho ma trn rng [].
>> C = [1 2 3 4; 5 6 7 8; 1 1 1 1];
>> D = C; D(:,2) = [] % xa ct th 2 ca D
>> C ([1,3],:) = [] % xa ct th 1 v 2 ca C
# Bi tp 3-3.
Hy xa tt c cc bin (s dng lnh clear). nh ngha ma trn A = [1:4; 5:8; 1 1 1 1].
Hy thc thi v kim tra kt qu ca cc php tnh sau:
Php ton vi vector v ma trn

26
x = A(:, 3) y = A(3 : 3, 1 : 4)
B = A(1 : 3, 2 : 2) A = [A; 2 1 7 7; 7 7 4 5]
A(1, 1) = 9 + A(2, 3) C = A([1, 3], 2)
A(2 : 3, 1 : 3) = [0 0 0; 0 0 0] D = A([2, 3, 5], [1, 3, 4])
A(2 : 3, 1 : 2) = [1 1; 3 3] D(2, :) = [ ]
# Bi tp 3-4.
Cho A = [1, 5, 6; 3, 0, 8], B = [7, 3, 5; 2, 8, 1], C = 10 v D = 2. Hy thc hin cc php tnh
sau y:
E = A B Gn ct u tin ca A cho M
F = D*B Gn ct th hai ca ca G cho N
G = A.*B Ch nhn ct th 3 ca A cho 5
H = A Cng M v N
J = B/D Tm tng tt c cc gi tr ca ma trn A
# Bi tp 3-5.
nh ngha ma trn T = [ 3 4; 1 8; -4 3]; A = [diag(-1:2:3) T; -4 4 1 2 1]. Thc hin
cc php bin i sau y i vi ma trn A:
Trch ra mt vector bao gm thnh phn th 2 v 4 ca hng th 3.
Tm gi tr nh nht ca ct th 3
Tm gi tr ln nht ca hng th 2
Tnh tng cc thnh phn ca ct th 2
Tnh gi tr trung bnh ca hng th 1 v th 4.
Trch ma trn con bao gm hng th 1 v th 3.
Trch ma trn con bao gm hng th 1 v 2 ca ct 3, 4, 5.
Tnh tng cc thnh phn ca hai hng 1 v 2.
Cng cc thnh phn ca ct th 2 v th 3 vi 3.
# Bi tp 3-6.
Cho ma trn A = [2 4 1; 6 7 2; 3 5 9]. Thc thi cc php ton sau i vi ma trn A:
Gn hng th 1 cho vector x
Gn 2 hng cui ca A cho y.
Cng cc thnh phn trong tng hng ca A
Cng cc thnh phn trong tng ct ca A
# Bi tp 3-7.
Cho A = [2 7 9 7; 3 1 5 6; 8 1 2 5]. Gii thch kt qu ca cc lnh sau:
A sum (A)
Php ton vi vector v ma trn

27
A(1, :) sum (A)
A(:, [1 4]) mean (A)
A([2 3], [3 1]) mean (A)
reshape (A, 2, 6) sum (A, 2)
A(:) mean (A, 2)
flipud (A) min (A)
fliplr (A) max (A)
[A; A(end, :)] min (A(:, 4))
[A; A(1 : 2, :)] [min(A) max(A)]
max (min(A)) Xa ct th 2 ca A
[[A; sum (A)] [sum (A,2); sum (A(:))]]
Gn cc ct chn ca A cho B
Gn cc hng l ca A cho C
Bin A thnh ma trn 4x3
Tnh 1/x cc thnh phn ca A
Tnh bnh phng cc thnh phn A
Cng mt hng all-1 vo u v cui A
Hon i hai hng 2 v 3
Lu : s dng lnh help tm hiu ngha ca cc lnh mi.
3.2.3. INh I04N 0I M4 I84N
Cc hm v php ton thng s dng vi ma trn c cho trong bng 3.2. Lu ton t .
trong php nhn ma trn vi ma trn v php nhn ma trn vi vector. Ton t . xut hin
trong php nhn, php chia v s m. Khi c ton t ny, php ton s c thc hin vi
tng thnh phn ca ma trn. C th trong php nhn/chia, tng thnh phn tng ng ca 2
ma trn s nhn/chia vi nhau v kt qu s l mt ma trn c cng kch thc vi 2 ma trn
ban u. Nh vy trong trng hp s dng ton t ny 2 ma trn phi c cng kch thc vi
nhau. Xem xt cc v d sau:
>> B = [1 -1 3; 4 0 7]
B =
1 -1 3
4 0 7
>> B2 = [1 2; 5 1; 5 6];
>> B = B + B2' % cng 2 ma trn
B =
2 4 8
6 1 13
Php ton vi vector v ma trn

28
>> B-2 % tr cc thnh phn ca B cho 2
ans =
0 2 6
4 -1 11
>> ans = B./4 % chia cc thnh phn ca B cho 4
ans =
0.5000 1.0000 2.0000
1.5000 0.2500 3.2500
>> 4/B % sai c php
??? Error using ==> /
Matrix dimensions must agree.
>> 4./B % tng ng vi 4.*ones(size(B))./B
ans =
2.0000 1.0000 0.5000
0.6667 4.0000 0.3077
>> C = [1 -1 4; 7 0 -1];
>> B .* C % nhn tng v tr vi nhau
ans =
2 -4 32
42 0 -13
>> ans.^3 - 2 % m 3 cc thnh phn sau tr cho 2
ans =
6 -66 32766
74086 -2 -2199
>> ans ./ B.^2 % tng v tr chia cho nhau
ans =
0.7500 -1.0312 63.9961
342.9907 -2.0000 -1.0009
>> r = [1 3 -2]; r * B2
ans =
6 -7
Lu cc php nhn ma trn-ma trn v php nhn ma trn-vector.
>> b = [1 3 -2];
>> B = [1 -1 3; 4 0 7]
B =
1 -1 3
4 0 7
Php ton vi vector v ma trn

29
>> b * B % khng th thc hin c
??? Error using ==> *
Inner matrix dimensions must agree.
>> b * B' % thc hin c
ans =
-8 -10
>> B' *ones(2,1)
ans =
5
-1
10
>> C = [3 1; 1 -3];
>> C * B
ans =
7 -3 16
-11 -1 -18
>> C.^3 % m 3 tng thnh phn
ans =
27 1
1 -27
>> C^3 % tng ng vi C*C*C
ans =
30 10
10 -30
>> ones(3,4)./4 * diag(1:4)
ans =
0.2500 0.5000 0.7500 1.0000
0.2500 0.5000 0.7500 1.0000
0.2500 0.5000 0.7500 1.0000
# Bi tp 3-8.
Hy thc thi tt c php ton trong bng 3.2, t chn cc gi tr cho ma trn A, B vector v v
cc h s k, a, b, n v m.
# Bi tp 3-9.
Cho A l mt ma trn vung, to ma trn B ging ma trn A nhng tt c cc thnh phn trn
ng cho chnh u bng 1.
# Bi tp 3-10.
Cho vector x = [1 3 7], y = [2 4 2] v ma trn A = [3 1 6; 5 2 7], B = [1 4; 7 8; 2 2].
Php ton no sau y l khng ng? Kt qu ca mi php tnh?
Php ton vi vector v ma trn

30
x + y [x; y]
x + A [x; y]
x + y A 3
A - [x y] A + B
[x; y] + A B + A
B*A B./x
A.* B B./[x x]
A.* B 2/A
2*B ones(1, 3)*A
2.* B ones(1, 5
# Bi tp 3-11.
Cho A l mt ma trn ngu nhin 5x5, b l mt vector ngu nhin 5x1. Tm x tha mn biu
thc Ax = b (tham kho thm bng 3.2). Gii thch s khc nhau gia ton t \, / v lnh
inv. Sau khi c x, hy kim tra Ax b c phi l mt vector all-zero hay khng?
# Bi tp 3-12.
Hy tm hai ma trn 2x2 A v B tha mn A.*B A*B. Sau tm tt c cc ma trn A v B
sao cho A.*B = A*B (gi : s dng cc ton t /, \ v lnh inv).
Php ton vi vector v ma trn

31
Danh sch cc lnh v hm c gii thiu trong chng 3
det nh thc ca ma trn
diag To ma trn ng cho
eye Ma trn n v
inv Nghch o ca 1 ma trn
length Chiu di ca vector
linspace Chia mt on thnh cc khong chia tuyn tnh
logspace Chia mt on thnh cc khong chia logarithm
max Hm gi tr ln nht
min Hm gi tr nh nht
norm Chiu di Euclide ca vector
ones Ma trn ton 1
rand Ma trn ngu nhin vi cc thnh phn phn b u trn (0,1)
randn Ma trn ngu nhin vi cc thnh phn phn b chun
rank Hng ca ma trn
size Kch thc ca ma trn
sum Hm tnh tng
trace Tng cc thnh phn trn ng cho ca ma trn (vt ca ma trn)
tril Trch ra ma trn tam gic di
triu Trch ra ma trn tam gic trn
zeros Ma trn ton zero

th 2D v 3D

32
Chng 4
4. 00 TNJ 20 9a 30

MATLAB c th c s dng th hin cc kt qu di dng th, mi bin s cha tt
c cc gi tr ca mt i s trong lnh v th.
4.I. Nh0N0 00 Ihj 00N 0I4N
Vi lnh plot chng ta d dng v c nhng th n gin. Cho vector y, lnh plot(y) s
xc nh nhng im [1, y(1)], [2, y(2)], , [n, y(n)] v ni cc im ny li bng nhng
ng thng. Lnh plot(x,y) thc hin mt cng vic tng t nh vy vi nhng im [x(1),
y(1)], [x(2), y(2)], , [x(n), y(n)].
Lu rng hai vector x v y phi cng l vector hng hoc vector ct v c cng chiu di (s
thnh phn trong vector).
Nhng lnh loglog, semilogx v semilogy c chc nng tng t nh lnh plot, ngoi tr mt
hoc hai trc th ca chng c xc nh theo logarith.
# Bi tp 4-1.
D on kt qu ca on chng trnh sau y, sau hy kim chng kt qu bng
MATLAB:
>> x = 0:10;
>> y = 2.^x; % y = [1 2 4 8 16 32 64 128 256 512 1024]
>> plot(x,y) % biu din di dng th
>> semilogy(x,y) % v th vi trc y theo logarith
Sau khi thc thi xong on chng trnh trn ta nhn thy, c hai th u c th hin
trong cng mt ca s Figure No.1. th th nht s b xa b ngay khi th th hai xut
hin. v hai th trn hai ca s khc nhau, ta s dng lnh figure to ra mt ca s
mi trc khi thc hin lnh v th th hai. Bng cch ny chng ta s c hai ca s ring
bit th hin 2 th. Chng ta cng c th chuyn n cc ca s khc nhau bng lnh
figure(n), lnh ny s a ca s No.n ln trn mn hnh. Thc thi li on chng trnh trn
v quan st s thay i.
>> x = 0:10;
>> y = 2.^x;
>> plot(x,y)
>> figure
>> semilogy(x,y)
v mt th hm tng i chnh xc v p, iu quan trng l phi ly mu mt cch
thch hp:
>> n = 5;
>> x = 0:1/n:3; % ly mu khng tt
>> y = sin(5*x);
>> plot(x,y)
th 2D v 3D

33

>> n = 25;
>> x = 0:1/n:3; % ly mu tt
>> y = sin(5*x);
>> plot(x,y)
Lnh plot mc nh s v th bng nhng ng nt lin mu en. Ta c th thay i kiu
cng nh mu sc ca nt v, v d:
>> x = 0:0.4:3; y = sin(5*x);
>> plot(x,y,'r--')

Hnh 4.1.
th trn c v bi ng nt t mu . Thng s th ba ca lnh plot ch nh mu v
kiu ng ca nt v. Bng 4.1 trnh by mt s trng hp c th, s dng lnh help plot
c nhng thng tin chi tit hn.
Bng 4.1: Cc k hiu mu v kiu v ca th
K hiu Mu K hiu Kiu v
r Red . , o nh du cc im bng du ., o
g Green * nh du cc im bng du *
b Blue x , + nh du cc im bng du x. +
y Yellow - V bng ng nt lin
m Magenta -- V bng ng nt t di
c Cyan : V bng ng nt t ngn
k Black -. V bng ng nt t chm gch.
Tiu ca th, ng k v nhn cho cc trc c xc nh bi cc lnh sau:
>> title('Function y = sin(5*x)');
Ly mu khng tt Ly mu tt
th 2D v 3D

34
>> xlabel('x-axis');
>> ylabel('y-axis');
>> grid % loi b cc ng k bng lnh grid off

Hnh 4.2.
# Bi tp 4-2.
V mt ng bng nt gch ngn mu ni cc m sau li vi nhau: (2, 6), (2.5, 18), (5,
17.5), (4.2, 12.5) v (2, 12).
# Bi tp 4-3.
V th ca hm y = sin(x) + x - xcos(x) trong hai ca s ring bit vi hai khong 0<x<30
v 100<x<100. Cng thm tiu v m t ca cc trc vo th.
# Bi tp 4-4.
V ng trn c bn knh bng 2, bit rng phng trnh ca ng trn l [x(t); y(t)] = [r
cos(t); r sin(t)] vi t = [0; 2].
4.2. M0I 50 h4M 0000 50 00N0 I80N0 00 Ihj
C vi cch v nhiu th trong cng mt ca s hnh. Cch u tin l s dng lnh
hold on. Sau lnh ny, tt c cc th s c v trn cng mt ca s hnh cho n khi c
lnh hold off. Khi nhiu hm c v trn cng mt ca s, ta nn s dng mu sc v hnh
dng khc nhau cho mi th. V d:
>> x1 = 1:.1:3.1; y1 = sin(x1);
>> plot(x1,y1,'md');
>> x2 = 1:.3:3.1; y2 = sin(-x2+pi/3);
>> hold on
>> plot(x2,y2,'k*-.')
>> plot(x1,y1,'m-')
>> hold off
th 2D v 3D

35

Hnh 4.3.
Cch th hai l v nhiu hm cng mt lc. Vi cch ny , cc hm s c v cng mt lc
trn cng mt ca s hnh:
>> x1 = 1:.1:3.1; y1 = cos(x1);
>> x2 = 1:.3:3.1; y2 = cos(-x2+pi/3);
>> plot(x1, y1,'md', x2, y2, 'k*-.', x1, y1, 'm-')

Hnh 4.4.
xc nh c th di ca mi trc ta s dng lnh axis. thy s thay i hy thm
lnh sau vo on lnh trn.
>> axis([0,4,-2,2])

Hnh 4.5.
th 2D v 3D

36
Lnh axis tight cng cho ra kt qu tng t. S dng lnh help tm hiu thm v cc lnh
axis on/off, axis equal, axis image v axis normal. to dng ghi ch cho mi th ta s
dng lnh legend, thm lnh sau vo on chng trnh trn
>> legend ('cos(x)', 'cos(-x+pi/3)');

Hnh 4.6.
to ra nhiu ca s con trong cng mt ca s hnh ta s dng lnh subplot. Vi lnh
subplot, ca s hnh c chia thnh pxr ca s con c nh s t 1 n p.r, bt u t ca
s trn cng bn tri v m theo tng hng. Cc lnh plot, title, grid ch lm vic vi ca s
con hin ti.
>> x = 1:.1:4;
>> y1 = sin(3*x);
>> y2 = cos(5*x);
>> y3 = sin(3*x).*cos(5*x);
>> subplot(1,3,1); plot(x,y1,'m-'); title('sin(3*x)')
>> subplot(1,3,2); plot(x,y2,'g-'); title('cos(5*x)')
>> subplot(1,3,3); plot(x,y3,'k-'); title('sin(3*x) * cos(5*x)')

Hnh 4.7.
# Bi tp 4-5.
th 2D v 3D

37
V th cc hm f(x) = x, g(x) = x
3
, h(x) = e
x
v z(x) = e^x
2
vi x[0, 4] trn cng mt ca
s hnh v vi h trc c chia bnh thng v h trc ta c chia log-log. Ly mu
thch hp lm phng th. M t mi th bng cc hm: xlabel, ylabel, title, legend.
# Bi tp 4-6.
V th ca cc hm f(x) = sin(1/x), f(x) = cos(1/x) trn cng mt ca s hnh, vi x [0.01,
0.1]. Ly mu thch hp cc ng cong r rng nht.
4.3. 040 Ih000 INh Kh40 004 000N0 00N0 20
MATLAB c mt s hm c thit k c bit s dng vi nhng hnh 2D, v d nh cc
hm: fill, polar, bar, barh, pie, hist, errorbar hay stem. Trong v d sau, lnh fill c s
dng to ra mt hnh a gic:
>> N = 5; k = -N:N;
>> x = sin(k*pi/N);
>> y = cos(k*pi/N); % (x, y) l cc nh ca a gic
>> fill(x,y,'g')
>> axis square
>> text(-0.7,0,'I am a green polygon')

Hnh 4.8.
# Bi tp 4-7.
Thc thi cc lnh sau v m t kt qu (lu rng lnh figure s to ra mt ca s hnh mi):
>> figure % v th ct ca mt ng cong hnh
chung.
>> x = -2.9:0.2:2.9;
>> bar(x,exp(-x.*x));
>> figure % v sng hnh sin dng bc thang
>> x = 0:0.25:10;
>> stairs(x,sin(x));
>> figure % v errorbar
>> x = -2:0.1:2;
>> y = erf(x); % dng lnh help hiu thm
th 2D v 3D

38
>> e = rand(size(x)) / 10;
>> errorbar (x,y,e);
>> figure
>> r = rand(5,3);
>> subplot(1,2,1); bar(r,'grouped')
>> subplot(1,2,2); bar(r,'stacked')
>> figure
>> x = randn(200,1); % s ngu nhin ca phn b bnh thng
>> hist(x,15) % biu vi 15 ct
4.4. IN 4N
Trc khi tin hnh in miu t mt cch r rng hn chng ta c th thm mt s thng tin
vo th, chng hn nh ta , hay thay i cch trnh by. Bng 4.2 trnh by mt s lnh
c s dng trnh by hnh v hay th.
Bng 4.2: Mt s lnh thao tc vi th
Lnh Kt qu
grid on/off Cng li vo th
axis([xmin xmax ymin ymax]) Xc nh gi tr ln nht v nh nht ca cc trc
box off/on Xa/hin th ng vin khung ca th.
xlabel('text') Nhn ca trc x
ylabel('text') Nhn ca trc y
title('text') Ta trn th.
text(x,y,'text') Cng dng k t vo im (x,y)
gtext('text') Cng dng k t vo v tr xc nh bi chut.
legend('fun1','fun2') Cng vo tn ca cc hm.
legend off Xa tn ca cc hm.
clf Xa ca s hnh hin ti.
subplot To ra nhng ca s hnh con.
# Bi tp 4-8.
V th cc hm y1 = sin(4x), y2 = xcos(x), y3 = (x + 1)
-1
x
1/2
vi x = 1:0.25:10, v mt
im (x; y) = (4; 5) trn cng mt ca s hnh. S dng cc mu v kiu khc nhau cho cc
th. Cng thm vo li ch thch, nhn cho c hai trc v mt ta . Cng mt on text
single point n v tr (4; 5). Thay i gi tr ln nht v nh nht ca cc trc sao cho c th
quan st hm y3 mt cch chi tit nht.
Cch n gin nht tin hnh in l chn File trn thanh cng c v sau chn Print.
Lnh print c s dng gi mt th n my in hoc lu vo mt file. Do c nhiu
thng s khng c gii thch chi tit y, s dng lnh help hiu r hn. C gng hiu
cc v d sau y.
th 2D v 3D

39
>> print -dwinc
% s dng my in hin hnh in mu hnh ang hin th
>> print -f1 -deps myfile.eps
% lu hnh Figure no.1 n file myfile.eps dng en
trng.
>> print -f1 -depsc myfilec.eps
% lu hnh Figure no.1 n file myfilec.eps dng mu.
>> print -dtiff myfile1.tiff
% lu hnh hin hnh n file myfile1.tiff
>> print -dpsc myfile1c.ps
% lu hnh hin hnh n file myfile1.ps dng mu
>> print -f2 -djpeg myfile2
% lu hnh Figure no.2 n file myfile2.jpg
# Bi tp 4-9.
Trong nhng bi tp trc, thc hnh lu cc hnh th n mt file c ch nh.
4.5. 00 Ihj 30
Lnh plot3 c s dng v th 3D, lnh ny tng ng vi lnh plot trong 2D. V
hnh thc n ging nh lnh plot tuy nhin lnh plot3 c m rng thm cho mt trc ta
th 3. V d v ng cong r c nh ngha r(t) = [t sin(t); t cos(t); t] vi t nm trong
khong [-10; 10].
>> t = linspace(-10*pi,10*pi,200);
>> plot3(t.*sin(t), t.*cos(t), t, 'md-'); % v ng cong vi mu
hng
>> title('Curve r(t) = [t sin(t), t cos(t), t]');
>> xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');
>> grid

Hnh 4.9.
th 2D v 3D

40
# Bi tp 4-10.
V mt th 3D c nh ngha [x(t); y(t); z(t)] = [sin(t); cos(t); sin
2
(t)] vi t = [0, 2]. V
ng trn bng mu xanh v cc im nh du l cc vng trn. Cng thm ta ca
th, m t cc trc v v cc ng k.
Chng ta c th xoay hnh 3D va v bng cch chn mc Tools trn thanh cng c ca ca
s hnh v chn mc Rotate 3D hay bng cch nhp vo lnh rotate3D. Sau nhn chut
vo hnh, gi v bt u xoay theo hng mnh mong mun.


Hnh 4.10.
4.6. 8 M4I 00 Ihj
Mt b mt c nh ngha bi mt hm f(x, y), vi mi cp gi tr ca (x,y), cao z c
tnh z = f(x, y). v mt b mt, vng ly mu (x, y) nn l mt vng hnh ch nht. H
thng cc gi tr x v y c to ra bi lnh meshgrid nh sau:
>> [X, Y] = meshgrid (-1:.5:1, 0:.5:2)
X =
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
Y =
0 0 0 0 0
0.5000 0.5000 0.5000 0.5000 0.5000
1.0000 1.0000 1.0000 1.0000 1.0000
1.5000 1.5000 1.5000 1.5000 1.5000
2.0000 2.0000 2.0000 2.0000 2.0000
Trc khi xoay Sau khi xoay
th 2D v 3D

41
Vng ly mu trong trng hp ny l [-1, 1]x[0, 2] v khong ly mu l 0.5. b mt
th phng hn ta nn ly mu dy c hn.
>> [X,Y] = meshgrid(-1:.05:1, 0:.05:2);
>> Z = sin(5*X) .* cos(2*Y);
>> mesh(X,Y,Z);
>> title ('Function z = sin(5x) * cos(2y)')


Hnh 4.11
Th thay lnh mesh bng lnh waterfall v nhn xt s khc nhau gia hai lnh.
# Bi tp 4-11.
V th mt ca hm
4 2
2
y x
xy
) y , x ( f
+
= ti vng gn im (0, 0). Lu nn s dng mt
ly mu dy c.

Hnh 4.12.
S dng lnh mesh S dng lnh waterfall
th 2D v 3D

42
# Bi tp 4-12.
V mt qu cu vi cc thng s c nh ngha [x(t, s), y(t, s), z(t, s)] = [cos(t)cos(s),
cos(t)sin(s), sin(t)], vi t,s = [0, 2] (s dng lnh surf). S dng lnh shading interp xa
cc ng mu en, sau s dng lnh shading faceted phc hi li hnh nguyn thy.


Hnh 4.13
# Bi tp 4-13.
V hm theo r v : [x(r, ); y(r, ); z(r, )] = [rcos(); rsin(); sin(6cos(r)-n)]. Chn n l
mt hng s. Quan st s thay i ca hnh theo n.
Trong MATLAB, hm peaks l mt hm hai bin, c c t php bin i phn b Gauss.
Cng dng ca hm peaks l to ra cc bin gi tr s dng trong cc hm 3D nh: mesh,
surf, pcolor, contour, . V d:
>> [X,Y,Z] = peaks; % to cc gi tr v,
% X, Y, Z l cc ma trn 49x49
>> surf(X,Y,Z); % v b mt
S dng lnh mesh S dng lnh surf
th 2D v 3D

43

Hnh 4.14
>> figure
>> contour (X,Y,Z,30); % v ng vin trong 2D
>> colorbar % thm vo trc z mt thanh mu tng ng
vi
% gi tr ca Z.
>> title('2D-contour of PEAKS');

Hnh 4.15
>> figure
>> contour3(X,Y,Z,30); % v ng vin trong 3D
>> title('3D-contour of PEAKS');
th 2D v 3D

44
>> pcolor(X,Y,Z); % gi tr z c th hin vi gi tr
% mu tng ng, xem thm lnh colorbar

Hnh 4.16
Lnh close all c s dng ng tt c cc ca s hnh, ng tng ca s ta c th s
dng lnh close (close 1 ng ca s hnh Figure No.1). on chng trnh sau y dng
xc nh v tr c gi tr nh nht ca th 3D.
>> [mm,I] = min(Z); % mm l vector hng cha cc gi tr nh nht.
% I cha cc v tr c gi tr nh nht.
>> [Zmin, j] = min (mm); % Zmin l gi tr nh nht v j l v tr
% tng ng. Zmin mang gi tr ca
Z(I(j),j)
>> xpos = X(I(j),j); % gi tr tng ng ca X.
>> ypos = Y(I(j),j); % gi tr tng ng ca Y.
>> contour (X,Y,Z,25);
>> xlabel('x-axis'); ylabel('y-axis');
>> hold on
>> plot(xpos,ypos,'*');
>> text(xpos+0.1,ypos,'Minimum');
>> hold off
Thc hin tng t xc nh c v tr c gi tr ln nht:
th 2D v 3D

45

Hnh 4.17
Chng ta cng c th kt hp hai hay nhiu th vo trong cng mt hnh.
>> surf(peaks(25)+6); % dch th theo trc z +6 n v.
>> hold on
>> pcolor(peaks(25));
>> hold off

Hnh 4.18
# Bi tp 4-14.
V b mt ca hm
2 2
y x
xye ) y , x ( f

= vi vng ly mu [-2, 2]x[-2, 2]. Tm v tr, gi tr ln
nht v nh nht ca hm.
th 2D v 3D

46
4.7. hNh 00N0
Trong MATLAB chng ta c th to ra hnh chuyn ng bng cch to ra mt chui cc
hnh. hiu cch to ra mt hnh ng, phn tch on chng trnh sau y vi th ca
hm f(x) = sin(nx) trong x = [0, 2] v n = 1, , 5.
N = 5;
M = moviein(N);
x = linspace (0,2*pi);
for n=1:N
plot (x,cos(n*x),'r-');
xlabel('x-axis')
if n > 1,
ss = strcat('cos(',num2str(n),'x)');
else
ss = 'cos(x)';
end
ylabel(ss)
title('Cosine functions cos(nx)','FontSize',12)
axis tight % gii hn cc trc theo gi tr.
grid
M(:,n) = getframe;
pause(1.8)
end
movie(M) % chy on film.
Cc lnh c t m trn l cc thnh phn chnh to nn mt on hnh chuyn ng
trong MATLAB.
Trong on chng trnh trn, cu trc vng lp for c s dng to ra cc khung nh
cho on film. Chng ta s cp n cu trc vng lp mt cch chi tit hn phn sau.
Lnh strcat dng ni cc chui li vi nhau, s dng lnh help strcat hiu r hn.
Khi chy on film, u tin 5 frame c hin th v sau 5 frame xut hin li vi tc
nhanh hn. Lnh moviein(M) bo vi MATLAB rng c mt on film gm c M frame s
c to ra. Cc frame lin tip nhau s c to ra bn trong vng lp. Vi lnh getframe,
cc frame s c lu vo cc ct ca ma trn M. Lnh movie(M) s chy on film va to.
Lu rng vic to ra on film yu cu kh nhiu b nh, do vy khi kt thc cng vic nn
clear M ra khi workspace.
# Bi tp 4-15.
Vit chng trnh to mt on film gm c 5 frame l b mt ca hm f(x; y) =
sin(nx)sin(ny) vi x,y = [0; 2] v n = 1 : 5. Thm vo on film ta , miu t ca cc trc.
th 2D v 3D

47
Danh sch cc lnh v hm c gii thiu trong chng 4
Cc hm v th 2D
bar V biu ct
barh V biu ct nm ngang
errorbar V th li
fill T mu mt a gic 2D
hist V biu histogram
loglog V th trn h trc logarithm
pie V biu phn trm
plot V th trn h trc tuyn tnh
polar V th trn h to cc
semilogx V th trn h trc c trc honh chia theo thang logarithm
semilogy V th trn h trc c trc tung chia theo thang logarithm
stem V th xung
Cc hm phc v cho th 2D
axis iu chnh cc gii hn ca cc trc to
box off/on Xa/hin th ng vin khung ca th.
clf Xo ca s hnh hin ti
close ng mt hay nhiu figure ang m
figure To mt figure mi v th
grid Hin th hoc khng hin th li vung
gtext Thm dng k t ti im xc nh bi con tr chut
hold on Cho php v th khc ln cng h trc to hin hnh
hold off Xo cc th c trc khi v th mi
legend Hin th cc ch thch trn th
legend off Xo cc ch thch trn th
subplot Chia figure thnh nhiu phn, mi phn v mt th
text Thm dng k t ti mt im xc nh trn th
title Hin th tiu ca th
xlabel Hin th tn ca trc X
ylabel Hin th tn ca trc Y
Cc hm v th 3D
contour V th ng ng mc
mesh V th 3D vi b mt dng li
th 2D v 3D

48
meshgrid To li cc im (min xc nh) v th
pcolor V bng mu t mt ma trn cc to
peaks Mt hm hai bin dng minh ho cho cc th 3D
plot3 V th 3D
rotate3D on/off Cho php / khng cho php xoay th 3D bng chut
shading Chn ch ph mu
surf V th 3D bng cch t mu
waterfall V th 3D dng waterfall
Cc hm lin quan n hnh ng
getframe Lu cc frame hnh ng vo mt ma trn
moviein Khi ng b nh cha cc frame (khung) hnh ng
movie Hin th on nh ng
Cc lnh v hm khc
for ... end Thc hin vng lp c s ln lp hu hn
strcat Ni hai hay nhiu chui vi nhau

Biu thc r nhnh

49
Chng 5
6. 8I0 TN00 8 NNaNN

Cu trc ca biu thc r nhnh bao gm mt nhm lnh cho php thc thi mt on chng
trnh c iu kin hay thc hin mt vng lp.
5.I. 040 I04N I0 L00I0 4 8I0 Ih00 q04N h
thc thi biu thc r nhnh, chng trnh cn thc hin nhng php ton m kt qu ca
n l NG hay SAI (TRUE hay FALSE). Trong MATLAB, kt qu tr v ca mt ton t
logic l 1 nu n ng v kt qu l 0 nu n sai. Bng 5.1 trnh by nhng ton t logic v
nhng biu thc quan h trong MATLAB. S dng lnh help relop hiu r hn v ton t
logic v cc biu thc quan h. Nhng ton t quan h <, <=, >, >=, == v ~= c th c s
dng so snh hai ma trn c cng kch thc (lu rng mt s thc c xem nh l mt
ma trn 1x1). Hn na, cc hm xor, any, v all cng c s dng nh l cc ton t logic
(s dng lnh help hiu r hn)
Bng 5.1: Ton t logic v biu thc quan h.
Lnh Kt qu
a = (b > c) a l 1 nu b ln hn c. Tng t vi <, >=, <=
a = (b == c) a l 1 nu b bng c
a = (b ~= c) a l 1 nu b khng bng c
a = ~b Logic b: a bng 1 nu b bng 0
a = (b & c) Logic AND: a l 1 nu a = TRUE v b= TRUE.
a = (b | c) Logic OR: a l 1 nu a = TRUE hoc b= TRUE.
Lu rng trong MATLAB cc ton t AND v OR c mc u tin bng nhau, iu ny c
ngha l cc ton t ny s c thc thi t tri sang phi. V d:
>> b = 10;
>> 1 | b > 0 & 0 % | l logic OR, & l logic AND.
ans =
0
>> (1 | b > 0) & 0 % biu thc ny tng ng vi biu thc
trn.
ans =
0
>> 1 | (b > 0 & 0)
ans =
1
Lu rng trnh cc trng hp nhm ln ta nn s dng du ngoc phn bit cc
biu thc logic c cp u tin khc nhau.

Biu thc r nhnh

50
# Bi tp 5-1.
D on trc kt qu v sau kim tra li bng MATLAB cc biu thc quan h trong
bng 5.1 vi b = 0 v c = -1.
D on trc kt qu v sau kim tra li bng MATLAB cc ton t logic (and, or)
vi b = [2, 31, -40, 0] v c = 0.
nh ngha hai vector ngu nhin (randn(1,7)) v thc thi tt c cc ton t logic bao gm
c xor, any, v all.
# Bi tp 5-2.
1. Cho x = [1, 5, 2, 8, 9, 0, 1] v y = [5, 2, 2, 6, 0, 0, 2]. Thc thi v gii thch kt qu ca cc
lnh sau:
x > y x <= y x & (~y)
x < y y >= x (x > y) | (y < x)
x == y x | y (x > y) & (y < x)
2. Cho x = 1 : 10 v y = [3, 5, 6, 1, 8, 2, 9, 4, 0, 7]. Thc thi v gii thch kt qu ca cc lnh
sau:
(x > 3) & (x < 8) x ((x < 2) | (x >= 8))
x(x > 5) y ((x < 2) | (x >= 8))
y(x <= 4) x (y < 0)
# Bi tp 5-3.
Cho x = [3, 16, 9, 12, -1, 0, -12, 9, 6, 1]. Thc thi cc cng vic sau:
Gn cc thnh phn gi tr dng ca x bng zero.
Nhn 2 cc gi tr l bi s ca 3.
Nhn cc gi tr l ca x vi 5.
Trch cc gi tr ca x ln hn 10 thnh vector y.
Gn cc gi tr ca x nh hn gi tr trung bnh ca n thnh zero.
# Bi tp 5-4.
Thc thi cc lnh sau y v lu gi tr ca z.
>> hold on
>> x = -3:0.05:3;
>> y = sin(3*x);
>> subplot(1, 2, 1);
>> plot(x, y);
>> axis tight
>> z = (y < 0.5).*y;
>> subplot(1, 2, 2);
>> plot(x, y, 'r:');
>> plot(x, z, 'r');
Biu thc r nhnh

51
>> axis tight
>> hold off
Trc khi tip tc, chc chn rng bn hiu c ngha v hot ng cc biu thc sau:
>> a = randperm(10); % hon v ngu nhin.
>> b = 1:10;
>> b - (a <= 7) % (b - 1) nu (a <= 7) v (b - 0) nu (a >
7)
>> (a >= 2) & (a < 4) % bng 1 nu 2 <= a < 4
>> ~(b > 4) % bng 1 nu b <= 4
>> (a == b) | b == 3 % bng 1 nu a = b hoc b = 3
>> any(a > 5) % bng 1 nu bt k thnh phn no
% ca a ln hn 5.
>> any(b < 5 & a > 8) % bng 1 nu tn ti a v b sao cho
% (b < 5 v a > 8)
>> all(b > 2) % bng 1 nu tt c cc gi tr
% ca b ln hn 2.
Cc thnh phn ca vector hay ma trn c th c trch ra khi chng tha mn mt iu kin
no . S dng lnh find cng cho ta mt kt qu tng t. Kt qu tr v ca lnh find l v
tr ca cc thnh phn tha mn iu kin. V d:
>> x = [1 1 3 4 1];
>> i = (x == 1)
i =
1 1 0 0 1
>> y = x(i)
y =
1 1 1
>> j = find(x == 1) % j l cc v tr ca x tha mn x(j) = 1.
j =
1 2 5
>> z = x(j)
z =
1 1 1
Mt v d khc l:
>> x = -1:0.05:1;
>> y = sin(x) .* sin(3*pi*x);
>> plot (x, y, '-');
>> hold on
>> k = find (y <= -0.1)
k =
Biu thc r nhnh

52
9 10 11 12 13 29 30 31 32 33
>> plot (x(k), y(k), 'ro');
>> r = find (x > 0.5 & y > 0)
r =
35 36 37 38 39 40 41
>> plot (x(r), y(r), 'r*');
Vi ma trn, lnh find cng c thc thi theo cch tng t.
>> A = [1 3 -3 -5; -1 2 -1 0; 3 -7 2 7];
>> k = find (A >= 2.5)
k =
3
4
12
>> A(k)
ans =
3
3
7
Theo cch ny, u tin lnh find sp xp ma trn A li thnh mt vector ct theo cch ct
sau c ni tip vo ct trc n. Do vy, k l v tr cc thnh phn ca vector va to ra c
gi tr ln hn hoc bng 2,5 v A(k) l gi tr ca cc thnh phn ny. Cc gi tr ct v dng
ca cc thnh phn ny cng c th c xc nh:
>> [I, J] = find (A >= 2.5)
I =
3
1
3
J =
1
2
4
>> [A(I(1),J(1)),A(I(2),J(2)),A(I(3),J(3))]
ans =
3 3 7
# Bi tp 5-5.
Cho A = ceil(5 * randn(6, 6))
Tm cc thnh phn ca A nh hn 3.
Tm cc thnh phn ca A ln hn 1 v nh hn 5.
Biu thc r nhnh

53
Loi b cc ct c cha thnh phn 0.
5.2. 8I0 Ih00 0I0 KIN
Cu trc iu kin if c s dng quyt nh nhm lnh no s c thc thi. Di dy l
m t tng qut ca cc lnh iu kin. Trong nhng v d ny, lnh disp c s dng
thng xuyn. Lnh ny in ra mn hnh on vn bn gia hai du nhy.
Cu trc if end







Cu trc if else end










Cu trc if elseif else end












if biu thc logic
lnh th 1
lnh th 1

end
C php

if (a > 0)
b = a;
disp ('a is positive');
end
V d

if biu thc logic 1
cc lnh c thc thi khi biu
thc logic 1 TRUE
elseif biu thc logic 2
cc lnh c thc thi khi biu
thc logic 2 TRUE
else
cc lnh c thc thi khi
khng c biu thc logic no
TRUE
end
C php

if (height > 190)
disp ('very tall');
elseif (height > 170)
disp ('tall');
elseif (height < 150)
disp ('small');
else
disp ('average');
end
V d

if biu thc logic
cc lnh c thc thi khi biu
thc logic TRUE
else
cc lnh c thc thi khi biu
thc logic FALSE
end
C php

if (temperature > 100)
disp ('Above boiling.');
toohigh = 1;
else
disp ('Temperature is OK.');
toohigh = 0;
end
V d
Biu thc r nhnh

54

Lu : Chng ta c th s dng mt m-file thc thi cc v d trn. m-file l mt tp tin
cha mt chui cc lnh trong MATLAB. to ra mt m-file, u tin chng ta m mt
chng trnh son tho sau nhp vo tt c cc lnh cn thit (khng c du nhc>>
u mi lnh). Cui cng lu file ny vi phn m rng .m, v d mytask.m. thc thi m-
file va to, t ca s lnh ca MATLAB chng ta g vo lnh mytask. Mt cch khc to
ra m-file l s dng chng trnh son tho c sn ca MATLAB, chn File trn thanh cng
c, sau chn New v cui cng chn m-file. Mt ca s mi s xut hin, trong ca s ny
chng ta c th nhp vo on chng trnh cn thit v lu chng vo trong cng (chng
trnh s t ng lu file ny vi phn m rng .m). Tt c cc lnh trong tp tin ny s c
thc thi mt cch tun t trong MATLAB. m-file c th c thc thi th chng phi c
lu vo nhng th mc m MATLAB c th thy c, y chnh l cc th mc nm trong
danh sch ng dn ca MATLAB. Chng ta s cp mt tit hn v m-file trong nhng
phn sau.
V d 5-1. To mt m-file short.m cha hai dng lnh sau y v thc thi chng bng lnh
short.
x = 0:0.5:4;
plot(x, sin(x), '*-');
# Bi tp 5-6.
Hy xc nh cc gi tr tr v ca mi on chng trnh di y, (lu rng khng phi
tt c cc lnh u ng).
1. if n > 1 a) n = 7 m = ?
m = n + 2 b) n = 0 m = ?
else c) n = -7 m = ?
m = n - 2
end
2. if s <= 1 a) s = 1 t = ?
t = 2z b) s = 7 t = ?
elseif s < 10 c) s = 57 t = ?
t = 9 - z d) s = 300 t = ?
elseif s < 100
t = sqrt(s)
else
t = s
end
3. if t >= 24 a) t = 50 h = ?
z = 3t + 1 b) t = 19 h = ?
elseif t < 9 c) t = -6 h = ?
z = t^2/3 - 2t d) t = 0 h = ?
else
Biu thc r nhnh

55
z = -t
end
4. if 0 < x < 7 a) x = -1 y = ?
y = 4x b) x = 5 y = ?
elseif 7 < x < 55 c) x = 30 y = ?
y = -10x d) x = 56 y = ?
else
y = 333
end
# Bi tp 5-7.
To mt on chng trnh nhp vo gi tr N v tnh ton tr v gi tr C (s dng cu
trc if elseif ). S dng lnh input yu cu nhp vo mt gi tr (s dng lnh help
input hiu r hn cch s dng ca lnh input).
( ]
( ]
( ]

>

+

=
5 5 , / 4 8 19 . 0
5 5 , 3 1 , 43 . 0
3 1 , 1 . 0 ), 14 . 0 1 ( / 24
1 . 0 , 0 , / 24
0 , 0
7 . 0
e N N e
e e N
e N N N
N N
N
C
S dng on chng trnh trn tnh C vi N = -3e3, 0.01, 56, 1e3, 3e6 (lu rng 3e3
c th hin trong MATLAB l 3*10^3).
# Bi tp 5-8.
Vit mt on chng trnh nhp vo mt s nguyn v kim tra n c chia ht cho 2 hay 3
khng. Thc hin vi tt c cc trng hp c th: chia ht cho c 2 v 3, chia ht cho 2
nhng khng chia ht cho 3, (s dng lnh rem).
Cu trc switch cng thng c s dng trong biu thc iu kin, switch chuyn i gia
cc trng hp ph thuc vo gi tr ca mt biu thc, biu thc ny c th l s hay l
chui.

switch biu thc
case choice1
khi lnh th 1
case choice2
khi lnh th 2

otherwise
khi lnh
end
method = 2;
switch method
case { } 2 , 1
disp('Method is linear.');
case 3
disp('Method is cubic.');
case 4
disp('Method is nearest.');
otherwise
disp('Unknown method.');
end
V d C php
Biu thc r nhnh

56
Nhng pht biu trong lnh case u tin c biu thc ng s c chn thc thi. Biu
thc c th l mt s hay l mt chui k t. Trong trng hp l s, nhm lnh c chn
nu biu thc = choice. Cn trong trng hp l chui biu thc c chn khi strcmp(biu
thc, choice) tr v gi tr 1 (ng) (lnh strcmp c s dng so snh hai chui vi
nhau).
Lu rng cu trc switch ch cho php thc thi duy nht mt nhm lnh.
# Bi tp 5-9.
Gi s rng bin thng c gi tr t 1 n 12. S dng cu trc switch, vit mt on chng
trnh nhp vo gi tr ca bin thng, kt qu tr v l s ngy trong thng v tn thng
(November, October, December, ).
5.3. 0N0 L4F
Cu trc vng lp s lp li mt khi cc pht biu cho n khi mt s iu kin khng cn
tha mn. C hai kiu cu trc lp ph bin l for v while.
Vng lp for s thc hin mt nhm cc pht biu trong mt s ln xc nh.

Trong cu trc vng lp for, step c th l s m, index c th l mt vector. Xem cc v d
sau:

Vng lp while thc hin mt nhm cc pht biu cho n khi biu thc iu kin l
FALSE.






for i = 1 : 2 : n

end
for i = n : -1 : 3

end
V d 2 V d 1
for i = 0 : 0.5 : 4
disp(x^2);
end
for i = [25 9 8]
disp(sqrt(x));
end
V d 4 V d 3
for index = first : step : last
nhm cc pht biu
end
sumx = 0;
for i = 1:length(x)
sumx = sumx + x(i);
end
V d C php
while biu thc iu kin
pht biu 1;
pht biu 2;
pht biu 3;

end
N = 100;
iter = 1;
msum = 0;
while iter <= N
msum = msum + iter;
iter = iter + 1;
end;
V d C php
Biu thc r nhnh

57

Sau y l mt v d n gin, s dng cu trc vng lp v th hm f(x) = cos(nx) vi
n = 1, , 9 trong cc ca s con (subplots) khc nhau.
figure
hold on
x = linspace(0, 2*pi);
for n=1:9
subplot(3, 3, n);
y = cos(n*x);
plot(x, y);
axis tight
end
Cho hai vector x v y, v d sau y s dng cu trc vng lp to ra mt ma trn c cc
thnh phn c nh ngha nh sau: A
ij
= x
i
y
j
.
n = length(x);
m = length(y);
for i=1:n
for j=1:m
A(i,j) = x(i) * y(j);
end
end
S dng cu trc vng lp while lm li v d trn vi x = [1 2 -1 5 -7 2 4] v y = [3 1
-5 7].
n = length(x);
m = length(y);
i = 1; j = 1; % gn gi tr ban u cho i v j
while i <= n
while j <= m
A(i,j) = x(i) * y(j);
j = j+1; % tng j ln 1
end
i = i+1; % tng i ln 1
end
# Bi tp 5-10.
S dng cu trc vng lp tnh tng ca bnh phng 50 s u tin.
# Bi tp 5-11.
Vit on chng trnh tm s ln nht ca n sao cho: 1000 ... 2 1
2 2 2
< + + + n
# Bi tp 5-12.
Biu thc r nhnh

58
S dng cu trc vng lp vit cc on chng trnh sau y:
1. Cho vector x = [1 8 3 9 0 1], cng tt c cc thnh phn ca vector (kim tra li vi
lnh sum)
2. Cho x = [4 1 6 -1 -2 2] v y = [6 2 -7 1 5 -1], xc nh ma trn c cc thnh phn
nh sau:

j
i
ij
x
y
a =

i i i
y x b =

( )
j i
i
ij
y x
x
c
+ +
=
2


( )
j i
ij
y x
d
, max
1
=
3. Cho mt ma trn A bt k, vit on chng trnh xc nh ma trn B l ma trn
nghch o ca ma trn A (kim tra li vi ton t A).
4. To mt ma trn ngu nhin A bng lnh rand, xa b tt c cc thnh phn nh hn
0.5 ca A.
# Bi tp 5-13.
Vit on chng trnh yu cu nhp vo gi tr nhit
o
C (bin tc) v tnh ton gi tr nhit

o
F tng ng (bin tf), 32 *
5
9
+ = tc tf . on chng trnh s chy cho n khi khng
c s no c nhp bin i. S dng lnh input nhp vo cc gi tr v lnh isempty
kim tra c gi tr no c nhp hay khng (s dng lnh help input v lnh help
isempty hiu r thm).
# Bi tp 5-14.
S dng cu trc while vit on chng trnh tm gi tr dng nh nht ca x (ly 4 s l)
sao cho 92 . 0 ) cos( ) sin( 91 . 0 < + < x x .
# Bi tp 5-15.
S dng cu trc vng lp for vit mt on chng trnh nhp vo hai s a v b, sau cho
bit s tng quan gia chng (ln hn, nh hn, bng).
Biu thc r nhnh

59
Danh sch cc lnh v hm c gii thiu trong chng 5
Cc lnh r nhnh
for ... end Vng lp c s ln lp hu hn
if ... end
if ... else ... end
if ... elseif ... else ... end
R nhnh theo iu kin
switch ... case ... end R nhnh theo iu kin
while ... end Lp theo iu kin
Cc hm khc
all Tr v gi tr true nu tt c cc phn t ca mt vector u khc 0
any Tr v gi tr true nu t nht mt phn t ca vector khc 0
disp Hin th mt chui ln mn hnh
find Tm v tr ca cc phn t khc 0 trong mt vector
input Yu cu ngi s dng nhp mt chui v tr v chui c nhp
isempty Kim tra mt ma trn c rng hay khng
rand Ma trn ngu nhin vi cc thnh phn phn b u trn (0,1)
rem Tnh phn d ca php chia hai s
xor Xor hai phn t logic

Tp lnh v hm

60
Chng 6
6. Ta LNN 9a NaN

6.I. I4F LNh M-FIL
gii quyt nhng vn n gin, s lnh s dng trong chng trnh t, cc lnh ca
MATLAB c th c nhp trc tip vo ca s lnh. Tuy nhin trong trng hp phc tp,
s lnh cn c s dng l kh nhiu v do vy vic nhp trc tip vo ca s lnh l khng
kh thi. Gii php trong trng hp ny l s dng tp lnh m-file. Ngoi u im trong
trng hp chng trnh cn s dng nhiu lnh, tp lnh m-flie cn hu ch khi chng ta
mun thay i mt vi gi tr ca bin hay cho chng trnh thc thi nhiu ln. Trong trng
hp ny, m-file l mt tp tin cha mt chui cc lnh hay pht biu trong MATLAB. Tuy
nhin do chng khng c cc i s vo v ra nn tp tin m-file khng phi l hm, n n
gin ch l tp hp ca nhiu lnh c thc thi mt cch trnh t.
# Bi tp 6-1.
M chng trnh son tho ca MATLAB (chn File trn thanh cng c, chn New v sau
chn m-file) nhp vo ca s chng trnh cc dng lnh sau y v lu tp tin vi tn
sinplot.m
x = 0:0.2:6;
y = sin(x);
plot(x,y);
title('Plot of y = sin(x)');
Thc thi tp tin va to bng cch: trong ca s lnh ca chng trnh MATLAB, nhp vo
lnh sinplot. Quan st cc kt qu thu c.
>> sinplot
# Bi tp 6-2.
on chng trnh trong bi tp 51 c s dng v hnh sin. Tng t nh bi tp 51 hy
to cc tp lnh v nhng th hm sau y:
- V th hm
) cos(
2
x
y = vi x trong khong [-10, 10].
- V hm
2
x y = v
2
y x = trong cng mt ca s hnh. Cng thm vo ta v cc
m t ca th.
# Bi tp 6-3.
To mt tp lnh cubic_roots yu cu nhp vo ba bin a, b, c v kt qu tr v l nghim ca
phng trnh bc ba: 0
2
= + + c bx ax .
# Bi tp 6-4.
Hy vit mt tp lnh yu cu nhp vo hai s a v b. Xc nh nh cn li ca tam gic u
c hai nh l [a, a] v [a, b]. V tam gic u va mi c xc nh, t hnh tam gic vi
lnh fill (s dng lnh help fill tm hiu cch s dng ca lnh ny).
Tp lnh v hm

61
6.2. h4M M-FIL
Hm m-file l mt chng trnh con do chng yu cu cc i s ng vo v c th tr v i
s ng ra. Cc bin c nh ngha v s dng trong hm th ch c gi tr bn trong hm .
C php tng qut ca mt hm nh sau:
function [outputArgs] = function_name(inputArgs)
outputArgs (i s ng ra) c t trong du []:
- tn cc i s ng ra c lit k v cch nhau bi du ,
- c th khng s dng du [] nu ch c duy nht mt i s.
- mt hm cng c th khng c i s ng ra
1
.
outputArgs (i s ng vo) c t trong du ():
- tn cc i s ng vo c lit k v cch nhau bi du ,
- mt hm cng c th khng c i s ng vo.
Cu trc chung ca mt hm trong MATLAB nh sau:
- Dng u tin l nh ngha ca hm, dng ny bao gm: t kha khai bo hm, tn
hm v cc i s ng vo v ng ra.
- Tip theo l cc dng ch thch, cc dng ny c bt u bi du %, ni dung ca
cc dng ny l gii thch mc ch ca hm cng nh m t ngha cc i s ng
vo v ng ra. Cc dng ch thch ny s xut hin khi ta s dng lnh help tm
hiu v hm chng ta ang to ra.
- Cui cng l phn ni dung, y chnh l phn chnh ca hm. Vic thc thi ni dung
ca hm s kt thc khi chng trnh gp lnh return hoc thc thi xong lnh cui
cng. Khi qu trnh thc thi kt thc cc i s ng ra s c tr v. V d hm
average c nh ngha nh sau:











Lu rng tn ca hm v tn ca file lu phi ging nhau. Trong trng hp trn, hm nn
c lu vi tn average.m.

1
Trong cc ngn ng lp trnh khc, mt hm khng c i s ng ra c gi l th tc.
function avr = average(x)
% AVERAGE tnh gi tr trung bnh ca vector x
% v gn kt qu vo bin avr.

% Lu : y l mt v d v cu trc hm
n = length(x);
avr = sum(x)/n;
return;
i s ng ra Tn hm i s ng vo
Dng u tin l
dng nh ngha hm
Ch thch
Dng trng trong ch thch; Mc
lu s khng xut hin khi ta s
dng lnh help average
Ni dung ca hm
Tp lnh v hm

62
# Bi tp 6-5.
To hm average (c phn ch thch) v lu vi tn average.m. Kim tra kh nng v cng
dng ca hm bi lnh help average. Thc thi hm average.m bng lnh avr1 =
average(1:10). Gii thch cc kt qu t c.
Mt v d khc v hm:
function d = determinant(A)
%DETERMINANT Tnh nh thc ca ma trn A.
[m,n] = size(A);
if (m ~= n)
disp ('Li. Ma trn khng phi l ma trn vung.');
return;
else
d = det(A); % det l hm c bn ca MATLAB.
end
return;
Hm error c th c s dng kim tra cc iu kin ca thng s. Hm ny s hin th
mt thng bo li, l i tt c cc lnh khc trong chng trnh v quay v ca ca s lnh
ca chng trnh MATLAB. V d hy to mt tp lnh cha on chng trnh sau y,
on chng trnh ny kim tra iu kin ca thng s a.
a = input(Hy nhp vo gi tr ca a:);
if (a >= 1)
error ('a phi nh hn 1');
end
# Bi tp 6-6.
Vit hm [elems, mns] = nonzero(A), vi i s ng vo l ma trn A v gi tr tr v l
vector elems cha tt c cc thnh phn nonzero ca A, i s mns cha gi tr trung bnh
tng ct ca A.
# Bi tp 6-7.
Vit hm [A,B] = sides(a,b,c), vi i s ng vo l 3 s dng. Nu 3 s c th l ba
cnh ca mt tam gic chng trnh s tr v gi tr din tch v chu vi ca n. Trong trng
hp cn li th thng bo li cho cc trng hp.
# Bi tp 6-8.
Vit hm [A] = matrix(n, m, min, max), cc i s ng vo l cc s nguyn. Nu n v m l
cc s dng, chng trnh s tr v mt ma trn nxm c cc thnh phn l cc s ngu nhin
trong khong [min, max]. Thng bo li cho cc trng hp cn li.
# Bi tp 6-9.
Vit hm [x1, x2] = bac_hai(a, b, c). Trong trng hp a, b, c khc zero, chng trnh tr v
nghim ca phng trnh ax
2
+ bx + c = 0. Thng bo li cho cc trng hp cn li.
Mt hm m-file c th cha nhiu hn mt hm. Trong trng hp mt m-file cha nhiu
hm th hm xut hin u tin c gi l hm chnh, hm chnh vn c cc tnh cht thng
thng ca mt hm: cch hot ng, cc i s, tn hm , . Nhng hm cn li c gi l
Tp lnh v hm

63
hm con, chng ch c th c truy xut t hm chnh v khng th c truy xut t bt k
hm no khc, k c t ca s lnh. Cu trc ca mt hm con cng gm ba phn: khai bo
hm, ch thch v thn hm. Cc hm con cn c s dng trong trng hp mt hm qu
di hay qu phc tp. V d hm average by gi l mt hm con ca hm stat.m.
function [a,sd] = stat(x)
% STAT Simple statistics.
% Computes the average value and the standard deviation of a
vector x.
n = length(x);
a = average(x,n);
sd = sqrt(sum((x - avr).^2)/n);
return;

function a = average (x,n)
% AVERAGE subfunction
a = sum(x)/n;
return;
Trong on chng trnh trn, lnh a = average(x, n) c s dng trong ni dung ca hm
stat gi mt hm con. Trong trng hp ny stat l hm chnh v average l hm con.
6.2.I. Nh0N0 8IN 040 8II I80N0 h4M
Khi mt hm c s dng, chng trnh s t ng to ra hai bin ni l nargin, nargout.
Bin nargin l s i s ng vo c s dng khi gi hm, nargout l s i s ng ra.
Phn tch hm sau y:
function [out1,out2] = checkarg (in1,in2,in3)
%CHECKARG Mt v d s dng bin nargin v nargout.
if (nargin == 0)
disp('no input arguments');
return;
elseif (nargin == 1)
s = in1;
p = in1;
disp('1 input argument');
elseif (nargin == 2)
s = in1+in2;
p = in1*in2;
disp('2 input arguments');
elseif (nargin == 3)
s = in1+in2+in3;
p = in1*in2*in3;
disp('3 input arguments');
Tp lnh v hm

64
else
error('Too many inputs.');
end
if (nargout == 0)
return;
elseif (nargout == 1)
out1 = s;
else
out1 = s;
out2 = p;
end
Trong v d trn, chng trnh s cho ra cc kt qu khc nhau ty thuc vo c bao nhiu
i s ng vo c s dng v c bao nhiu i s ng ra. Trong cc chng trnh ln, mt
cch tng qut ngi ta thng hay s dng bin nargin v nargout iu khin linh hot
ni dung ca chng trnh.
# Bi tp 6-10.
Xy dng hm checkarg vi ni dung nh trn, hy gi hm checkarg vi cc i s ng
vo v ng ra khc nhau. Mt s trng hp gi :
>> checkarg
>> s = checkarg(-6)
>> s = checkarg(23,7)
>> [s,p] = checkarg(3,4,5)
6.2.2. 8IN I04N 000 4 8IN 000 80
Mi hm m-file truy cp n mt phn ring bit ca b nh trong khng gian lm vic ca
MATLAB. iu ny c ngha l mi hm m-file c nhng bin cc b ca ring n, nhng
hm khc khng th truy cp n cc bin ny. hiu r hn chng ta hy phn tch s
sau y:






Hnh 6.1
Cc bin a, b, c xut hin trong khng gian lm vic ca MATLAB, trong khi cc bin x, y, z
ch c gi tr bn trong hm myfun. Tuy nhin, nu ta khai bo bin dng ton cc th tt c
cc hm khc u c th s dng c bin ny (tham kho thm bng lnh help global).
Lu rng chng ta nn cn thn khi s dng bin ton cc, n d gy nn nhng xo trn v
nhm ln.
MATLAB myfun.m
>> a = -1;
>> b = 20;
>> c = myfun(a, b);

(a, b) (x, y)
c z
function z = myfun(x, y)

z = x + cos(x-y)
return;
Tp lnh v hm

65
6.2.3. 040h 00I h4M 0I4N IIF
chng trnh tr nn tng qut hn ta nn s dng cch gi hm gin tip, trong trng
hp ny tn hm c coi nh l mt i s ng vo. Ta s dng lnh feval (function
evaluation) gi hm gin tip. Cch s dng thng thng ca lnh feval nh sau:
[y1, .., yn] = feval (F, x1, ..., xn),
vi F l tn ca hm c nh ngha trong MATLAB, x1, .. xn l cc i s ng vo,
y1, , yn l cc i s ng ra. V d:
>> x = pi; y = cos(x);
>> z = feval('cos', x);
Lnh sau th tng ng vi c hai lnh u tin. Mt cch s dng khc ca hm feval.
>> F = 'cos';
>> z = feval(F, x)
Cch gi hm gin tip l mt cng c cn thit xy dng chng trnh xem hm nh l
mt i s.
# Bi tp 6-11.
Hy miu t hot ng ca hm funplot sau:
function funplot (F, xstart, xend, col);
%FUNPLOT makes a plot of the function F at the interval
% [xstart, xend]. The plot should be made in one
% of the standard Matlab colors, so 'col' is one
% of the following value:
% 'b','k','m','g','w','y' or 'r'.
% default values:
% [xstart,xend] = [0,10]
% col = 'b'
% Note: illustrates the use of feval command

if (nargin == 0)
error ('No function is provided.');
end
if (nargin < 2)
xstart = 0;
xend = 10;
end
if (nargin == 2)
error ('Wrong number of arguments. You should provide xstart
and xend.');
end
if (nargin < 4)
Tp lnh v hm

66
col = 'b';
end

if (xstart == xend),
error ('The [xstart, xend] should be a non-zero range.');
elseif (xstart > xend),
exchange = xend;
xend = xstart;
xstart = exchange;
end

switch col
case { } r' ' , y' ' , w' ' , g' ' , m' ' , k' ' , b' ' ; % do nothing; the right color choice
otherwise
error ('Wrong col value provided.')
end

x = linspace(xstart, xend);
y = feval(F, x);
plot (x, y, col);
description = ['Plot of ', F];
title (description);
return;
Lu cch ghi ch thch, bin nargin v cu trc switch.
Hy s dng hm funplot va to v cc th hm khc nhau, v d: sin, cos, exp, .
6.3. I4F IIN 4 h4M
im khc nhau c bn nht gia tp tin v hm l tt c cc tham s v bin s trong tp tin
u c th c s dng t bn ngoi (cc tham s v bin ny nm trong workspace), trong
khi cc bin ca hm ch c gi tr bn trong hm v khng c truy xut hoc s dng
bi cc hm khc. Do vy trong trng hp cn gii quyt mt vn vi cc thng s bt k
ta nn s dng hm, cn trong trng hp cn th nghim nhiu ln mt vn ta nn s
dng tp tin.
# Bi tp 6-12.
To ra mt hm binom, c header function b = binom(n, k), tnh gi tr ca nh thc

k
n
.
Lu rng trong trng hp ny ta nn to ra mt hm con factorial tnh gi tri ca biu
thc n * ... * * ! n 2 1 = . Hm factorial c th l mt hm c lp hay cng c th l mt hm
Tp lnh v hm

67
con trong file binom.m. Sau khi to xong hm binom, hy vit mt tp tin tnh ton cc nh
thc

k
n
vi n = 8 v k = 1, 2, .., 8.
# Bi tp 6-13.
Vit mt hm c ba i s l cc s nguyn dng.
- Nu ba s c th l ba cnh ca mt tam gic, kt qu tr v l din tch ca hnh tam
gic . Bit cng thc tnh din tch ca mt tam gic:
) c s )( b s )( a s ( s A = vi
2
c b a
s
+ +
=
- Ngc li nu ba s nhp vo khng phi l ba cnh ca mt tam gic th thng bo li.
# Bi tp 6-14.
Vit mt hm kim tra hai i s nguyn dng c phi l hai s nguyn t tng i hay
khng? Hai s c gi l nguyn t tng i khi chng c c s chung ln nht l 1.
# Bi tp 6-15.
Mt cng ty in lc tnh gi tin in theo t gi sau y:
- 1000/kwh cho 300 kwh u tin.
- 800/kwh cho 300 kwh tip theo.
- 600/kwh cho 200 kwh tip theo.
- 500/kwh cho tt c cc mc s dng in trn 800 kwh.
Hy vit chng trnh tnh tin in theo s kwh.
# Bi tp 6-16.
Vit hm c mt i s l vector x (vector ca cc s nguyn dng), kt qu tr v l vector
y cha cc c s nh nht ln hn 1 ca cc thnh phn trong vector x.
# Bi tp 6-17.
Vit hm sp xp cc thnh phn trong vector x theo th t tng dn hoc gim dn.
# Bi tp 6-18.
Vit chng trnh phn loi sinh vin theo im trung bnh:
- Yu: 5 0 < tb
- Trung bnh: 5 6 5 . tb <
- Kh: 8 5 6 < tb .
- Gii: 9 8 < tb
- Xut sc: 10 9 tb
Tp lnh v hm

68
Danh sch cc lnh v hm c gii thiu trong chng 6
error Hin th mt thng bo li v dng on chng trnh ang thc thi
feval Thc thi mt hm c nh ngha trc
fill T mu mt a gic phng (2D)
global nh ngha bin ton cc
return Kt thc gi hm v tr v gi tr ca hm

Vn bn

69
Chng 7
7. 9aN 8aN

7.I. 0h00I K I0
Trong MATLAB vn bn c lu dng l chui ca cc k t. Chui l mt vector m cc
thnh phn ca n lu tr gi tr ASCII ca cc k t trong chui. Do vn bn l mt vector
ca cc k t nn ta cng c th x l vn bn ging nh x l mt vector bt k. V d:
>> t = 'This is a character string'
t =
This is a character string
>> size(t)
ans =
1 27
>> whos
Name Size Bytes Class
t 1x27 54 char array
>> t(10 : 19)
ans =
character
>> t([2, 3, 10, 17])
ans =
hi t
miu t chui di dng m ASCII ta s dng lnh double hoc abs bin i:
>> double(t(1:12))
ans =
84 104 105 115 32 105 115 32 97 32 99 104
Hm char c s dng bin i t dng m ASCII sang k t chui:
>> t([16:17])
ans =
ct
>> t([16:17])+3 % m ASCII c s dng.
ans =
102 119
>> t([16:17])-3 % thay i m ASCII
ans =
96 113
>> char(t([16:17])-2) % bin i m ASCII sang k t chui.
Vn bn

70
ans =
ar
# Bi tp 7-1.
Thc thi cc lnh c miu t trn, s dng chui t to ra chui u ch cha cc k t
character. Bin i chui u thnh chui u1 = retcarahc.
Sau y l mt s v d v cc hm c s dng bin i chui. V d hm findstr c
s dng tm mt k t hay mt nhm cc k t xut hin trong chui.
>> findstr(t, 'c') % tm v tr ca 'c' xut hin trong t
ans =
11 16
>> findstr(t, 'racter') % tm v tr ca chui 'racter' trong t
ans =
14
>> findstr(t,u) % tm chui u trong chui t
ans =
11
>> strcat(u,u1) % ni hai chui u v u1 li vi nhau
ans =
characterretcarahc
>> strcmp(u,u1) % so snh hai chui
ans = % tr v 1 nu hai chui ging nhau
% v ngc li l 0
0
>> q = num2str(34.35) % bin i s thnh chui
q =
34.35
>> z = str2num('7.6') % bin i chui thnh s.
z =
7.6
>> whos q z % q l chui (ma trn cc k t), z l
s.
Name Size Bytes Class
q 1x5 10 char array
z 1x1 8 double array
>> t = str2num('1 -7 2') % bin i chui thnh vector ca cc
s.
t =
1 -7 2
>> t = str2num('1 - 7 2') % lu cc khong trng xung quanh
Vn bn

71
% du '-' hoc '+', trong trng hp
% ny l: [1-7, 2]
t =
-6 2
Lu rng khi bin i t chui sang s hoc t s sang chui, cc khong trng xung quanh
du - hoc + mang ngha rt quan trng.
>> A = round(4*rand(3,3))+0.5;
>> ss = num2str(A) % bin i ma trn A thnh chui cc k
t.
ss =
-3.5 -3.5 6.5
-2.5 -1.5 0.5
5.5 -1.5 -3.5
>> whos ss
Name Size Bytes Class
ss 3x28 168 char array
>> ss(2,1), ss(3,15:28) % ss l mt ma trn cc k t.
ans =
-
ans =
.5 -3.5
>> ss(1:2,1:3)
ans =
-3.
-2.
# Bi tp 7-2.
Thc thi cc lnh trong v d trn. nh ngha mt chui mi s = 'Nothing wastes
more energy than worrying' v thc hin cc v d vi lnh findstr.
7.2. I04I 4 Nh4F 4N 84N
Lnh input c s dng yu cu ngui dng nhp vo mt s hay mt chui.
>> myname = input('Enter your name: ','s');
>> age = input('Enter your age: ');
Lu ngha ca hai lnh trn, lnh th nht yu cu nhp vo mt chui v lnh th hai yu
cu nhp vo mt s.
C hai hm c s dng xut vn bn l disp v fprintf. Hm disp ch th hin gi tr ca
mt i s l mt ma trn s hay ma trn chui. V d:
>> disp('This is a statement.') % xut ra mt chui.
This is a statement.
>> disp(rand(3)) % xut ra mt ma trn.
Vn bn

72
0.2221 0.0129 0.8519
0.4885 0.0538 0.5039
0.2290 0.3949 0.4239
Hm fprintf (tng t trong ngn ng lp trnh C) c s dng ghi d liu vo file hay
xut ra mn hnh nh dng chnh xc ca i s. V d:
>> x = 2;
>> fprintf('Square root of %g is %8.6f.\n', x, sqrt(x));
Square root of 2 is 1.414214.
>> str = 'beginning';
>> fprintf('Every %s is difficult.\n',str);
Every beginning is difficult.
Hm fprintf c kh nng bin i, nh dng v ghi i s ca n vo mt file hay th hin
chng trn mn hnh theo mt nh dng c bit. C php sau y c s dng xut ra
mn hnh:
fprintf (format, a, ...)
Chui format cha cc k t thng thng s c a n ng ra v cc ch nh bin i,
mi ch nh bin i s chuyn i mt i s ca hm fprintf thnh chui k t c nh
dng tng ng v sau in ra mn hnh. a l cc i s ca hm fprintf. Mi ch nh bin
i bt u bng k t % v kt thc bi mt k t chuyn i. Gia % v k t chuyn i
c th l:
du -: khi c k t ny i s s c in ra vi nh dng canh l tri, trong trng
hp ngc li, mc nh l canh l phi.
s xc nh chiu di ti thiu: l phm vi ti thiu m i s s c in ra, trong
trng hp chiu di ca i s ln hn chiu di ti thiu th phm vi in ra s bng
vi chiu di ca i s.
s xc nh s cc ch s thp phn
du .: l du dng phn bit hai nh dng trn.
Bng 7.1: Mt s k t chuyn i v ngha ca chng
K t ngha.
d bin i i s sang kiu s thp phn
u bin i i s sang kiu s thp phn khng du
c bin i i s thnh mt k t
s bin i i s thnh mt chui
e bin i s single hay double thnh s thp phn c dng
[]m.nnnnnnE[]xx. Xem thm v d bn di
f bin i s single hay double thnh s thp phn c dng []mmm.nnnnnn.
Xem thm v d bn di
g nh dng ging trng hp e v f nhng c vit dng ngn hn. Cc s
zero khng c ngha s khng c in ra
Vn bn

73
Cc nh dng \n, \r, \t, \b ln lt c s dng to ra mt dng mi, xung dng, tab
v tab ngc (ngc vi phm tab). in ra ra k t \ ta s dng \\, tng t, in ra k
t % ta s dng %%. Phn tch v d sau y:
>> fprintf('look at %20.6e!\n', 1000*sqrt(2))
look at 1.414214e+3!
>> fprintf('look at %-20.6f!', 1000*sqrt(2))
look at 1414.213562 !
Trong c hai trng hp, khong ti thiu in i s l 20 v s ch s thp phn l 6.
Trong trng hp u, gi tr 1000*sqrt(2) c nh dng canh l phi v trong trng hp
th hai, bi v c du - nn gi tr 1000*sqrt(2) c nh dng canh l tri. S khc nhau
ca hai kt qu cn do ngha ca cc k t bin i e v f.
# Bi tp 7-3.
S dng lnh input nhp vo cc gi tr ca mt vector. Sau s dng lnh disp hay lnh
fprintf xut vector mi va to ra mn hnh.
# Bi tp 7-4.
Xem xt cc v d sau y v lnh fprintf v sau t lm cc bi tp tng t hiu r
hn v cc ch nh ny:
>> str = 'life is beautiful';
>> fprintf('My sentence is: %s\n',str); % lu nh dng \n
My sentence is: life is beautiful
>> fprintf('My sentence is: %30s\n',str);
My sentence is: life is beautiful
>> fprintf('My sentence is: %30.10s\n',str);
My sentence is: life is be
>> fprintf('My sentence is: %-20.10s\n',str);
My sentence is: life is be
>>
>> name = 'John';
>> age = 30;
>> salary = 6130.50;
>> fprintf('My name is %4s. I am %2d. My salary is f %7.2f.\n',name,
age, salary);
My name is John. I am 30. My salary is f 6130.50.
>>
>> x = [0, 0.5, 1];
>> y = [x; exp(x)];
>> fprintf('%6.2f %12.8f\n',y);
0.00 1.00000000
0.50 1.64872127
1.00 2.71828183
Vn bn

74
>>
>> fprintf('%6.1e %12.4e\n',y);
0.0e+00 1.0000e+00
5.0e-01 1.6487e+00
1.0e+00 2.7183e+00
>>
>> x = 1:3:7;
>> y = [x; sin(x)];
>> fprintf('%2d %10.4g\n',y);
1 0.8415
4 -0.7568
7 0.657
Lu rng lnh fprintf s dng cc ch nh bin i khai bo c bao nhiu i s theo
sau v kiu ca tng i s. Nu chng ta khng cung cp i s hay cung cp i s
khng ng kiu th chng ta s nhn c mt kt qu khng ng. Do vy, cn cn thn vi
vic khai bo i s trong lnh fprintf. Xem xt v d sau:
>> fprintf('My name is %4s. I am %2d. My salary is f
%7.2f.\n',name,salary);
My name is John. I am 6.130500e+03. My salary is f
Ch rng lnh sprintf cng tng t nh lnh fprintf ngoi tr lnh sprintf c s dng
gn kt qu cho mt chui. Xem xt v d sau y:
>> str = sprintf('My name is %4s. I am %2d. My salary is f
%7.2f.\n',name,age,salary)
str =
My name is John. I am 30. My salary is f 6500.50.
# Bi tp 7-5.
nh ngha chui s = 'How much wood could a wood-chuck chuck if a wood-
chuck could chuck wood?', s dng lnh findstr tm cc v tr xut hin cc chui con
wood, o, uc hay could trong chui s.
# Bi tp 7-6.
Vit mt tp tin hay hm bin i s La M sang gi tr thp phn tng ng.
I V X L C D M
1 5 10 50 100 500 1000
V d: IV(4), IX(9), XL(40), XC(90), CD(400) v CM(900).
Vit mt hm lm cng vic ngc li, bin i s thp phn sang s La M.
# Bi tp 7-7.
Vit hm m ha v gii m theo lut sau y: tt c cc k t trong chui s c gi tr ASCII
ca n dch i n, vi n l mt i s. V d trong trng hp n = 1, chui abcde s c m
ha thnh bcdef v alphabet c m ha thnh bmqibcfu. Trong trng hp ny z s
Vn bn

75
c m ha thnh a. M ha vi n = 26 s cho ta ta kt qu l chui nhp vo. Vit hai
hm coder v decoder, mi hm c hai i s, i s th nht l chui cn m ha/gii m v
i s th hai l s cn dch n. Trong trng hp m ha, chui nhp vo nn l chui
c m ha.
# Bi tp 7-8.
Vit mt hm xa b tt c cc k t trng trong chui.
# Bi tp 7-9.
Vit mt hm nhp vo mt danh t v tr v dng s nhiu ca n da trn nhng quy tc
sau:
a) Nu danh t kt thc bng y, hy loi b y ri thm vo ies
b) Nu danh t kt thc bng s, ch hay sh hy thm vo es
c) Trong cc trng hp khc thm s.
# Bi tp 7-10.
Vit chng trnh o ngc cc t trong chui. V d Nguyen Van An thnh An Van
Nguyen.
Vn bn

76
Danh sch cc hm c gii thiu trong chng 7
abs Chuyn kiu k t thnh m ASCII
char Chuyn m ASCII thnh k t
disp Hin th mt chui ra ca s lnh ca MATLAB
double Chuyn kiu k t thnh m ASCII
findstr Tm mt chui trong mt chui khc
fprintf Bin i nh dng mt chui v ghi vo mt file hoc hin th ra mn hnh
input Yu cu ngi s dng nhp vo mt chui v tr v chui c nhp
sprintf Ging fprintf nhng kt qu c gn cho mt chui

Giao din ngi s dng

77
Chng 8
8. 0Ia0 0IN N000I 80 00N0 (00I)

Giao din ngi s dng (Graphical User Interface GUI) l giao din bng hnh nh ca
chng trnh. Mt GUI tt c th lm cho chng trnh tr nn d s dng bng cch cung
cp nhng thng tin ban u cn thit v vi nhng cng c iu khin nh: nt nhn
(pushbutton), hp lit k (list box), thanh trt (slider), trnh n (menu), . GUI nn c
thit k mt cch d hiu v thn thin ngi s dng c th hiu v d on c kt qu
ca mt tc ng.
8.I. 040h L4M I0 004 M0I 00I
GUI bao gm cc nt nhn, hp lit k, thanh trt, menu, , chng cung cp cho ngi s
dng mt mi trng lm vic thn thin h tp trung vo cc ng dng ca chng trnh
hn l i tm hiu cch thc lm vic ca chng trnh. Tuy nhin, to ra GUI l cng vic
kh khn i vi ngi lp trnh bi v chng trnh phi c x l vi cc click chut cho
bt k thnh phn no ca GUI v vo bt k thi im no. Trong MATLAB, to ra mt
GUI lu ba yu cu chnh sau y:
Component (cc thnh phn): mi i tng trong GUI (nt nhn, nhn, hp son tho,
) l mt thnh phn. Cc thnh phn c phn loi thnh: cng c iu khin (nt nhn,
hp son tho, thanh trt, ), cc thnh phn tnh (khung hnh, chui k t, ), menu v
axes (l cc h trc dng hin th hnh ha). Cc cng c iu khin v cc thnh phn
tnh c to ra bi hm uicontrol, menu c to ra bi cc hm uimenu v
uicontextmenu, axes c to ra bi hm axes.
Figure: cc thnh phn ca GUI phi c sp xp vo trong mt figure, l mt ca s
c hin th trn mn hnh my vi tnh. Trong cc chng trc, mt figure c t ng
to ra khi v th. Lnh figure to ra mt figure c s dng cha cc thnh phn ca
GUI.
Callback: cui cng, khi ngi s dng tc ng vo chng trnh bng cch nhn chut
hay g bn phm th chng trnh phi p ng li mi s kin ny. V d, trong trng hp
ngi s dng tc ng vo mt nt nhn th MATLAB s thc thi mt hm tng ng vi
nt nhn . Mi thnh phn ca GUI phi callback mt hm tng ng ca n.
Cc thnh phn c bn ca GUI c tm tt trong bng 8.1 v c th hin trong hnh 8.1.
Chng ta s tm hiu nhng thnh phn ny thng qua cc v d v sau s dng chng
to ra cc GUI.








Giao din ngi s dng

78
Bng 8.1 Mt s thnh phn c bn ca GUI
Cng c To bi hm Miu t
Cc cng c iu khin
Pushbutton uicontrol L mt nt nhn. N s gi hm khi nhn vo n.
Toggle button uicontrol L nt nhn c hai trng thi l on v off. Khi c tc ng n s gi hm
tng ng v thay i trng thi t on sang off hoc ngc li.
Radio button uicontrol Cng l mt nt nhn c hai trng thi c th hin bi mt vng trn nh,
trng thi on tng ng vi trng hp c du chm gia vng trn v
ngc li l trng thi off. Trong mt nhm Radio button ta ch c th chn
c mt thnh phn. Khi c tc ng vo mi thnh phn s c mt hm
c gi.
Check box uicontrol Cng l mt nt nhn c hai trng thi c th hin bi mt hnh vung nh,
trng thi on tng ng vi trng hp c nh du gia hnh vung v
ngc li l trng thi off. Khi c tc ng n s gi hm tng ng v
thay i trng thi t on sang off hoc ngc li.
List box uicontrol L mt danh sch cc chui. Ngi s dng c th chn mt chui bng cch
click hoc double click vo n. Chng trnh s gi mt hm khi c mt
chui c chn.
Popup menus uicontrol L cng c cho php chng ta chn mt chui trong mt nhm cc chui.
Danh sch tt c cc chui s c hin th khi c click chut. Khi khng c
click chut cng c ch th hin chui hin ti c chn.
Slider uicontrol L cng c cho php iu chnh mt cch lin tc gi tr trong mt thanh
trt. Mi khi gi tr ca thanh trt thay i s c hm c gi.
Cc thnh phn tnh
Frame uicontrol c s dng to ra mt khung hnh ch nht. Frame cn c s dng
nhm cc cng c iu khin li vi nhau. Frame khng c kh nng gi
hm.
Text field uicontrol c s dng to ra mt nhn bao gm cc k t. Text field khng c kh
nng gi hm.
Memu v trc th
Menu items uicontrol c s dng to ra menu trn thanh cng c. Chng trnh s gi hm
khi mt i tng trong menu c chn.
Context menus uicontextmenu c s dng to ra menu xut hin khi right-click vo mt hnh trong
giao din.
Axes axes c s dng to mt h trc th. Axes khng c kh nng gi hm.
Giao din ngi s dng

79

8.2. I40 4 hIN Ihj M0I 00I
Trong MATLAB, cng c guide c s dng to ra cc GUI, cng c ny cho php b
tr, la chn v sp xp cc thnh phn. Cc thuc tnh ca mi thnh phn: tn, mu sc, kch
c, font ch, u c th c thay i. Cng c guide c thc thi bng cch chn File
New GUI, khi c gi guide s to ra mt Layout Editer, nh hnh 8.2. Vng mu xm
c nhng ng k l vng lm vic, trong vng ny chng ta c th sp xp cc thnh phn
to nn giao din. bn tri vng lm vic l cc thnh phn c sn trong GUI. Chng ta
c th to ra bt k thnh phn no bng cch click vo biu tng ca n, sau ko vo th
vo vng lm vic. Bn trn vng lm vic l thanh cng c bao gm cc cng c thng s
dng. Sau y l cc bc c bn to ra mt giao din trong MATLAB:
Xc nh cc thnh phn ca giao din v hm b tc ng bi mi thnh phn. Pht
ha trn giy v tr ca cc thnh phn.
M cng c to GUI (File New GUI), sp xp cc thnh phn vo vng lm vic.
Nu cn thit, thay i kch thc ca vng lm vic cng nh ca mi thnh phn.
Thit lp thuc tnh ca mi thnh phn chng hn nh: tn, mu sc, hin th,
Lu giao din va to. Khi lu mt giao din MATLAB s to ra hai file c cng tn
nhng khc phn m rng. File c phn m rng .fig cha ni dung ca giao din,
trong khi file c phn m rng .m cha nhng on m lin quan n giao din.
Vit hm thc thi lnh gi ca mi thnh phn trong giao din.

Hnh 8.1 Mt s thnh phn to nn giao din trong MATLAB.
Giao din ngi s dng

80

hiu r hn hy xt v d sau y. Trong v d ny, giao din n gin ch gm mt nt
nhn v mt chui k t. Mi khi nhn vo nt nhn dng k t s c cp nht v hin th
s ln nhn vo nt nhn.
Bc 1: Trong v d ny, giao din ch bao gm mt nt nhn v mt dng k t. Hm c
gi t nt nhn s cp nht chui k t v th hin s ln nhn vo nt nhn. Phc ha giao
din nh hnh 8.3.

Bc 2: M chng trnh guide bt u b tr cc thnh phn vo ca s lm vic.
Chng trnh guide s m ra mt ca s nh hnh 8.2.
u tin chng ta phi thay i kch thc ca vng lm vic, y chnh l kch thc ca
ton b giao din. Kch thc ca vng lm vic c thay i bng cch ko hnh vung nh
gc di bn tri ca ca s lm vic. Sau chng ta to ra mt nt nhn bng cch nhn
vo biu tng nt nhn, ko v th vo vng lm vic. Lm tng t to ra mt chui k
t. Sau khi thc hin bc ny ta c kt qu nh sau:
Cc thnh
phn ca GUI
Khu vc
thit k
Ko
thay i vng
thit k
Bng
thuc tnh
Canh l
Chy GUI
va to
Hnh 8.2 Ca s to giao din
Hnh 8.3 Phc ha ca mt giao din n gin
Giao din ngi s dng

81

Bc 3: thit lp thuc tnh cho nt nhn, u tin ta phi chn nt nhn cn thit lp cc
thuc tnh, sau chn mc Property Inspector trong thanh cng c. Ta cng c th tin
hnh nh sau, right-click vo i tng v chn mc Inspect Properties. Ca s
Property Inspector c th hin nh hnh 8.5. Ca s ny lit k tt c cc thuc tnh ca
nt nhn v cho php chng ta thay i gi tr ca cc thuc tnh ny.

Hnh 8.4 Ca s th hin ni dung ca giao din
Hnh 8.5 Ca s th hin cc thuc tnh ca nt nhn.
Giao din ngi s dng

82
Vi nt nhn chng ta c th thay i nhiu thuc tnh chng hn nh mu sc, kch c, font
ch, . Tuy nhin chng ta cn phi xc lp hai thuc tnh String property, l dng k t
xut hin trn nt nhn v thuc tnh th hai cn xc lp l Tag property, l tn ca nt nhn.
Trong trng hp ny String property c thit lp l Click Here v Tag property c
thit lp l MyFirstButton. i vi i tng chui k t, chng ta cng thit lp hai thuc
tnh: String property l chui k t xut hin trn giao din v Tag property l tn ca i
tng chui. Tn ca i tng chui l yu cu cn thit trong qu trnh gi hm cp nht
ni dung ca chui. Trong trng hp ny String property c thit lp l chui Total
clicks: 0 v Tag property c thit lp l MyFirstText. Sau khi thc hin cc bc trn
ta c hnh 8.6.


Bc 4: Lu giao din va to vi tn MyFirstGUI. Sau khi lu chng trnh s to ra hai file
MyFirstGUI.fig v MyFirstGUI.m. n y chng ta to xong giao din nhng cha
hon thnh bi tp nh tng ban u. Chng ta c th bt u chng trnh bng cch g
lnh MyFirstGUI trong ca s lnh, kt qu nh hnh 8.7. Chng trnh s khng c hot
ng g khi ta nhn vo nt nhn bi v ta cha lp trnh cho nhng hm c gi. Mt phn
ca file MyFirstGUI.m c trnh by trong hnh 8.8. File ny cha hm MyFirstGUI v
mt s hm con tng ng vi tc ng ca mi thnh phn trong giao din. Nu gi hm
MyFirstGUI trong trng hp khng c i s ng vo th ni dung ca file MyFirstGUI.fig
c th hin. Trong trng hp c i s ng vo khi gi hm MyFirstGUI.fig th i s
u tin l tn ca hm con v cc i s cn li s c a n hm con . Mi hm con
c gi s tng ng vi mt i tng trong giao din. Khi click chut vo mt i tng
th MATLAB s gi hm con tng ng vi i tng . Tn ca hm c gi s l gi tr
Tag property ca i tng tng ng. Tn ca hm chnh l tn ca i tng cng vi
chui k t _Callback. Nh vy hm con tng ng vi nt nhn MyFirstButton s l
MyFirstButton_Callback. File .m ca chng trnh s to ra cc hm con tng ng vi tt
c cc i tng.

Hnh 8.6 Vng thit k sau khi ci t cc thuc tnh.
Giao din ngi s dng

83


Bc 5: Trong bc ny, chng ta s lp trnh cho hm con tng ng vi nt nhn. Trong
hm ny chng ta s s dng mt bin persistent (l bin m gi tr ca n s c nh gia
nhng ln gi hm) m s click chut vo nt nhn. Khi c click chut vo nt nhn,
MATLAB s gi hm MyFirstGUI vi i s u tin l MyFirstButton_callback. Sau
hm MyFirstGUI s gi hm con MyFirstButton_callback, qu trnh ny c th hin
trong hnh 8.9. Trong hm con, gi tr bin m s tng ln khi c click chut, mt chui mi
cha gi tr bin m s to ra v c lu vo trong thuc tnh String property ca i
tng MyFirstText.
Hnh 8.7 G MyFirstGUI trong ca s lnh bt u chng trnh
Hm con tng
ng vi nt nhn
MyFirstButton
Hnh 8.8 Mt phn ni dung ca file .m
Giao din ngi s dng

84

Ni dung ca hm con c lp trnh nh sau:
function MyFirstButton_Callback(hObject, eventdata, handles)

% Khai bo v thit lp gi tr ban u cho bin m count
persistent count
if isempty(count)
count = 0;
end
% Cp nht gi tr bin m
count = count + 1;
% To mt chui mi
str = sprintf(Total clicks: %d,count);
% Cp nht gi tr ca i tng chui
set(handles.MyFirstText,String,str);
Lu rng hm con khai bo bin count c dng bin nh v gn gi tr ban u cho n
l zero.
Kt qu ca giao din sau khi click chut ba ln vo nt nhn nh hnh 8.10.

MyFirstButton_Callback
Total clicks: 0
Pushbutton
MyFirstGUI
Total clicks: 1
Pushbutton
Xy ra s kin:
Click chut vo nt nhn
Hm MyFirstGUI c gi
vi i s u tin l
MyFirstButton Callback
MyFirstGUI s gi hm con
MyFirstButton_Callback
Hm con s cp nht chui
trong MyFirstText
Hnh 8.9 Qu trnh gi hm v cp nhn gi tr m
Giao din ngi s dng

85

8.3. Ih000 INh 004 040 00I I00N0
Mi i tng ca GUI u c mt s thuc tnh m ngi s dng c th thay i ty . Cc
thuc tnh c mt s im khc nhau ty vo tng i tng (figures, axes, uicontrol, ).
c tnh v cch ng dng ca tt c cc thuc tnh ny u c cp n mt cch chi tit
trong phn Help ca MATLAB. Bng 8.2 v bng 8.3 lit k mt s c tnh quan trng nht
ca figure v uicontrol.
Gi tr ca cc thuc tnh ny c th thay i bng Property Inspector hoc thay i trc tip
bng cch s dng lnh get hay set. Trong trng hp thit k mt giao din ta nn s dng
Property Inspector thay i thuc tnh ca cc i tng cn trong phm vi ca mt
chng trnh th chng ta phi s dng lnh get hay set.
Bng 8.2 Mt s thuc tnh c bn ca figure
Tn thuc tnh Miu t Gi tr
Position V tr v khch thc ca
figure
Value: l mt vector gm 4 thnh phn [left, bottom,
width, height]
Default: ph thuc vo trng thi hin ti
Units n v ca cc thnh phn
trong Position.
Values: inches, centimeters, normalized, points, pixels,
characters
Default: pixels
Color Mu nn ca figure.
Values:
(1)

Default: ph thuc vo mu hin ti ca h thng.
MenuBar Tt hay hin thanh cng c
Values: none, figure
Default: figure
Name Tiu ca figure
Values: chui
Default: '' (chui rng)
NumberTitle Hin th "Figure No. n", vi n
l s th t figure
Values: on, off
Default: on
Resize Ca s hnh c th thay i
kch thc c hay khng.
Values: on, off
Default: on
Pointer Chn kiu hnh nh du nhc
chut
Values: crosshair, arrow, watch, topl, topr, botl, botr,
circle, cross, fleur, left, right, top, bottom, fullcrosshair,
ibeam, custom
Default: arrow
Hnh 8.10 Kt qu sau khi nhn nt ba ln
Giao din ngi s dng

86
Bng 8.3 Mt s thuc tnh c bn ca uicontrol
Tn thuc tnh Miu t Gi tr
BackgroundColor
Mu nn ca i tng Value:
(1)

Default: ph thuc vo h thng
ForegroundColor
Mu ch Value:
(1)

Default: [0 0 0]
String
Nhn ca Uicontrol Value: string
Enable
Enable hay disable uicontrol Value: on, inactive, off
Default: on
Style
Kiu ca i tng Value: pushbutton, togglebutton,
radiobutton, checkbox, edit, text, slider,
frame, listbox, popupmenu
Default: pushbutton
Position
Kch thc v v tr ca i
tng
Value: ma trn 1x4
Default: [20 20 60 20]
Units
n v trong vector v tr Value: pixels, normalized, inches,
centimeters, points, characters
Default: pixels
FontAngle
Trng thi ca k t Value: normal, italic, oblique
Default: normal
FontName
Font ch Value: chui
Default: ph thuc vo h thng
FontSize
Kch thc ch Value: kch thc trong FontUnits
Default: ph thuc vo h thng
FontWeight
m nht ca k t Value: light, normal, demi, bold
Default: normal
HorizontalAlignment
Canh l Value: left, center, right
Default: ph thuc vo i tng uicontrol
Callback
Hot ng iu kin Value: string
Max
Gi tr ln nht Value: v hng
Default: ph thuc i tng
Min
Gi tr nh nht Value: v hng
Default: ph thuc i tng
Value
Gi tr hin ti ca i tng Value: v hng hay vector
Default: ph thuc i tng
8.4. 040 Ih4Nh Fh4N I40 NN 00I
Phn ny miu t cch to lp v s dng cc thnh phn i tng trong GUI:
Text Fields
Giao din ngi s dng

87
Edit Boxes
Frames
Pushbuttons
Toggle Buttons
Checkboxes
Radio Buttons
Popup Menus
List Boxes
Slide
8.4.I. Iext F|e|ds
Text Field l mt i tng c s dng th hin chui k t trn mn hnh. Chng ta c
th xc nh thuc tnh canh l ca chui k t. Mc nh, chui k t s c canh gia.
Text Field c to ra bng cch s dng hm uicontrol vi thuc tnh style l text hay
cng c th to ra bi cng c text trong Layout Editor. Text Field khng c kh nng gi
hm nhng gi tr ca n c th c cp nht trong mt hm bng cch thay i thuc tnh
String ca Text Field, nh trong phn 2.
8.4.2. d|t 8oxes
Edit Box l mt i tng cho php ngi s dng nhp vo mt chui k t. Sau khi nhp
xong chui k t v nhn Enter Edit Box s gi hm tng ng ca n. i tng ny c
to ra bng cch s dng hm uicontrol vi thuc tnh style l edit hay cng c th to ra
bi cng c edit box trong Layout Editor. Hnh 8.11a th hin mt giao din n gin gm
mt Edit Box c tn EditBox v mt Text Field c tn l TextBox. Khi ngi s dng
nhp vo khung Edit Box th n t ng gi hm EditBox_Callback nh hnh 8.11b. Chng
trnh ny c nhim v xc nh chui k t c nhp vo, sau gn chui ny cho Text
Field v hin th ln mn hnh giao din. Hnh 8.12 l giao din ca chng trnh khi bt u
v sau khi nhp Hello vo Edit Box.
Giao din ngi s dng

88


8.4.3. Frames
Frame l mt i tng c s dng v hnh ch nht, n cn c s dng nhm cc
i tng c lin quan li vi nhau. V d mt Frame c s dng nhm cc Radio
Button trong hnh 8.1 li vi nhau. Mt Frame c to bng cch s dng hm uicontrol
vi i tng style l frame hay cng c th to ra bi cng c frame trong Layout
Editor.
(a)
function EditBox_Callback(hObject, eventdata, handles)

% Xc nh gi tr g vo Edit Box
str=get(handles.EditBox,'String');

% Gn gi tr vo Text Field
Hnh 8.11 V d v Edit Box v ni dung ca chng trnh con c gi
Hnh 8.12 Giao din ca chng trnh trc v sau khi g Hello vo Edit Box
(a) (b)
Giao din ngi s dng

89
8.4.4. Fushbuttons
PushButton l mt i tng cho php ngi s dng kch hot mt tc v bng cch click
chut vo n. i tng ny c to ra bi hm uicontrol vi thuc tnh style l
pushbutton hay cng c th to ra bi cng c pushbutton trong Layout Editor. Mt v d
v hot ng ca PushButton c miu t bi hm MyFirstGUI trong hnh 8.10.
8.4.5. Iogg|e 8uttons
Toggle Button l mt kiu nt nhn c hai trng thi on v off tng ng vi trng hp b
nhn xung hay khng b nhn xung. Mi khi c click chut vo n, Toggle Button s thay
i trng thi v gi hm tng ng ca n. Thuc tnh Value ca Toggle Button c xc
nh bi gi tr ln nht (thng l 1) khi n trng thi on v c xc nh bi gi tr nh
nht (thng l 0) khi n trng thi off. Kiu nt nhn ny c to ra bng hm uicontrol
vi thuc tnh style l toggle button hay cng c th to ra bi cng c toggle button trong
Layout Editor. Hnh 8.13a trnh by mt giao din n gin bao gm mt Toggle Button tn
ToggleButton v mt Text Field tn TextBox. Khi ngi s dng click vo Toggle
Button n s t ng gi hm ToggleButton_Callback nh trong hnh 8.13b. Hm ny xc
nh trng thi ca nt nhn t thuc tnh Value, sau chng trnh s th hin trng thi
ca nt nhn bi Text Field. Hnh 8.14 th hin giao din trc v sau khi c click chut vo
Toggle Button.
Giao din ngi s dng

90


8.4.6. 0heckboxes ra 8ad|o 8uttons
V c bn Checkbox v Radio Button l tng t vi Toggle Button ngoi tr hnh dng khc
nhau ca chng. Ging nh Toggle Button, Checkbox v Radio Button cng c hai trng thi
ON v OFF. Trng thi ca chng s thay i mi khi c click chut v mt hm tng ng
s c gi. Thuc tnh Value ca Checkbox v Radio Button c xc nh bi gi tr ln
(a)
function ToggleButton_Callback(hObject, eventdata, handles)
% Xc nh trng thi ca toggle button
state = get(handles.ToggleButton,Value);
% Gn gi tr vo Text Field
if state = = 0
set(handles.TextBox,'String',OFF);
else
set(handles.TextBox,'String',ON);
end
(b)
Hnh 8.13 V d v Toggle Button v ni dung ca chng trnh con c gi
(a) (b)
Hnh 8.14 Hai trng thi ON v OFF ca Toggle Button
Giao din ngi s dng

91
nht (thng l 1) khi n trng thi on v c xc nh bi gi tr nh nht (thng l 0)
khi n trng thi off. Hnh dng ca Checkbox v Radio Button c m t trong hnh 8.1.
Hai i tng ny c th c to ra t Layout Editor hay s dng hm uicontrol vi thuc
tnh style tng ng l checkbox v radiobutton. Thng thng CheckBox c s
dng trong cc la chn on/off v mt nhm Radio Button c s dng xc nh mt
trong s cc la chn. Hnh 8.15a th hin mt v d v cch s dng Radio Button. Trong v
d ny, chng trnh s to ra ba Radio Button c nhn l Option 1, Option 2 v
Option 3. Hnh 8.15b th hin cc hm con c gi. Khi ngi s dng click vo mt
Radio Button th hm con tng ng s c thc thi, hm ny s th hin i tng c la
chn, m Radio Button hin ti v tt tt c cc Radio Button khc. Lu rng mt Frame
c s dng nhm cc Radio Button ny li vi nhau. Hnh 8.16 th hin giao din khi
i tng th hai c chn.
8.4.7. Fou Menus
Popup Menu cho php ngi s dng chn mt gi tr trong s cc la chn. Danh sch cc
la chn c xc nh bi mt mng ca cc chui. Gi tr ca thuc tnh Value th hin
kt qu la chn hin ti. Mt Popup Menu c th c to ra bi cng c popup menu trong
Layout Editor.
Hnh 8.17a th hin mt v d ca popup menu. Trong v d ny, mt popup menu c to
ra vi nm trng hp c gn nhn Option 1, Option 2, . Hnh 8.17b th hin
ni dung ca hm c gi tng ng, hm ny s xc nh gi tr c chn trong i s
Value v hin th gi tr c chn. Hnh 8.18 l trng hp Option 5 c chn.
Giao din ngi s dng

92


(a)
function radiobutton1_Callback(hObject, eventdata, handles)
set(handles.TextBox,'String','Option 1');
set(handles.radiobutton1,'Value',1);
set(handles.radiobutton2,'Value',0);
set(handles.radiobutton3,'Value',0);

function radiobutton2_Callback(hObject, eventdata, handles)
set(handles.TextBox,'String','Option 2');
set(handles.radiobutton1,'Value',0);
set(handles.radiobutton2,'Value',1);
set(handles.radiobutton3,'Value',0);

function radiobutton3_Callback(hObject, eventdata, handles)
set(handles.TextBox,'String','Option 3');
set(handles.radiobutton1,'Value',0);
set(handles.radiobutton2,'Value',0);
set(handles.radiobutton3,'Value',1);
(b)
Hnh 8.15 V d v Radio Button v ni dung ca chng trnh con c gi
Hnh 8.16 Giao din ca chng trnh test_radiobutton
Giao din ngi s dng

93


8.4.8. L|st 8oxes
List Box to ra mt i tng c nhiu dng k t v cho php ngi s dng chn mt hay
nhiu dng trong s cc dng ny. Nu s dng k t ca i tng ln hn phm vi ca List
Box th mt thanh cun s c to ra cho php ngi s dng di chuyn ln xung trong
phm vi ca List Box. Nhng dng k t m ngi s dng c th la chn c xc nh bi
mt mng cc chui v thuc tnh Value s xc nh dng no c chn. Mt List Box
c to ra bi hm uicontrol vi thuc tnh style l listbox hoc c to ra t cng c
listbox trong Layout Editor.
Trong trng hp s dng mt single-click chn mt thnh phn trong List Box th
chng trnh s khng gy ra bt k phn ng no cho n khi c mt tc ng bn ngoi xy
ra, chng hn nh mt nhn nt. Tuy nhin trong trng hp s dng double-click th c th
(a)
function popupmenu1_Callback(hObject, eventdata, handles)

% Xc nh gi tr ca popup menu
value=get(handles.popupmenu1,'Value');
% Gn gi tr mi cho text box
str=['Option ',num2str(value)];
set(handles.TextBox,'String',str)
(b)
Hnh 8.17 V d v Pupop Menu v ni dung ca chng trnh con c gi
Hnh 8.18 Giao din ca chng trnh test_popup
Giao din ngi s dng

94
gy ra mt tc ng ngay lp tc. C th s dng thuc tnh SelectionType ca figure phn
bit single-click hay double-click. Gi tr ca thuc tnh SelectionType s l normal tng
ng vi single-click v trong trng hp double-click th gi tr ny s l open. iu ny
cng ng trong trng hp chn nhiu thnh phn cng mt lc, l trng hp khong cch
gia gi tr ca hai thuc tnh min v max ln hn 1. Cn trong cc trng hp khc th ch
c duy nht mt thnh phn c chn.
Hnh 8.19a th hin mt v d bao gm mt list box c tm thnh phn Option 1,
Option 2, , Option 8, mt nt nhn thc thi chng trnh v mt text field
hin kt qu.

(a)
function pushbutton1_Callback(hObject, eventdata, handles)

% Xc nh gi tr ca list box
value=get(handles.listbox1,'Value');
% Cp nht v hin th kt qu
str=['Option ',num2str(value)];
set(handles.text1,'String',str);

function listbox1_Callback(hObject, eventdata, handles)

% Nu l double-click th cp nht v hin th kt qu
selectiontype=get(gcbf,'SelectionType');
if selectiontype(1)=='o'
value=get(handles.listbox1,'Value');
str=['Option ',num2str(value)];
set(handles.text1,'String',str);
end
(b)
Hnh 8.19 V d v List Box v ni dung ca chng trnh con c gi
Giao din ngi s dng

95
Hnh 8.19b l nhng hm c gi tng ng vi nt nhn v list box.
- Nu nt nhn c chn th hm button1_callback s xc nh gi tr ca List Box v th
hin kt qu thng qua Text Field.
- Nu list box c chn, u tin hm listbox_callback s xc nh trng thi click chut l
single hay double. Nu l single-click th chng trnh s chng trnh khng lm g c, cn
trong trng hp l double-click th hm listbox_callback s xc nh gi tr ca List Box v
th hin kt qu thng qua Text Field.
Giao din ca v d ny c th hin trong hnh 8.20.

8.4.9. 5||ders
Slider l mt i tng cho php ngi s dng la chn gi tr trong mt khong xc nh
bng cch dng chut di chuyn thanh trt. Thuc tnh Value s xc nh gi tr ca
Slider trong khong [min max]. i tng ny c th c to ra bi hm uicontrol vi
thuc tnh style l slider hoc c to ra bng cng c slider trong Layout Editor.
Hnh 8.22a th hin mt v d n gin ch cha mt slider v mt text field. Thit lp gi tr
ca thuc tnh min l zero v gi tr ca thuc tnh max l mi. Khi ko thanh trt, chng
trnh s gi hm slider1_callback, hm ny s xc nh gi tr ca slider t thuc tnh
value v th hin gi tr ny thng qua text field.






Hnh 8.20 Giao din ca chng trnh test_listbox
Hnh 8.21 Giao din ca chng trnh test_slider
Giao din ngi s dng

96

(a)
function slider1_Callback(hObject, eventdata, handles)

value=get(handles.slider1,'Value');
str=sprintf('%3.2f',value);
set(handles.text1,'String',str);
(b)
Hnh 8.22 V d v Slider v ni dung ca chng trnh con c gi
Giao din ngi s dng

97
Danh sch cc hm c gii thiu trong chng 8
axes To mt h trc to
figure To mt figure (ca s giao din) mi
get Truy xut gi tr ca cc thuc tnh ca mt i tng giao din
guide M chng trnh thit k giao din GUI
set Thay i gi tr ca cc thuc tnh ca mt i tng giao din
uicontextmenu To mt i tng context menu
uicontrol To mt i tng iu khin trong giao din vi ngi s dng
uimenu To mt i tng menu


(1)





















Tn hiu v h thng

91
Chng 9
9. TlN NI0 9a N TN0N0

M phng mt h thng vin thng l mt qu trnh lm vic vi cc tn hiu: khi to, bin
i, thu pht, so snh, x l,... vic m phng c tin hnh thun li v hiu qu, cn
phi c y cc cng c x l tn hiu c bn. i vi MATLAB, cc cng c ny c
cung cp trong MATLAB Signal Processing Toolbox. l mt tp hp cc hm c xy
dng trn c s cc gii thut ton hc v h tr hu ht cc thao tc x l tn hiu, bao gm:
khi to tn hiu, phn tch v thit k cc b lc tng t v s, phn tch ph, x l tn hiu
thng k, phn tch cc h thng tuyn tnh,...
9.I. 8I0 0IN M0I IN hI0 I80N0 M4IL48
MATLAB l mt mi trng tnh ton s, do mt tn hiu phi c biu din thng
qua cc mu d liu ri rc ca n (tn hiu c ly mu). Ni cch khc, mt tn hiu bt k
c biu din bng mt vector hng (kch thc 1 x n) hoc vector ct (kch thc n x 1). V
d:
>> x = [1 1.2 1.5 1.2 1 0.8 0.5 0.8];
biu din mt tn hiu a knh, ta s dng dng ma trn. Mt tn hiu m knh c chiu
di ng vi mi knh u bng n c biu din bng mt ma trn kch thc n x m, trong
mi ct ca ma trn tng ng vi mt knh, mi hng ca ma trn ng vi mt thi im ly
mu. V d: sau y l biu din ca mt tn hiu 3 knh:
>> y = [x 2*x x/pi]
y =
1.0000 2.0000 0.3183
1.2000 2.4000 0.3820
1.5000 3.0000 0.4775
1.2000 2.4000 0.3820
1.0000 2.0000 0.3183
0.8000 1.6000 0.2546
0.5000 1.0000 0.1592
0.8000 1.6000 0.2546
9.2. I40 IN hI0: 0I08 Ih0I 0I4N
to mt tn hiu tng t trong MATLAB, cn c mt vector thi gian xc nh cc
thi im ly mu tn hiu. Tn hiu to ra s l mt vector m mi phn t ca n chnh l
gi tr ca mu tn hiu c ly thi im xc nh bi phn t tng ng ca vector thi
gian. V d, to tn hiu y = sin(100t) + 2sin(240t), ta ly mu tn hiu ti cc thi im
cch nhau 0,001s v ta c cc vector thi gian v vector biu din tn hiu y nh sau:
>> t = (0:0.001:1);
>> y = sin(2*pi*50*t) + 2*sin(2*pi*120*t);
Dng hm plot v 100 mu u tin ca y:
>> plot(t(1:100),y(1:100))
Tn hiu v h thng

92
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
-3
-2
-1
0
1
2
3

Hnh 9.1
Vi phng php trn, ta c th khi to bt k tn hiu no ta mun, ch cn xc nh biu
thc thi gian ca n. Sau y l mt s tn hiu c bit:
Cc tn hiu xung n v, hm nc n v v hm dc n v:
>> t = (0:0.001:1)'; % vector thi gian
>> y = [1; zeros(99,1)]; % hm xung n v
y = ones(100,1); % hm nc n v
y = t; % hm dc
Cc tn hiu tun hon:
>> fs = 10000; % tn s ly mu
>> t = 0:1/fs:1.5; % vector thi gian
>> x = sin(2*pi*50*t); % Tn hiu lng gic (sine)
>> y = square(2*pi*50*t); % Tn hiu sng vung
>> x = sawtooth(2*pi*50*t); % Tn hiu sng rng ca
Hm sawtooth(t,width) to tn hiu sng rng ca hoc sng tam gic c cc nh 1,
chu k 2, width l t l thi gian ln trn tng chu k.
Hm square(t,width) to tn hiu sng vung c cc mc l 1, chu k 2, width l t
l thi gian mc 1 trn tng chu k.
Cc tn hiu aperiodic:
Hm gauspuls(t,fc,bw) to mt xung Gaussian tn s RF c bin bng 1, tn s trung
tm fc v bng thng bw.
Hm chirp to tn hiu tn s qut, c nhiu phng php qut khc nhau: tuyn tnh, bc hai
hay logarithm.
Hm pulstran: to mt chui cc xung c cng dng vi mt xung gc.
V d 9-1. To mt chui xung l s lp li ca cc xung Gauss sau nhng khong thi
gian bng nhau. Cc thng s c th nh sau: tc ly mu ca chui xung l 50kHZ, chiu
Tn hiu v h thng

93
di chui xung l 10ms, tc lp li ca chui xung Gauss l 1kHz, suy hao theo hm m c
s 0.8. Xung Gauss c tn s trung tm l 10kHz, bng thng 50%.
T = 0:1/50E3:10E-3; % vector thi gian ca chui xung (0 10ms)
D = [0:1/1E3:10E-3;0.8.^(0:10)]'; % ct 1 ca D xc nh cc thi im lp
% ct 2 ca D xc nh bin tng ng ca xung Gauss (b suy hao)
Y = pulstran(T,D,'gauspuls',10E3,0.5); % gi hm pulstran, hai thng s
cui
% l tn s trung tm v t l bng thng ca xung Gauss
plot(T,Y) % v tn hiu
Kt qu nh sau:
0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1

Hnh 9.2
Hm sinc(x): l bin i Fourier ngc ca xung ch nht c chiu rng bng 2 v
chiu cao bng 1:
x
x
x c

) sin(
) ( sin = (9.1)
x c th l mt vector hay mt ma trn.
Hm Dirichlet: cn gi l hm sinc tun hon hay hm sinc chng ln (aliased sinc), c
nh ngha nh sau:
) (x D
n
=

=

otherwise
x n
nx
Z k k x
n k
) 2 / sin(
) 2 / sin(
, 2 ) 1 (
) 1 (

(9.2)
Trong MATLAB, thc hin hm Dirichlet ta gi hm diric(x,n).
Tn hiu v h thng

94

Hnh 9.3
9.3. L4M I0 0I 040 FIL 00 LI0
Trong cc phn trn, cc d liu c th c to ra ch yu bng hai cch:
Nhp trc tip t bn phm cc gi tr d liu
Dng cc hm c sn ca MATLAB to ra cc mu d liu.
Ngoi hai cch trn, d liu cn c th c to ra bng mt trong nhng cch sau:
Dng lnh load ca MATLAB ti d liu cha trong cc file ASCII hoc file MAT
vo khng gian lm vic ca MATLAB.
c d liu vo MATLAB bng cch dng cc lnh truy xut ngoi vi cp thp nh
fopen, fread, fscanf.
Xy dng file MEX c d liu.
9.4. Fh4N I0h 4 IhII K 040 80 L00
Vn phn tch v thit k cc b lc c mt ngha rt quan trng trong l thuyt x l tn
hiu v bt k mt h thng tuyn tnh no cng c th xem nh l mt b lc vi mt p
ng xung hoc mt hm truyn t no .
C s ton hc ca qu trnh lc mt tn hiu l php ly tch chp. Nu x(k) l tn hiu
ng vo v y(k) l tn hu ng ra ca mt b lc c p ng xung l h(k) th y(k) chnh l tch
chp ca x(k) v h(k):

+
=
= =
l
l x l k h k x k h k y ) ( ) ( ) ( * ) ( ) ( (9.3)
Nu x(k) v h(k) c chiu di hu hn th y(k) cng c chiu di hu hn v php ly tch
chp ni trn c th thc hin bng cch gi hm conv trong MATLAB.
>> y = conv(h,x)
Tn hiu v h thng

95
Chiu di ca vector y bng length(x) + length(h) 1.
Ngoi ra, ta cng c th ly tch chp ca hai ma trn bng cch dng hm tch chp hai chiu
conv2.
V d:
>> x = rand(5,1) % tn hiu ngu nhin chiu di 5
>> h = [1 1 1 1]/4 % b lc trung bnh chiu di bng 4
>> y = conv(h,x)
y =
0.2375
0.2953
0.4470
0.5685
0.5538
0.4960
0.3443
0.2228
Hm truyn t ca b lc: nu X(z) l bin i z ca tn hiu vo x(k), Y(z) l bin i
z ca tn hiu ra y(k) v H(z) l bin i z ca h(k) th:
) (
) 1 ( ) 2 ( ) 1 (
) 1 ( ) 2 ( ) 1 (
) ( ). ( ) (
1
1
z X
z m a z a a
z n b z b b
z X z H z Y
m
n


+ + + +
+ + + +
= =

(9.4)
H(z) c gi l hm truyn t ca b lc. Cc hng s a(i), b(i) l cc h s ca b lc v
bc ca b lc bng max{m,n}.
biu din mt b lc, MATLAB s dng hai vector hng: vector a biu din cc h s ca
t s v vector b biu din cc h s ca mu s.
Tu theo cc vector a v b m mi b lc c th c cc tn gi khc nhau. C th l:
Nu n = 0 (b l mt v hng) th b lc trn gi l b lc p ng xung v hn (IIR
Infinite Impulse Response), b lc ton cc, b lc hi quy hoc b lc AR (autoregressive).
Nu m = 0 (a l mt v hng) th b lc trn gi l b lc p ng xung hu hn (FIR
Finite Impulse Response), b lc ton zero, b lc khng hi quy hoc b lc trung bnh thay
i (MA Moving Average).
Nu c m v n u ln hn 0, b lc trn gi l b lc p ng xung v hn (IIR Infinite
Impulse Response), b lc cc-zero, b lc hi quy hoc b lc ARMA (autoregressive
moving-average)
T phng trnh (9.4) c th xy dng mt qu trnh xc nh cc mu d liu ra. Gi
s a(1) = 1. Chuyn mu s sang v tri ri ly bin i z ngc c hai v, ta c phng
trnh sai phn:
y(k) + a(2)y(k-1) + ... + a(m-1)y(k-m) = b(1)x(k) + b(2)x(k-1) + ... + b(n+1)x(k-n)
Vy:
y(k) = b(1)x(k) + b(2)x(k-1) + ... + b(n+1)x(k-n) - a(2)y(k-1) - ... - a(m-1)y(k-m) (9.5)
Tn hiu v h thng

96
y l dng chun ca biu thc tn hiu ra trong min thi gian. Gi s iu kin u bng 0,
ta c quy trnh tnh ton nh sau:
y(1) = b(1)x(1)
y(2) = b(1)x(2) + b(2)x(1) a(2)y(1)
y(3) = b(1)x(3) + b(2)x(2) + b(3)x(1) a(2)y(2) a(3)y(1) (9.6)
.......................................
Trong MATLAB, quy trnh ny c thc hin bng hm filter. Ch cn cung cp cc vector
h s ca b lc (a v b) cng vi vector tn hiu vo, hm s tr v vector tn hiu ra y c
cng chiu di vi x. Nu a(1) 1, hm ny s chia cc h s a cho a(1) trc khi thc hin
tnh ton. Hm filter thc hin b lc theo cu trc trc tip dng II. y l cu trc chun tc
c s khu tr l t nht.

Hnh 9.4. Cu trc trc tip dng II thc hin hm filter
ng vi mu th m ca ng ra, hm filter thc hin cc php tnh sau:
y(m) = b(1)x(m) +
1
z (m-1)
) ( ) 2 ( ) 1 ( ) ( ) 2 ( ) (
2 1
m y a m z m x b m z + =
................................................................ (9.7)
) ( ) 1 ( ) 1 ( ) ( ) 1 ( ) (
1 2
m y n a m z m x n b m z
n n
+ =


) ( ) ( ) ( ) ( ) (
1
m y n a m x n b m z
n
=


Dng c php c bn ca hm filter:
>> [y,zf] = filter(b,a,x,zi)
trong zi l vector xc nh cc gi tr u ca ng ra cc khi tr, cn zf l vector cc gi
tr ny sau khi thc hin xong hm filter.
V d 9-2. B lc s thng thp tn s ct = 0,4. c hm truyn t:
H(z) =
3 2 1
3 2 1
06 , 0 42 , 0 58 , 0 1
1 , 0 3 , 0 3 , 0 1 , 0


+
+ + +
z z z
z z z

c dng lc b thnh phn tn s cao trong tn hiu x(n) = sin(n/5) + cos(4n/5), vi 0
n 100. Hy xc nh v v tn hiu ra y(n).
b = [0.0985 0.2956 0.2956 0.0985]; % Cc h s ca a thc t
a = [1.0000 -0.5772 0.4218 -0.0563]; % Cc h s ca a thc mu
k = (0:100); % Vector thi gian
x = sin(k*pi/5) + cos(4*k*pi/5); % Tn hiu x(n)
Tn hiu v h thng

97
y = filter(b,a,x); % Tn hiu ng ra b lc y(n)
subplot(2,1,1);
plot(x);grid % V tn hiu vo
title('Tin hieu vao');
subplot(2,1,2);
plot(y);grid % V tn hiu ra
title('Tin hieu ra');
Kt qu thc thi chng trnh:
0 20 40 60 80 100 120
-1.5
-1
-0.5
0
0.5
1
1.5
Tin hieu vao
0 20 40 60 80 100 120
-1
-0.5
0
0.5
1
1.5
Tin hieu ra

Hnh 9.5.
9.5. 040 h4M Kh40 0 Ih00 hIN L00
Ngoi hm filter, thc hin cc qu trnh lc, trong Signal Processing Toolbox, MATLAB
cn cung cp thm mt s hm khc, bao gm hm upfirdn thc hin b lc FIR c ly
mu li, hm filtfilt cho php loi b mo pha trong qu trnh lc, hm fftfilt thc hin qu
trnh lc trong min tn s, hm lactfilt thc hin b lc theo cu trc mng (lattice).
9.5.I. Ih00 hIN 84N0 L00 04 I00 00 {M0LII84I FILI8 84NK)
Cc bng lc a tc c th thc hin bng cch dng hm upfirdn. Hm ny cho php
thay i tc ly mu tn hiu theo mt t l P/Q vi P, Q l cc s nguyn. C th xem
hm ny l kt qu ca s ghp lin tip ba h thng:
o B ly mu ln (chn thm bit 0) vi h s t l P
o B lc FIR c p ng xung h
o B ly mu xung vi h s t l Q

Tn hiu v h thng

98

Hnh 9.6. Nguyn tc thc hin hm upfirdn
Cu trc ni trn c thc hin bng k thut lc nhiu pha (polyphase), l trng tm ca
l thuyt bng lc a tc .
>> y = upfirdn(x, h, P, Q)
thc hin mt bng lc gm nhiu b lc ta dng hm upfirdn, trong b lc h l mt
ma trn m mi ct biu din mt b lc FIR. Cc tn hiu ng ra cng biu din di dng
ma trn.
9.5.2. Kh0 M0 Fh4 0h0 80 L00 II8
Trong trng hp b lc FIR, ta c th thit k b lc c pha tuyn tnh, d liu ra ch lch so
vi d liu vo mt s lng k hiu c nh. Nhng vi b lc IIR, mo pha thng c tnh
cht phi tuyn cao. Thng thng, ngi ta s dng cc thng tin v tn hiu ti cc thi im
trc v sau thi im hin ti khc phc hin tng mo pha ny. MATLAB xy dng
hm filtfilt thc hin gii thut ni trn.
u tin chng ta kho st m hnh di y. Ch rng nu bin i z ca mt chui x(n) l
X(z) th bin i z ca chui o ngc thi gian ca x s l X(1/z).

Hnh 9.7.
Khi |z| = 1, tc l
j
e z = , tn hiu ng ra tr thnh
2
) ( ) (
j j
e H e X . Vy nu bit tt c cc
mu ca tn hiu x(n) th sau hai ln lc lin tip, ta c mt tn hiu c lch pha bng 0
so vi x(n).
V d 9-3. So snh hai phng php lc dng hm filter v hm filtfilt thc hin lc mt
tn hiu sin c hai thnh phn tn s 3Hz v 40Hz bng b lc trung bnh 10 im.
fs = 100;
t = 0:1/fs:1;
x = sin(2*pi*t*3)+.25*sin(2*pi*t*40);
b = ones(1,10)/10; % 10 point averaging filter
y = filtfilt(b,1,x); % Noncausal filtering
yy = filter(b,1,x); % Normal filtering
plot(t,x,t,y,'--',t,yy,':')
legend('Tin hieu goc','Loc bang filfilt','Loc binh thuong')
Hnh 9.8 l th thu c sau khi thc hin chng trnh.
Tn hiu v h thng

99

Hnh 9.8.
T th ny ta nhn thy c hai b lc u loi b c thnh phn tn s 40Hz trong tn
hiu gc. Tuy nhin, trong khi tn hiu ra ca b lc filtfilt cng pha vi tn hiu gc th tn
hiu ra ca b lc filter b tr i khong 5 k hiu so vi tn hiu gc. Chng ta cng thy
rng bin ng ra ca b lc filtfilt nh hn do kt qu ca vic bnh phng bin hm
truyn H.
Lu : kt qu lc l tt nht, cn bo m chiu di ca tn hiu vo ti thiu phi gp
ba ln bc ca b lc filtfilt, v tn hiu vo c xu hng gim v 0 hai pha.
9.5.3. Ih00 hIN 80 L00 I80N0 MIN I4N 50
Do tnh i ngu gia hai min thi gian v tn s, bt k mt thao tc no thc hin c
trong min ny u cng c th thc hin c trong min cn li.
Trong min tn s, b lc IIR c thc hin bng cch nhn bin i Fourier ri rc (DFT)
ca tn hiu vo vi thng s ca cc bin i Fourier ca cc h s b lc. V d:
>> n = length(x);
>> y = ifft(fft(x).*fft(b,n)./fft(a,n));
Kt qu tnh ton tng t nh hm filter, tuy vn khc nhau on qu lc u (hiu ng
bin). Khi chiu di ca chui vo cng tng, phng php ny cng km hiu qu do phi
thm vo nhiu im zero cho cc h s b lc khi tin hnh tnh FFT, ng thi gii thut
FFT cng gim hiu qu khi s im n tng ln.
Ngc li, i vi cc b lc FIR, ta c th tch mt chui di thnh nhiu chui ngn hn,
sau dng phng php chng v cng (overlap and add). Hm fftfilt ca MATLAB c
xy dng da trn gii thut ny.
>> y = fftfilt(b,x)
>> y = fftfilt(b,x,n)
x l chui vo, y l chui ra, b l vector cc h s ca b lc, n l s im FFT ti thiu.
Hm fftfilt(b,x) tng ng vi hm filter(b,1,x).
Tn hiu v h thng

100
9.6. 04F 0N0 I0N0
p ng xung ca b lc l chui tn hiu ng ra ca b lc khi a vo b lc tn hiu xung
n v:

=
=
0 0
0 1
) (
n
n
n x (9.8)
tm p ng xung ca mt b lc, ta c th to mt chui xung n v ri dng hm filter:
>> imp = [1; zeros(49,1)];
>> h = filter(b,a,imp);
9.7. 04F 0N0 I4N 50
Signal Processing Toolbox cho php thc hin cc php phn tch trong min tn s i vi
c b lc tng t ln b lc s.
9.7.I. I80N0 MIN 50
Trong min s, p ng tn s c tnh ton bng gii thut FFT. Hm freqz s tr v p
ng tn s phc (FFT) p im ca b lc s c cc vector h s l a v b.
>> [H,W] = freqz(b,a,p)
H l p ng tn s ca b lc c tnh ti p im tn s cho bi vector W. Cc im tn s
c chn cch u nhau v nm na trn ca vng trn n v.
m j j
n j j
j
e m a e a a
e n b e b b
e H



+ + + +
+ + + +
=
) 1 ( ) 2 ( ) 1 (
) 1 ( ) 2 ( ) 1 (
) (

(9.9)
Ngoi ra, cn c th cung cp cho hm freqz cc thng s khc. Sau y l cc c php khc
ca hm:
>> [h,w] = freqz(b,a,n,'whole') tnh p ng tn s ti n im phn b u trn ton
b vng trn n v.
>> h = freqz(b,a,w) tnh p ng tn s ti cc im xc nh bi vector w.
>> [h,f] = freqz(b,a,n,fs) hoc [h,f] = freqz(b,a,n,'whole',fs) tnh p ng
tn s n im ca b lc vi tn s ly mu l fs. n im tn s phn b u trn khong [0,
fs/2] (hoc [0,fs] nu dng whole).
>> h = freqz(b,a,f,fs) tnh p ng tn s ti cc im xc nh bi vector f, trong fs
l tn s ly mu.
Nu gi hm freqz m khng yu cu tr v cc thng s ra, hm freqz s v p ng bin
v p ng pha ca b lc.
Lu : trong MATLAB thng s dng cc gi tr tn s chun ho, trong tn s n v l
tn s Nyquist, tc mt na tn s ly mu. Mun chuyn t tn s chun ho sang tn s gc
quanh vng trn n v, ch cn nhn vi , mun chuyn t tn s chun ho sang tn s
Hertz, nhn vi mt na tn s ly mu.
V d 9-4. Tnh v v p ng tn s 256 im ca b lc Butterworth bc 9, tn s ct
400Hz. Bit tn s ly mu l 2000Hz.
[b,a] = butter(9,400/1000); % Cc h s ca b lc Butterworth
[h,f]= freqz(b,a,256,2000); % p ng tn s
Tn hiu v h thng

101
freqz(b,a,256,2000)
Kt qu:
0 100 200 300 400 500 600 700 800 900
-800
-600
-400
-200
0
Frequency (Hz)
P
h
a
s
e

(
d
e
g
r
e
e
s
)
0 100 200 300 400 500 600 700 800 900
-400
-300
-200
-100
0
Frequency (Hz)
M
a
g
n
i
t
u
d
e

(
d
B
)

Hnh 9.9.
9.7.2. I80N0 MIN 4N4L00
Hm freqs c th thc hin cc chc nng tng t nh hm freqz nhng i vi cc b lc
analog.
>> [h,w] = freqs(b,a)
>> h = freqs(b,a,w)
9.7.3. 04F 0N0 8IN 00 4 04F 0N0 Fh4
Mun c p ng bin v p ng pha ca mt b lc, ta ch cn xc nh p ng tn s
ca n bng cch dng hm freqz hoc freqs, sau dng hm abs ly p ng bin
hoc hm angle ly p ng pha.
MATLAB cn cung cp hm unwrap tr v p ng pha lin tc ti cc v tr 360 (thng
thng gc pha ch c tnh trong phm vi -360 n +360 nn ti cc v tr ny p ng
pha s c bc nhy) bng cch thm vo cc bi s ca 360 nu cn thit.
Ngoi ra, ta cng c th s dng hm phasez c p ng pha lin tc nh trn. C php
ca hm phasez hon ton tng t nh hm freqz, ch khc l kt qu tr v l p ng pha
thay v p ng tn s.
V d 9-5. Xc nh v v p ng bin v p ng pha ca.b lc FIR bc 25.
h = fir1(25,0.4);
[H,f] = freqz(h,1,512,2);
subplot(3,1,1);
plot(f,abs(H)); grid
Tn hiu v h thng

102
title('Dap ung bien do');
subplot(3,1,2);
plot(f,angle(H)*180/pi); grid
title('Dap ung pha (gian doan tai 360 do)');
subplot(3,1,3);
plot(f,unwrap(angle(H))*180/pi);
title('Dap ung pha (lien tuc)');
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.5
1
Dap ung bien do
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-200
-100
0
100
200
Dap ung pha (gian doan tai 360 do)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-1500
-1000
-500
0
Dap ung pha (lien tuc)

Hnh 9.10.
th p ng pha u tin, ta c c th phn bit cc im nhy 360 (do gc pha vt ra
ngoi gii hn hm angle) vi cc im nhy 180 (ng vi cc im zero ca p ng tn
s). Nu dng hm unwrap ta c th phn bit c cc v tr ny (nh th th hai).
9.7.4. Ih0I 0I4N I8
tr nhm (group delay) ca mt b lc l mt thng s nh gi thi gian tr trung bnh
ca b lc (l mt hm ca tn s). Nu p ng tn s phc ca b lc l H(
j
e ) th tr
nhm c xc nh bng biu thc:



d
d
g
) (
) ( = (9.10)
trong () l p ng pha ca b lc.
Trong MATLAB, ta c th xc nh tr nhm bng cch dng hm grpdelay vi c php
hon ton tng t nh hm freqz.
V d:
>> [gd,w] = grpdelay(b,a,n)
tr v tr nhm ) (
g
ca b lc s xc nh bi cc vector h s a v b, c tnh ti n
im tn s xc nh bi vector v.
tr pha (phase delay) ca b lc c nh ngha bi:
Tn hiu v h thng

103



) (
) ( =
p
(9.11)
Tng t vi tr nhm, tr pha cng c th c xc nh bng cch dng hm
phasedelay (vi c php hon ton tng t freqz).
V d 9-6. Xc nh v v tr nhm v tr pha ca b lc Butterworth bc 10, tn s
ct 200Hz, vi tn s ly mu l 2000Hz .
fs = 2000;
n = 128;
[b,a] = butter(10,200/1000);
[gd,f] = grpdelay(b,a,n,fs);
[pd,f] = phasedelay(b,a,n,fs);
plot(f,gd,'b-',f,pd,'r--'); grid; hold on;
legend('Do tre nhom','Do tre pha');
0 100 200 300 400 500 600 700 800 900 1000
0
5
10
15
20
25
Do tre nhom
Do tre pha

Hnh 9.11.
9.8. 0I4N 00 000 Z80
Ngoi cc cch biu din thng qua p ng xung hoc hm truyn t, mt h thng tuyn
tnh ni chung hay mt b lc ni ring cng c th biu din di dng gin cc zero,
tc l s phn b cc im cc v im zero ca hm truyn t trong mt phng z.
Hm zpplane cho php v gin cc zero ca mt h thng tuyn tnh nu chng ta cung
cp cc im cc v zero ca hm truyn hoc cung cp cc vector h s a v b ca h thng.
>> zplane(z,p) v gin cc zero da vo vector cc zero z v vector cc im cc p.
>> zplane(b,a) v gin cc zero da vo vector cc h s a v b.
Tn hiu v h thng

104
Lu : gia m hnh hm truyn v m hnh cc zero c th c chuyn i qua li bng
cch dng cc hm tf2zp v zp2tf.
>> [b,a] = zp2tf(z,p,k)
>> [z,p,k] = tf2zp(b,a)
trong k l h s khuch i khi z .
9.9. 040 M0 hNh h Ih0N0 I0N INh
Nh ta bit, mt h thng tuyn tnh c th c m t bng nhiu m hnh khc nhau nh
m hnh hm truyn, m hnh cc zero,... Trong MATLAB, Signal Processing Toolbox
cung cp cho ta mt cch y cc m hnh ny. Ngi s dng c th la chn m hnh
no thch hp m phng h thng mt cch nhanh chng v chnh xc nht.
9.9.I. 040 M0 hNh h Ih0N0 80I 840 Ih0 Ih0I 0I4N
Cc m hnh h thng ri rc c MATLAB h tr bao gm:
M hnh hm truyn t
M hnh li cc zero
M hnh khng gian trng thi
M hnh khai trin hu t (m hnh thng d)
M hnh cc khu bc hai (SOS Second Order Sections)
M hnh lattice
M hnh ma trn chp
M hnh hm truyn t
H thng c m t thng qua hm truyn t H(z) trong min z ca n:
) (
) 1 ( ) 2 ( ) 1 (
) 1 ( ) 2 ( ) 1 (
) ( ). ( ) (
1
1
z X
z m a z a a
z n b z b b
z X z H z Y
m
n


+ + + +
+ + + +
= =


Cc h s b(i) v a(i) l cc h s ca b lc, bc ca b lc l max(m,n). Trong MATLAB,
hm truyn t c biu din bng hai vector a v b lu cc h s ca b lc.
M hnh li cc zero
Hm truyn t ca h thng c th vit li di dng nhn t:
)) ( ))...( 2 ( ))( 1 ( (
)) ( ))...( 2 ( ))( 1 ( (
) (
) (
) (
m p z p z p z
n q z q z q z
k
z p
z q
z H


= = (9.12)
MATLAb biu din m hnh bng mt v hng k ch li v hai vector z v p m cc phn
t ca chng ln lt l cc zero (nghim ca q(z)) v cc cc (cc nghim ca p(z)).
C th dng cc hm poly v roots chuyn i qua li gia cc vector cc v zero vi cc
vector h s ca b lc. Hm poly tr v cc h s ca a thc nu bit cc nghim ca n,
cn hm roots tr v cc nghim ca mt a thc ch cn cung cp cc h s ca a thc. Tuy
nhin, phn sau ta s thy rng MATLAB cung cp sn cc hm chuyn trc tip t m
hnh hm truyn sang m hnh cc zero m khng cn phi chuyn tng a thc nh cch
nu trn.
Tn hiu v h thng

105
M hnh khng gian trng thi
Bt k mt b lc s no cng c th c biu din di dng mt h thng cc phng
trnh sai phn cp mt. C th l mt h thng tuyn tnh ri rc c th c m t bng h
sau:

+ =
+ = +
) ( ) ( ) (
) ( ) ( ) 1 (
n Dy n Cx n y
n Bu n Ax n x
(9.13)
trong :
u l tn hiu vo, x l vector trng thi, y l tn hiu ng ra.
A l mt ma trn kch thc m x m vi m l bc ca b lc, B v C l cc vector ct v D l
mt v hng.
Trong trng hp h thng a knh th ng vo u, ng ra y tr thnh cc vector, cn B, C v
D tr thnh cc ma trn.
Xut pht t biu thc Y(z) =H(z)U(z), ta suy ra quan h gia hm truyn t H(z) ca b lc
vi cc ma trn B, C v D:
H(z) = C(zI A)
1
B + D (9.14)
M hnh khai trin cc phn thc (m hnh thng d)
Bt k hm truyn t H(z) no cng c th khai trin thnh tng ca cc phn thc hu t
theo dng sau (cn gi l dng thng d):
) ( 1
1 1
) 1 ( ... ) 2 ( ) 1 (
) ( 1
) (
...
) 1 ( 1
) 1 (
) (
) (
) (
n m
z n m k z k k
z n p
n r
z p
r
z a
z b
z H


+ + + + +

+ +

= = (9.15)
vi iu kin H(z) khng c cc no lp li. Trong trng hp H(z) c mt cc r no c
lp li
r
s ln (ngha l r l cc bi
r
s ca H(z)) th ng vi cc cc p(j) = p(j+1) = ...= p(j+
r
s -
1) ny, trong khai trin hu t ca H(z) s c cc s hng sau:
r
s
r
z j p
s j r
z j p
j r
z j p
j r
) ) ( 1 (
) 1 (
...
) ) ( 1 (
) 1 (
) ( 1
) (
1
2 1 1

+
+ +

+
+

(9.16)
M hnh ny c biu din bng ba vector ct: vector p cha cc cc ca H(z), vector r
cha cc thng d tng ng vi cc cc (tc cc h s r(j) trong cc biu thc (9.15), (9.16))
v vector k cha cc h s k(i). Vy length(r) = length(p) = length(a) 1.
Hm residuez cho php ta chuyn i t m hnh hm truyn sang m hnh thng d v
ngc li.
>> [r,p,k] = residuez(b,a)
>> [b,a] = residuez(r,p,k)
b, a l cc vector h s ca b lc cn (r, p, k) biu din m hnh thng d ca b lc.
Khi xc nh m hnh thng d t cc vector a v b, MATLAB s xem nh hai cc ca H(z)
l trng nhau nu chng sai khc nhau khng qu 0,1% bin ca c hai, v khi
MATLAB s s dng (9.16) xc nh cc gi tr thng d.
M hnh cc khu bc 2 (SOS Second Order Sections)
Hm truyn H(z) cng c th biu din di dng:
Tn hiu v h thng

106
H(z) =

=


=
+ +
+ +
=
L
k
k k k
k k k
L
k
k
z a z a a
z b z b b
z H
1
2
2
1
1 0
2
2
1
1 0
1
) ( (9.17)
trong L l s khu bc hai trong h thng, mi hm ) (z H
k
biu din mt khu bc hai.
MATLAB biu din m hnh SOS ca mt h thng bng mt ma trn kch thc L x 6 vi
cc phn t c b tr nh sau:

=
L L L L L L
a a a b b b
a a a b b b
a a a b b b
sos
2 1 0 2 1 0
22 12 02 22 12 02
21 11 01 21 11 01

(9.18)
Vi mt hm truyn H(z) cho trc, c nhiu cch trin khai thnh m hnh SOS. Thng
qua vic chn la cc cp cc ghp vi nhau, sp th th cc khu bc hai v thay i cc
h s nhn, ta c th gim h s khuch i nhiu lng t v trnh hin tng trn s khi
thc hin cc b lc fixed-point.
M hnh lattice

Hnh 9.12. Cu trc lattice ca cc b lc FIR v IIR
Vi cc b lc ri rc bc n ton im cc hoc ton zero, c biu din bi a thc vi cc
h s a(i), i = 1, 2, ..., n + 1, ta c th tm c n h s tng ng k(i), i = 1, 2, ..., n, cc h s
ny l c s xy dng cu trc lattice cho b lc. Cc h s k(i) ny cn gi l cc h s
phn x ca b lc. Hnh 9.12 m t cu trc lattice ca cc b lc FIR v IIR vi cc h s
phn x k(i) cho trc.
Vi b lc IIR tng qut (c c cc ln zero) c cc h s b lc cha trong cc vector a v b,
ngoi cc h s k(i) ng vi vector a cn c cc h s v(i), i = 1, 2, ..., N + 1, gi l cc h s
bc thang. Cu trc lattice ca b lc xy dng da trn cc h s k(i) v v(i) c m t
hnh 9.13.
Tn hiu v h thng

107

Hnh 9.13. Cu trc lattice ca b lc ARMA
tm cc h s ca cu trc lattice t cc h s a, b ca b lc, ta dng hm tf2latc:
>> k = tf2latc(num) hoc k = tf2latc(num,max) hoc k = tf2latc(num,min)
tr v cu trc lattice ca b lc FIR hoc b lc FIR pha cc i hoc cc tiu.
>> k = tf2latc(1,den) tr v cu trc lattice ca b lc IIR ton cc
>> [k,v] = tf2latc(num,den) tr v cu trc lattice ca b lc IIR tng qut
num, den l cc vector h s ca b lc cn k l vector cc h s lattice, v l vector cc h s
bc thang.
Ngc li, t cu trc lattice ca b lc c th suy ra hm truyn t ca b lc bng cch
dng hm latc2tf.
>> [num,den] = latc2tf(k,v)
>> [num,den] = latc2tf(k,'allpole') (K: cu trc lattice ca b lc IIR ton cc)
>> [num,den] = latc2tf(k,'allpass') (K: cu trc lattice ca b lc IIR ton thng)
>> num = latc2tf(k)
>> num = latc2tf(k,max) (K: cu trc lattice ca b lc FIR pha cc i)
>> num = latc2tf(k,min) (K: cu trc lattice ca b lc FIR pha cc tiu)
M hnh ma trn chp
Trong l thuyt x l tn hiu, php ly tch chp hai vector hay hai ma trn tng ng vi
qu trnh lc mt trong hai vector ny bng mt b lc c h s xc nh bi vector cn li.
Trn c s , ta c th m t mt b lc s bng mt ma trn chp.
Vi mt vector cho trc, hm convmtx s to ra mt ma trn chp sao cho tch ca ma trn
ny vi mt vector x no khc s bng vi tch chp ca vector cho trc vi vector x,
vi iu kin vector x phi c chiu di thch hp vi kch thc ca ma trn chp php
nhn ma trn c ngha.
V d: gi s mt b lc FIR c cc h s l b = [1 2 3], ma trn chp ca n c xy dng
nh sau:
>> b = [1 2 3]; x = rand(3,1);
>> C = convmtx(b,3)
C =
1 0 0
2 1 0
3 2 1
Tn hiu v h thng

108
0 3 2
0 0 3
Nh vy, c hai cch tng ng tnh tch chp ca b v x.
>> y1 = C*x;
>> y2 = conv(b,x);
9.9.2. 040 M0 hNh h Ih0N0 LIN I00 Ih0 Ih0I 0I4N
Cc m hnh h thng lin tc theo thi gian dng m t cc b lc analog. a s cc m
hnh xy dng cho cc h thng ri rc cp trn cng c th p dng cho cc h
thng lin tc theo thi gian. C th l cc m hnh sau:
M hnh khng gian trng thi
M hnh khai trin phn thc hu t
M hnh hm truyn t
M hnh li cc zero
M hnh khng gian trng thi biu din h thng bng mt h cc phng trnh vi phn bc
nht:

+ =
+ =
Du Cx y
Bu Ax x
(9.19)
u l vector cc ng vo (chiu di nu), y l vector cc ng ra (chiu di ny), x l vector cc
bin trng thi (chiu di nx). A, B, C, D l cc ma trn v MATLAB dng cc ma trn ny
biu din m hnh khng gian trng thi ca h thng.
H thng lin tc cng c th c m t bng m hnh hm truyn t Laplace H(s):
Y(s) = H(s).U(s) (9.20)
Gia hm truyn t H(s) vi cc ma trn A, B, C, D c mi lin h:
H(s) = C(sI-A)
1
B + D (9.21)
Vi h thng mt ng vo, mt ng ra, hm H(s) c dng:
) 1 ( ) 2 ( ) 1 (
) 1 ( ) 2 ( ) 1 (
) (
1
1
+ + + +
+ + + +
=

m a s a s a
n b s b s b
s H
m m
n n

(9.22)
MATLAB biu din m hnh hm truyn t Laplace bng hai vector a v b lu cc h s a(i)
v b(i).
Hm truyn t Laplace cng c th c biu din di dng nhn t:
H(s) =
)) ( ))...( 2 ( ))( 1 ( (
)) ( ))...( 2 ( ))( 1 ( (
) (
) (
m p s p s p s
n z s z s z s
k
s p
s z


= (9.23)
y chnh l c s cho vic xy dng mt m hnh khc cho h thng lin tc, l m hnh
li cc zero. Tng t nh vi h thng ri rc, MATLAB biu din m hnh ny bng
mt v hng k ch li v hai vector p v z cha cc cc v zero ca H(s).
9.9.3. 040 FhF 8IN 00I h Ih0N0 I0N INh
Bng 9.1 tm tt cc hm MATLAB dng chuyn i gia cc m hnh h thng tuyn
tnh. chuyn t mt m hnh (ngun) sang mt m hnh khc (ch), ta xut pht t hng
Tn hiu v h thng

109
c cha tn m hnh ngun, sau tm ng vi ct mang tn m hnh ch, ni dung trong
ny chnh l tn hm thc hin chuyn i.
Bng 9.1. Cc hm MATLAB thc hin cc php bin i h thng tuyn tnh

Hm
truyn t
Khng gian
trng thi
li
cc -
Phn thc
hu t
B lc
lattice
SOS
Ma trn
chp
Hm truyn
t
tf2ss
tf2zp
roots
residuez tf2latc khng c convmtx
Khng gian
trng thi
ss2tf ss2zp khng c khng c ss2sos khng c
li cc -
zero
zp2tf
poly
zp2ss khng c khng c zp2sos khng c
Phn thc
hu t
residuez khng c khng c khng c khng c khng c
B lc lattice latc2tf khng c khng c khng c khng c khng c
SOS sos2tf sos2ss sos2zp khng c khng c khng c
9.I0. 8IN 00I F008I8 80I 840
Bin i Fourier ri rc (DFT Discrete Fourier Transform) l cng c c bn nht trong x
l s tn hiu. Trong Signal Processing Toolbox, hu ht cc hm u c s dng gii thut
FFT (mt gii thut tnh DFT nhm gim thi gian thc thi).
Trong MATLAB c hai hm fft v ifft dng tnh ton bin i DFT thun v nghch bng
gii thut FFT. Vi mt chui tn hiu vo x v bin i DFT ca n l X, gii thut FFT
c thc hin trn c s cc biu thc sau:

+ = +
+ = +

=
1
0
1
0
) 1 (
1
) 1 (
) 1 ( ) 1 (
N
k
kn
N
N
n
kn
N
W k X
N
n x
W n x k X
(9.24)
trong
) / 2 ( N j
N
e W

= .
C php ca cc hm fft v ifft nh sau:
>> fft(x)
>> fft(x,N)
x l chui tn hiu vo cn N l s im FFT. Nu x c t hn N im, hm fft s t ng
chn thm zero vo, nu x c nhiu hn N im, hm s t ng ct b cc im tha.
>> ifft(X)
>> ifft(X,N)
X l bin i DFT ca tn hiu vo, N l s im FFT.
V d 9-7. Hy xc nh v v bin v pha ca bin i DFT ca tn hiu x(t) =
sin(30t) + sin(80t), tn s ly mu 100Hz.Dng bin i DFT ngc khi phc li tn
hiu ban u. So snh vi tn hiu gc.
Tn hiu v h thng

110
t = (0:1/100:10-1/100); % Vector thi gian
x = sin(2*pi*15*t) + sin(2*pi*40*t); % Tn hiu x(t)
y = fft(x); % Bin i DFT ca x
m = abs(y); p = unwrap(angle(y)); % Bin v pha
f = (0:length(y)-1)*99/length(y); % Vector tn s
subplot(1,2,1);
plot(f,m); title('Bien do');
set(gca,'XTick',[15 40 60 85]);
subplot(1,2,2); plot(f,p*180/pi); title('Pha');
set(gca,'XTick',[15 40 60 85]);
xr = real(ifft(y)); % Bin i FFT ngc
figure;
plot(t,x,'b-',t,xr,'r--');
legend('Tin hieu goc','Tin hieu khoi phuc');
Kt qu nh sau:

Hnh 9.14. Bin i DFT
Tn hiu v h thng

111
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Tin hieu goc
Tin hieu khoi phuc

Hnh 9.15. Bin i DFT ngc
Ngoi hai hm c bn nu trn, trong Signal Processing Toolbox cn c mt s hm khc
tnh DFT v IDFT:
Hm fft2 v ifft2 tnh bin i DFT v IDFT 2 chiu ca ma trn x.
>> fft2(x)
>> fft2(x,M,N); M,N: s hng v ct ca DFT
>> ifft2(X)
>> ifft2(X,M,N)
Hm goertzel tnh bin i DFT theo gii thut Goertzel.
>> X = goertzel(x,indvec)
x l tn hiu vo cn indvec l vector ch s (mc nh l 1:N).
i khi ta cn sp xp li chui vo sao cho cc im zero trong chui ng ra nm
khong gia chui. Khi ta dng hm fftshift.
>> X = fftshift(x)
# Bi tp 9-1.
To v v cc tn hiu sau trong MATLAB:
a. [ ] 25 0 , ) 1 2 ( ) 2 ( ) 1 ( ) (
10
0
1
+ =

=
n m n m n m n x
m
.
b. )] 10 ( ) 4 ( [ 5 , 0 . 20 ) ( 10 )] 6 ( ) 5 ( [ ) (
2
2
+ + + = n u n u n n u n u n n x
n

c. 20 0 ), 3 / 2 , 0 cos( 9 , 0 ) (
3
+ = n n n x
n

Tn hiu v h thng

112
d. 100 0 ), ( ) 0008 , 0 cos( 10 ) (
2
4
+ = n n w n n x , vi w(n) l chui ngu nhin phn b u
trn on [-1,1]
e. = ) (
5
n x {..., 1, 2, 3, 2, 1, 2, 3, 2, 1, ...}
# Bi tp 9-2.
Php ly tch chp c mt s tnh cht c bn nh sau:
a. Tnh giao hon: ) ( ) ( ) ( ) (
1 2 2 1
n x n x n x n x =
b. Tnh kt hp: )] ( ) ( [ ) ( ) ( )] ( ) ( [
3 2 1 3 2 1
n x n x n x n x n x n x =
c. Tnh phn phi: )] ( ) ( ) ( ) ( )] ( ) ( [ ) ( [
3 1 2 1 3 2 1
n x n x n x n x n x n x n x + = +
d. Phn t n v: ) ( ) ( ) (
0 0
n n x n n n x =
S dng hm conv ca MATLAB vi cc chui ) ( ), ( ), (
3 2 1
n x n x n x cho di y kim
chng li cc tnh cht trn:
)] 20 ( ) 10 ( [ ) (
1
+ = n u n u n n x
) 30 ( ) ( )[ 1 , 0 cos( ) (
2
= n u n u n n x
)] 10 ( ) 5 ( [ 2 , 1 ) (
3
+ = n u n u n x
n

# Bi tp 9-3.
Mt b sai phn s n gin c nh ngha bi phng trnh:
y(n) = x(n) x(n 1).
S dng b sai phn ny i vi cc tn hiu vo cho di y (dng hm filter). Nhn xt
phm vi s dng thch hp ca b sai phn ny.
a. )] 20 ( ) ( [ 5 ) ( = n u n u n x : xung ch nht
b. x(n) = n[u(n) u(n 10)] + (20 n)[u(n 10) u(n 20)]: xung tam gic
c. x(n) = )] 100 ( ) ( [
25
sin

n u n u
n
: xung sine
# Bi tp 9-4.
Lm li bi tp 9-3 nhng dng hm filtfilt.
# Bi tp 9-5.
Mt h thng tuyn tnh bt bin theo thi gian c m t bi phng trnh sai phn:
y(n) 0,5y(n - 1) + 0,25y(n 2) = x(n) + 2x(n 1) + x(n 3)
a. Xt tnh n nh ca h thng
b. Xc nh v v p ng xung ca h thng trong khong 0 n 100. Xt tnh n nh da
vo p ng xung ny.
# Bi tp 9-6.
Vi mi h thng tuyn tnh bt bin c nh ngha bi cc p ng xung di y, hy xc
nh p ng tn s H(
j
e ), p ng bin | H(
j
e )|, p ng pha ():
Tn hiu v h thng

113
i.
n
n h 9 , 0 ) ( =
ii. h(n) = sinc(0,2n)[u(n + 20) u(n 20)], h(0) = 1.
iii. h(n) = sinc(0,2n)[u(n) u(n 40)], h(0) = 1
iv. ( ) ) ( 4 , 0 5 , 0 ) ( n u n h
n n
+ =
v. ) 1 , 0 cos( 5 , 0 ) ( n n h
n
=
Ln lt kho st vi cc gi tr Eb/No bng 0, 2, 4, 6, 8 dB v so snh thng ip nhn c
vi thng ip pht. V th BER.
# Bi tp 9-7.
Cho tn hiu x(n) = 3cos(0,5n + /3) + 2sin(0,2n) ln lt i vo cc h thng trong bi tp
9-6. V tn hiu ra y(n) trong mi trng hp.
# Bi tp 9-8.
Mt b lc s c m t bi phng trnh sai phn:
y(n) = x(n) + x(n 1) + 0,9y(n 1) 0,81y(n 2)
a. S dng hm freqz, hy v p ng bin v p ng pha ca b lc trn. Xc nh bin
v pha ti cc tn s = /3 v = .
b. Tnh tr nhm v tr pha ca b lc theo tn s. V th.
c. Khi to 200 mu tn hiu x(n) = sin(n/3) + 5cos(n). So snh phn xc lp ca ng ra vi
ng vo x(n). B lc c nh hng g n bin v pha ca tn hiu vo?
# Bi tp 9-9.
Cho cc h thng tuyn tnh bt bin c nh ngha thng qua p ng xung sau y:
a. h(n) = 2.
n
5 , 0 .u(n)
b. ) (
4
1
) (
3
1
) ( n u n u n n h
n n

=
c. h(n) = ) 1 ( ) 3 / 4 / cos( 9 , 0 . 3 + + n u n
n

d. h(n) = n[u(n) u(n 10)]
e. h(n) = [2 sin(n)]u(n)
Hy xc nh: (i) hm truyn t min z, (ii) gin cc zero, (iii) m hnh khng gian
trng thi, (iv) m hnh SOS, (v) m hnh thng d v (vi) m hnh lattice ca h thng.
# Bi tp 9-10.
Cho cc h thng tuyn tnh bt bin c nh ngha thng qua cc hm truyn t sau y:
a. H(z) =
5 , 0
1

+
z
z
, h thng nhn qu.
b.
2 1
2 1
25 , 0 5 , 0 1
1
) (


+
+ +
=
z z
z z
z H , h thng n nh
Tn hiu v h thng

114
c.
1
1
2 1
5 , 0 1
25 , 0
) (

=
z
z
z
z
z H , h thng n nh
d.
2
2
) 3 (
1
) (

=
z
z
z H , h thng phn nhn qu
e. H(z) = ( )
2
2 1
1

+ + z z , h thng n nh
Hy xc nh: (i) p ng xung (v), (ii) gin cc zero, (iii) m hnh khng gian trng
thi, (iv) m hnh SOS, (v) m hnh thng d v (vi) m hnh lattice ca h thng
# Bi tp 9-11.
Nu cc chui x(n) v h(n) c chiu di hu hn ln lt l
x
N v
h
N th php tch chp y(n)
= x(n)*h(n) c th thc hin bng php nhn ma trn: gi s x(n) v y(n) c sp thnh cc
vector ct x, y th:
y = H.x
Trong cc hng ca ma trn H l cc vector h(n-k) vi k = 0, 1, ,
h
N -1. Ma trn ny gi
l ma trn Toeflitz.
Xt chui x(n) = {1, 2, 3, 4} v h(n) = {3, 2, 1}.
a. Biu din x di dng vector ct 4 x 1, y di dng vector ct 6 x 1. Hy xc nh ma trn
H.
b. Vit mt hm MATLAB thc hin php tch chp bng phng php ma trn Toeplitz
ni trn:
function [y,H] = conv_tp(h,x)
Nhp vo x(n) v h(n), hm tr v tch chp ca x(n) v h(n) cng vi ma trn Toeplitz H ca
php tch chp ny.
# Bi tp 9-12.
Mt tn hiu tng t x
a
(n) = 2sin(4t) + 5cos(8t) c ly mu cc thi im t = 0,01n
vi n = 0, 1, , N 1 t c mt chui x(n) gm N im. S dng bin i DFT N
im tm p ng bin gn ng ca x
a
(n).
Trong cc gi tr N sau, hy chn gi tr thch hp c p ng bin chnh xc nht. V
phn thc v phn o ca ph DFT ca x
a
(n).
i. N = 40 ii. N = 50 iii. N = 64 iv. N = 70
# Bi tp 9-13.
Cho tn hiu x(n) = cos(n/99), n = 0, 1, , N 1. Chn N =
v
4 v tnh bin i FFT N im
ca x(n). Xc nh thi gian thc thi vi v = 5, 6, , 10. Kim chng rng, thi gian thc thi
t l vi N
4
log N.
# Bi tp 9-14.
Lm li bi tp 9-3 dng hm fftfilt.


Tn hiu v h thng

115
Danh sch cc hm c gii thiu trong chng 9
Cc hm to tn hiu
chirp To tn hiu tn s qut
cos To tn hiu cos
diric To hm Dirichlet
gauspuls To xung Gaussian tn s RF
pulstran To mt chui xung cng dng vi xung gc
sawtooth To sng rng ca hoc sng tam gic
sin To tn hiu sin
sinc To tn hiu sinc
square To tn hiu sng vung
Cc hm v tn hiu
plot V dng sng tn hiu
Cc hm lm vic vi cc file d liu
fopen M mt file d liu
fread c mt file d liu
fscanf Qut mt file d liu
load Ti d liu t mt file .mat vo khng gian lm vic ca MATLAB
Cc hm phn tch v thit k b lc
conv Hm thc hin tch chp mt chiu
conv2 Hm thc hin tch chp hai chiu
fftfilt Thc hin b lc trong min tn s
filter Hm tnh p ng ra ca b lc
filtfilt Thc hin b lc c kh mo pha
lactfilt Thc hin b lc theo cu trc lattice
upfirdn Thc hin b lc c ly mu li
Cc hm tnh p ng tn s
abs Hm tnh bin
angle Hm xc nh gc pha
freqs p ng tn s ca h thng lin tc
freqz p ng tn s ca h thng ri rc
grpdelay Tnh tr nhm ca b lc
phasedelay Tnh tr pha ca b lc
phasez p ng pha ca mt h thng ri rc
unwrap p ng pha lin tc ti cc v tr 360
Tn hiu v h thng

116
Cc m hnh h thng tuyn tnh
convmtx Hm tnh ma trn chp ca mt h thng tuyn tnh
lact2tf Chuyn t m hnh lattice sang m hnh hm truyn t
poly Hm tnh cc h s ca a thc t cc nghim ca n
residuez Chuyn i qua li gia cc m hnh thng d v m hnh hm truyn t
roots Tnh cc nghim ca mt a thc
sos2ss Chuyn t m hnh cc khu bc 2 sang m hnh khng gian trng thi
sos2tf Chuyn t m hnh cc khu bc 2 sang m hnh hm truyn t
sos2zp Chuyn t m hnh cc khu bc 2 sang m hnh cc - zero
ss2sos Chuyn t m hnh khng gian trng thi sang m hnh cc khu bc 2
ss2tf Chuyn t m hnh khng gian trng thi sang m hnh hm truyn t
ss2zp Chuyn t m hnh khng gian trng thi sang m hnh cc - zero
tf2latc Chuyn t m hnh hm truyn t sang m hnh lattice
tf2ss Chuyn t m hnh hm truyn t sang m hnh khng gian trng thi
tf2zp Chuyn t m hnh hm truyn t sang m hnh cc - zero
zp2sos Chuyn t m hnh cc - zero sang m hnh cc khu bc 2
zp2ss Chuyn t m hnh cc - zero sang m hnh khng gian trng thi
zp2tf Chuyn t m hnh cc - zero sang m hnh hm truyn t
Cc hm bin i Fourier
fft Thc hin bin i FFT 1 chiu
fft2 Thc hin bin i FFT 2 chiu
fftshift
Thc hin bin i FFT 1 chiu c sp li cc h s sao cho cc zero nm
khong gia
goertzel Thc hin bin i DFT theo gii thut Goertzel
ifft Thc hin bin i ngc FFT 1 chiu
ifft2 Thc hin bin i ngc FFT 2 chiu

Thit k cc b lc

117
Chng 10
I0. TNIT k 0a0 80 L00

Thit k b lc l mt qu trnh xc nh cc h s ca b lc sao cho tho mn mt s yu
cu thit k. Thc hin b lc l qu trnh la chn v p dng mt cu trc thch hp cho b
lc da trn cc h s xc nh trong qu trnh thit k. y l hai qu trnh c bn cn
thc hin trc khi c th s dng b lc lc mt tn hiu no .
I0.I. 040 0h II0 IhII K 80 L00
Ni chung, mt ch tiu thit k cht ch i hi b lc phi tho mn nhng yu cu v p
ng tn s bao gm: di thng, di chn, gn sng di thng, suy hao di chn, rng
vng chuyn tip. Nhng yu cu chi tit hn c th l: chn b lc c bc ti thiu, chn
dng p ng bin hoc yu cu s dng b lc FIR.
Trong min tn s, b lc c c trng bi p ng tn s. Da vo p ng tn s ca b
lc, ton b di tn s c th c chia thnh ba vng: di thng, di chn v di chuyn tip.
Trong thc t, p ng bin trong di thng khng phi l hng s m bin thin trong
khong (1
1
)H
0
vi H
0
l p ng bin trung bnh.
1
c gi l gn sng di thng.
Tng t, p ng bin trong di chn khng phi lun bng 0 m bin thin trong khong
t 0 n
2
H
0
vi
2
l gn sng di chn. B lc c cht lng tt phi c di chuyn tip
hp v cc gn sng nh. Hnh 10.1 biu din cc thng s ni trn ca p ng tn s:

p
s
1-
1
1+
1

f

|H(f)|

0


Hnh 10.1. p ng bin ca b lc s
Trong MATLAB, ch tiu gn sng di chn c thay bng mt ch tiu tng t, l
suy hao di chn.
Vi cc ch tiu p ng tn s chn, phng php thit k cn ph thuc vo cht lng
mong mun ca b lc. Nu ch cn cht lng thp, ta c th dng cc thit k n gin; nu
i hi cht lng cao th phi dng cc phng php phc tp hn.
Tt c cc hm thit k b lc trong MATLAB u s dng tn s chun ho (theo tn s n
v l tn s Nyquist, tc tn s ly mu), do khng cn phi cung cp thm thng s tn
s ly mu khi gi cc hm ny. Mun chuyn t tn s chun ho sang tn s gc, ta nhn
vi ; mun chuyn sang tn s Herzt, ta nhn vi tn s ly mu.
Cc phng php thit k b lc s c phn thnh hai nhm: thit k b lc IIR v thit k
b lc FIR.

1
: gn sng di thng

2
: gn sng di chn

p
: tn s ti hn ca di thng

s
: tn s ti hn ca di chn
Thit k cc b lc

118
I0.2. IhII K 80 L00 II8
u im c bn ca cc b lc IIR so vi cc b lc FIR l: b lc IIR c kh nng tho mn
cc ch tiu thit k vi bc ca b lc thp hn so vi b lc FIR tng ng. Nhc im
ca b lc IIR l c tnh cht pha phi tuyn. Tuy nhin, do c im ca qu trnh x l d
liu trong MATLAB l mang tnh cht offline, ngha l ton b chui d liu vo c
xc nh trc khi thc hin lc, do c th xy dng b lc khng nhn qu, c pha bng 0
(thng qua hm filtfilt) loi b mo pha phi tuyn.
Cc phng php thit k b lc IIR c s dng trong MATLAB gm c:
Phng php thit k c din da trn cc nguyn mu analog, bao gm cc b lc
Butterworth, Chebychev loi I, Chebychev loi II, elliptic v Bessel.
Phng php thit k trc tip (Yulewalk) tm mt b lc c p ng bin xp x mt
hm m ngi thit k mong mun. y cng l mt phng php xy dng mt b lc
thng di nhiu bng.
Phng php m hnh thng s (parametric modelling).
Phng php thit k Butterworth tng qut ho
Bng 10.1. tm tt cc phng php thit k b lc IIR cng vi cc hm c MATLAB
cung cp thc hin cc phng php thit k ny.
Bng 10.1. Tm tt cc phng php thit k b lc IIR v cc hm MATLAB tng ng
Phng php thit k M t Cc hm MATLAB tng ng
Da vo cc b lc
analog
S dng cc cc v zero
ca cc b lc thng thp
c in trong min
Laplace (lin tc), chuyn
thnh b lc s bng cc
php bin i tn s v
ri rc ho b lc
Cc hm thit k b lc hon chnh:
besself, butter, cheby1, cheby2, ellip
Cc hm c lng bc ca b lc:
buttord, cheb1ord, cheb2ord, ellipord
Cc hm to cc b lc thng thp tng t:
besselap, buttap, cheb1ap, cheb2ap,
ellipap
Cc hm thc hin cc php bin i tn s:
lp2bp, lp2bs, lp2hp, lp2lp
Cc hm ri rc ho b lc:
bilinear, impinvar
Thit k trc tip
Thit k b lc s trc
tip trong min thi gian
ri rc bng phng php
tim cn bin
yulewalk
Thit k Butterworth
tng qut
Thit k cc b lc thng
thp Butterworth c s
zero nhiu hn s cc
maxflat
M hnh thng s
Tm mt b lc s xp x
mt p ng xp x mt
p ng thi gian hoc
p ng tn s nh
trc
Cc hm to m hnh trong min thi gian:
lpc, prony, stmcb
Cc hm to m hnh trong min tn s:
invfreqs, invfreqz
Thit k cc b lc

119
I0.2.I. IhII K 040 80 L00 II8 00 0IN 004 I8N 040 N00N M40 4N4L00
Nguyn tc thit k b lc IIR c in l da trn s chuyn i t cc b lc thng thp
analog thnh cc b lc s tng ng. Qu trnh thit k b lc IIR c in bao gm cc
bc sau:
o Tm mt b lc thng thp tng t vi tn s ct bng 1 v dng cc php bin i tn s
chuyn b lc nguyn mu ny thnh b lc vi cu hnh cc di thng v di chn nh ta
mong mun.
o Chuyn b lc ni trn sang min s.
o Ri rc ho b lc.
Chng ta ln lt kho st chi tit cc bc ca qu trnh thit k ni trn, ng thi tm hiu
cc c tnh ni bt ca mi loi b lc IIR c in.
Thit k cc b lc nguyn mu analog
MATLAB cung cp cc hm khi to cc b lc thng thp tng t c tn s ct bng 1,
y l bc u tin trong quy trnh thit k b lc IIR c in. C 5 kiu b lc thng thp
analog: b lc Butterworth, b lc Chebychev loi I, b lc Chebychev loi II, b lc elliptic
v b lc Bessel. Tt c c tm tt trong bng sau:
Bng 16.2. Tm tt cc hm khi to cc b lc thng thp nguyn mu
Kiu b lc C php hm MATLAB tng ng
Bessel
[z,p,k] = besselap(n)
Butterworth
[z,p,k] = buttap(n)
Chebychev loi I
[z,p,k] = cheb1ap(n,Rp)
Chebychev loi II
[z,p,k] = cheb2ap(n,Rs)
Elliptic
[z,p,k] = ellipap(n,Rp,Rs)
B lc Butterworth:
L b lc ton im cc, c p ng tn s:

N
H
2
2
1
1
) (
+
= (10.1)
trong : N l bc ca b lc
p ng tn s ca b lc Butterworth bng phng trong cc di thng v di chn, l hm
n iu gim trn [0, +).
B lc Chebychev loi I:
B lc Chebychev loi I ti thiu ho tr tuyt i ca sai s gia p ng tn s thc t v l
tng trn ton b di thng bng cch a vo mt lng gn sng cn bng trong ton di
thng Rp (tnh bng dB). y l b lc ton im cc, c p ng gn sng cn bng trong
di thng v p ng bng phng trong di chn. Thi gian chuyn tip t di thng sang di
chn nhanh hn b lc Butterworth. |H(j)| =
20 /
10
Rp
ti = 1 vi Rp l gn sng di
thng.
p ng bin :
Thit k cc b lc

120

) ( 1
1
) (
2 2
2
+
=
N
T
H

(10.2)
trong : l mt h s ph thuc vo gn sng di thng
20 /
1
10
Rp
=
1
) 1 (
1
2
1
2

(10.3)
T
N
(x) l a thc Chebychev bc N, xc nh bng cc cng thc truy hi:

= =
= =
+
, 2 , 1 ) ( ) ( 2 ) (
) ( , 1 ) (
1 1
1 0
N x T x xT x T
x x T x T
N N N
vi
(10.4)
B lc Chebychev loi II:
B lc Chebychev loi I ti thiu ho tr tuyt i ca sai s gia p ng tn s thc t v l
tng trn ton b di chn bng cch a vo mt lng gn sng cn bng trong ton di
chn Rs (tnh bng dB). L b lc c c cc v zero, p ng bng phng trong di thng v
gn sng trong di chn. Di chn tin v 0 chm hn so vi b lc Chebychev loi I, thm
ch khng hi t v 0 nu N chn. Tuy nhin, u im ca n l di thng bng phng. |H(j)|
=
2
=
20 /
10
Rs
ti = 1 vi Rs l gn sng di chn.

2
) ( H =
[ ] ) ( / 1 1
1
2 2
+
N
T
(10.5)
B lc Chebychev i hi t im cc hn so vi b lc Butterworth c cng thng s yu
cu.
B lc elliptic:
L b lc gn sng c di thng v di chn, p ng tn s c c cc ln zero v c m
t bi phng trnh:

2
) ( H =
) ( 1
1
2
+
N
U
(10.6)
trong : U
N
(x) l hm elliptic Jacobian bc N
l mt h s ph thuc vo gn sng di thng: Rp = 10log
10
(1+
2
)
(10.7)
Do sai s c tri u trn cc di thng v di chn nn b lc Elliptic l b lc hiu qu
nht trn phng din ti thiu ha s bc ca b lc. Nu cng thng s bc v cc yu cu
khc th b lc Elliptic s c di chuyn tip nh nht. |H(j)| =
1
=
20 /
10
Rp
ti = 1 vi Rp
l gn sng di thng.
B lc Bessel:
L b lc ton im cc vi hm h thng:
H(s) =
) (
1
s B
N
(10.8)
trong B
N
(s) l a thc Bessel bc N, xc nh bng cng thc truy hi:
Thit k cc b lc

121

+ =
+ = =

) ( ) ( ) 1 2 ( ) (
1 ) ( , 1 ) (
2
2
1
1 0
s B s s B N s B
s s B s B
N N N
(10.9)
B lc Bessel c tr nhm phng ti a ti tn s bng 0 v gn nh bng phng trong ton
b di thng. Do , b lc Bessel c p ng pha tuyn tnh trn ton di thng. c tnh
ny cho php tn hiu sau khi lc gi nguyn dng sng trong phm vi tn s ca di thng.
Tuy nhin c tnh ny b mt i khi ta chuyn sang min s. V vy MATLAB ch h tr
cho thit k b lc Bessel analog.
tho mn iu kin suy hao di chn, b lc Bessel cn c bc cao hn so vi cc loi b
lc khc. Khi = 1 th |H(j)| <
2
1
v gim dn khi bc ca b lc tng ln.
V d 10-1. Khi to mt b lc elliptic tng t c bc n = 5, gn sng di thng Rp =
0.5, gn sng di chn Rs = 20. V p ng bin ca b lc.
[z,p,k] = ellipap(5,0.5,20);
w = logspace(-1,1,1000);
h = freqs(k*poly(z),poly(p),w);
semilogx(w,abs(h)), grid
Sau khi thc thi chng trnh ta c mt th tng t hnh 10.2d.
Bin i tn s
Bc th hai trong qu trnh thit k b lc IIR c in l dng cc php bin i tn s
chuyn t cc nguyn mu b lc thng thp analog c tn s ct bng 1 thnh cc b lc
analog thng thp, thng cao, thng di, hoc chn di c cc tn s ct nh ta mong mun.
Sau y l danh sch cc hm MATLAB thc hin cc php bin i tn s ni trn cng
vi cc c php tng ng ca chng.
Bng 10.3. Cc hm thc hin cc php bin i tn s
Loi bin i Quy tc bin i Hm thc hin bin i
Thng thp sang thng
thp
0

s
s =
[numt,dent] = lp2lp(num,den,Wo)
[At,Bt,Ct,Dt] = lp2lp(A,B,C,D,Wo)
Thng thp sang thng
cao
s
s
0

=
[numt,dent] = lp2hp(num,den,Wo)
[At,Bt,Ct,Dt] = lp2hp(A,B,C,D,Wo)
Thng thp sang thng di
( )
( )
0
2
0 0
/
1 /


s
s
BW
s
+
=
[numt,dent] = lp2bp(num,den,Wo,Bw)
[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw)
Thng thp sang chn di
( )
( ) 1 /
/
2
0
0
0
+
=

s
s BW
s
[numt,dent] = lp2bs(num,den,Wo,Bw)
[At,Bt,Ct,Dt] = lp2bs(A,B,C,D,Wo,Bw)
T bng trn ta thy rng cc php bin i tn s c th thc hin i vi hai dng m hnh
h thng tuyn tnh: m hnh hm truyn t v m hnh khng gian trng thi. M hnh hm
truyn t c biu din bi hai vector (num, den) (hoc (numt, dent) sau khi bin i);
cn m hnh khng gian trng thi biu din bng 4 ma trn (A, B, C, D) (hoc (At, Bt, Ct,
Dt) sau khi bin i).
Thit k cc b lc

122
i vi cc b lc thng thp v thng cao,
0
chnh l tn s ct. Vi cc b lc thng di
v chn di, BW v
0
c xc nh nh sau:
1 2
= BW (10.10)
2 1 0
= (10.11)
trong
1
v
2
l cc tn s ct ca b lc.
Trong trng hp thng di v chn di, do s dng php i bin bc hai nn bc ca b lc
mi s gp i bc ca b lc c.
V d 10-2. Thit k mt b lc thng di tng t thuc dng Chebychev loi I c bc n
= 10, gn sng di thng Rp = 3dB, gn sng di chn Rs = 20. Cc tn s ct l 5 /
1
=
v =
2
. V p ng bin ca b lc.
[z,p,k] = cheb1ap(5,3); % B lc Chebychev loi I bc 5, Rs = 3dB
[A,B,C,D] = zp2ss(z,p,k); % Chuyn sang dng khng gian trng thi.
u1 = 0.1*2*pi; u2 = 0.5*2*pi; % Cc tn s ct (n v rad/s)
Bw = u2-u1;
Wo = sqrt(u1*u2);
[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
[b,a] = ss2tf(At,Bt,Ct,Dt); % Chuyn sang dng hm truyn t.
w = linspace(0.01,1,500)*2*pi; % To vector tn s.
h = freqs(b,a,w); % Tnh p ng tn s.
semilogy(w/2/pi,abs(h)), grid % V p ng bin .
xlabel('Frequency (Hz)');
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
10
-7
10
-6
10
-5
10
-4
10
-3
10
-2
10
-1
10
0
Frequency (Hz)

Hnh 10.3.
Thit k cc b lc

123
Ri rc ho b lc
Bc cui cng trong khu thit k b lc IIR l chuyn b lc t min tng t sang min
s. C hai phng php thc hin vic ny: phng php bt bin xung v phng php
bin i song tuyn tnh. Cc hm MATLAB tng ng vi hai phng php ny l
impinvar v bilinear (xem bng 10.4).
Bng 10.4. Cc hm thc hin ri rc ho b lc tng t
Bin i tng t - s Hm thc hin bin i
Bt bin xung
[numd,dend] = impinvar(num,den,fs)
[numd,dend] = impinvar(num,den,fs,tol)
Bin i song tuyn tnh
[zd,pd,kd] = bilinear(z,p,k,fs,Fp)
[numd,dend] = bilinear(num,den,fs,Fp)
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,fs,Fp)
Phng php bt bin xung
Ni dung ca phng php bt bin xung l: xy dng mt b lc s m p ng xung ca n
l cc mu ri rc ca p ng xung ca b lc tng t ban u. Trong MATLAB, phng
php ny c thc hin bi hm impinvar. Hm ny ch chp nhn m hnh hm truyn t
ca b lc.
t kt qu tt nht, b lc tng t phi khng c thnh phn tn s no ln hn tn s
ly mu, v cc thnh phn tn s ny s chng ln vo di thng thp trong qu trnh ly mu
(tiu chun Nyquist). Phng php bt bin xung c th c tc dng i vi mt s b lc
thng thp v thng di nhng khng thch hp i vi cc b lc thng cao v chn di.
Phng php bin i song tuyn tnh:
Php bin i song tuyn tnh l mt nh x t min lin tc (min s) sang min s (min z).
Php bin i ny bin hm truyn Laplace H(s) trong min s thnh hm truyn t H(z) trong
min z theo quy tc sau:
1
1
| ) ( ) (
+

=
=
z
z
k s
s H z H (10.12)
Php bin i song tuyn tnh bin trc o j trong mt phng s thnh vng trn n v trong
mt phng z. Mt im trn trc o c tung s tr thnh im trn vng trn n v c:


=

k
1
tan 2 (10.13)
Php bin i song tuyn tnh c thc hin bng hm bilinear. Gi tr mc nh ca h s k
l (2*Fs) (Fs l tn s ly mu). Nu cung cp thm thng s Fp (gi l tn s phi hp) th:
k =
( )
s p
p
f f
f
/ tan
2

(10.14)
Nu c s hin din ca thng s Fp, php bin i song tuyn tnh s bin i tn s
p
f 2 = thnh cng tn s trong min z, nhng c chun ho theo tn s ly mu Fs:
s
p
f
f

2
= (10.15)
Hm bilinear c th thc hin php bin i tuyn tnh trn ba dng m hnh h thng tuyn
tnh: m hnh li cc zero, m hnh hm truyn t v m hnh khng gian trng thi.
Thit k cc b lc

124
Trong v d 10.2, ta c th ri rc ho b lc to c bng cch dng hm bilinear vi tn
s ly mu 2Hz:
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,2,0.1);
[bz,az] = ss2tf(Ad,Bd,Cd,Dd); % chuyn v m hnh hm truyn t.
p ng tn s ca b lc mi nh sau:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
-300
-240
-180
-120
-60
0
Normalized Frequency ( rad/sample)
M
a
g
n
it
u
d
e

(
d
B
)
Magnitude (dB) and Phase Responses
-900
-700
-500
-300
-100
100
P
h
a
s
e

(
d
e
g
r
e
e
s
)

Hnh 10.4.
Ta thy rng tn s cnh trn ca di thng nh hn 0,5Hz mc d, i vi b lc tng t gi
tr ny ng bng 0,5Hz. Nguyn nhn l do tnh phi tuyn ca bn thn php bin i song
tuyn tnh. khc phc hin tng ny, khi xy dng b lc tng t, ta phi tnh li cc tn
s ngng ca di thng sao cho qua php bin i song tuyn tnh, n chuyn mt cch
chnh xc thnh cc tn s mong mun nh trong v d sau:
V d 10-3. Hiu chnh li v d 10-2 ng thi p dng php bin i song tuyn tnh
thit k b lc s Chebychev loi I, bc 10, di thng 0,1 0,5Hz, tn s ly mu 2Hz.
[z,p,k] = cheb1ap(5,3); % B lc Chebychev loi I bc 5, Rs = 3dB
[A,B,C,D] = zp2ss(z,p,k); % Chuyn sang dng khng gian trng thi.
fs = 2; % Tn s ly mu (hertz)
u1 = 2*fs*tan(0.1*(2*pi/fs)/2); % Tn s ct thp (rad/s)
u2 = 2*fs*tan(0.5*(2*pi/fs)/2); % Tn s ct cao (rad/s)
Bw = u2 - u1; % Bng thng
Wo = sqrt(u1*u2); % Tn s trung tm
[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,2,0.1);
[bz,az] = ss2tf(Ad,Bd,Cd,Dd); % chuyn v m hnh hm truyn t.
[h,f] = freqz(bz,az,256,2); % Tnh p ng tn s.
semilogy(f,abs(h)), grid % V p ng bin .
Thit k cc b lc

125
xlabel('Frequency (Hz)');
title('Dap ung bien do');
Kt qu nh sau:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
10
-14
10
-12
10
-10
10
-8
10
-6
10
-4
10
-2
10
0
Frequency (Hz)
Dap ung bien do

Hnh 10.5.
Cc hm thit k b lc IIR hon chnh
thun tin cho ngi s dng khi thc hin qu trnh thit k cc n lc IIR c in,
MATLAB cng cung cp cc hm thit k hon chnh cc b lc IIR thay v phi thc hin
tng bc quy trnh thit k nh phn trn. Cc hm ny tch hp cc quy trnh cp
trn y li, trong bc th ba ca qu trnh, tc l bc ri rc ho cc b lc tng t,
cc hm ny u s dng phng php bin i song tuyn tnh.
B lc Butterworth: dng hm butter:
>> [b,a] = butter(n,Wn,form)
>> [z,p,k] = butter(n,Wn,form)
>> [A,B,C,D] = butter(n,Wn,form)
trong :
Wn l vector gm 2 phn t xc nh cc tn s ct (vi cc b lc thng thp, thng cao, Wn
tr thnh mt v hng). Wn c chun ho theo tn s ly mu.
form l mt chui xc nh dng b lc: low (b lc thng thp), high (thng cao),
stop (chn di). Nu Wn c hai phn t v khng c thng s form, hm s to ra b lc
thng di.
to cc b lc tng t, ta thm vo chui s vo danh sch cc thng s.
MATLAB cng cung cp hm buttord c lng bc b lc ti thiu tho mn cc yu
cu thit k.
>> [N, Wn] = buttord(Wp, Ws, Rp, Rs)
Thit k cc b lc

126
Cc thng s nhp ca n bao gm cc tn s ngng ca di thng v di chn Wp v Ws,
cc gi tr mong mun ca gn sng di thng ti a v suy hao ti thiu ca di chn (Rp,
Rs). Hm tr v bc ti thiu ca b lc cng vi vector Wn cung cp cho hm butter.
B lc Chebychev loi I: dng hm cheby1:
>> [b,a] = cheby1(n,Rp,Wn,form)
>> [z,p,k] = cheby2(n,Rp,Wn,form)
>> [A,B,C,D] = cheby2(n,Rp,Wn,form)
Cc thng s nhp tng t nh hm butter, thm vo thng s gn sng di thng Rp
(tnh bng dB). c lng bc b lc, dng hm cheb1ord.
B lc Chebychev loi II: dng hm cheby2:
>> [b,a] = cheby2(n,Rs,Wn,form)
>> [z,p,k] = cheby2(n,Rs,Wn,form)
>> [A,B,C,D] = cheby2(n,Rs,Wn,form)
trong Rs l gn sng di chn (tnh bng dB). Hm cheb2ord cho php c lng bc
ca b lc.
B lc elliptic: dng hm ellip:
>> [b,a] = ellip(n,Rp,Rs,Wn,form)
>> [z,p,k] = ellip(n,Rp,Rs,Wn,form)
>> [A,B,C,D] = ellip(n,Rp,Rs,Wn,form)
Hm ellipord cho php c lng bc ca b lc.
B lc Bessel: dng hm besself (ch thit k b lc tng t):
>> [b,a] = besself(n,Wn,form)
>> [z,p,k] = besself(n,Wn,form)
>> [A,B,C,D] = besself(n,Wn,form)
Khng c hm c lng bc ca b lc.
V d 10-4. Thit k mt b lc thng di c bng thng t 1000Hz 2000Hz, di chn bt
u cch cc tn s trn 500Hz, gn sng di thng ti a l 1dB, suy hao di chn ti thiu
l 60dB. Tn s ly mu l 10kHz.S dng b lc Butterworth.
>> [n,Wn] = buttord([1000 2000]/5000,[500 2500]/5000,1,60);% c lng bc b
lc
% v cc tn s ct
n =
12
Wn =
0.1951 0.4080
>> [b,a] = butter(n,Wn); % Thit k b lc
I0.2.2. IhII K I800 IIF 040 80 L00 II8 I80N0 MIN 50
y l phng php thit k trc tip trong min ri rc da vo mt p ng tn s mong
mun m khng da vo cc b lc analog. Phng php thit k ny khng b b buc trong
Thit k cc b lc

127
cc dng cu hnh thng thp, thng cao, thng di hay chn di m ta c th thit k mt b
lc s vi p ng tn s bt k, c th l gm nhiu di tn s.
Phng php ny c thc hin vi hm yulewalk. Gii thut m hm ny s dng l: tm
bin i ngc FFT ca ph cng sut l tng mong mun v gii h phng trnh Yule-
Walker s dng cc mu d liu ca hm t tng quan tm c. B lc IIR c thit k
theo phng php ny l b lc IIR quy vi phng php bnh phng cc tiu.
C php:
>> [b,a] = yulewalk(n,f,m)
trong n l bc b lc, F l vector tn s v M l vector p ng bin tng ng vi F.
Phng php ny khng quan tm n p ng pha. (b,a) l cc vector h s ca b lc c
thit k.
V d 10-5. Dng hm yulewalk thit k mt b lc c hai bng, v p ng tn s thc t
v p ng tn s mong mun.
m = [0 0 1 1 0 0 1 1 0 0];
f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1];
[b,a] = yulewalk(10,f,m);
[h,w] = freqz(b,a,128)
plot(f,m,w/pi,abs(h)); grid
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Dap ung thuc
Dap ung ly tuong

Hnh 10.6.
I0.2.3. IhII K 80 L00 80II8w08Ih I0N0 q04I
Hm maxflat cho php ta thit k cc b lc Butterworth, tc l b lc Butterworth vi s
cc v s zero khc nhau. iu ny c li trong mt s trng hp khi m vic tnh ton cc
cc phc tp hn so vi cc zero. C php hm maxflat tng t nh hm butter, nhng
khc ch ta c th cung cp hai thng s bc ca b lc, mt cho a thc t s v mt cho
a thc mu s.
Thit k cc b lc

128
B lc ny c c im l c phng ti a, c ngha n c ti u ho sao cho vi mi
gi tr ca bc ca cc a thc t s th o hm ca p ng tn s ti tn s = 0 v =
u bng 0.
>> [b,a] = maxflat(nb,na,wn)
I0.2.4. Fh00N0 Fh4F M0 hNh Ih0N0 50
Ni dung ca phng php m hnh thng s l da vo mt s thng tin no v h thng
(v d p ng ng ra ng vi mt ng vo cho trc, hoc p ng xung, p ng tn s, ...)
xc nh mt cch gn ng h thng . Phng php ny c th ng dng thit k cc
b lc s da trn cc thng tin v min thi gian hoc min tn s ca b lc.
Thit k trong min thi gian
Nu ta bit p ng xung ca b lc ging vi mt chui x cho trc, ta c th dng phng
php m ho d on tuyn tnh (LPC - Linear Predictive Coding) thit k b lc ton cc
tho mn iu kin trn:
>> [a,e] = lpc(x,n)
a l vector h s ca b lc ton cc, e l variance ca sai s d on, n l bc ca b d on
tuyn tnh.
Hoc cng c th dng phng php Prony thit k b lc IIR tho mn yu cu trn:
>> [b,a] = prony(h, nb, na)
Hm ny tr v cc h s ca b lc s c bc ca cc a thc t v mu ln lt l nb, na v
p ng xung l vector h.
Mt phng php khc xc nh cc h s ca b lc l phng php lp Steiglitz-
McBride. Phng php ny cng c th dng trong trng hp ta bit c p ng ng ra
i vi mt chui vo xc nh.
>> [b,a] = stmcb(h,nb,na,n,ai)
Ngoi cc thng s gii thiu trn, hm ny c thm thng s n l s ln lp ca phng
php, ai l vector d on ban u ca a. Nu khng cung cp thng s ny th hm s chn
mc nh ai t [b,ai] = prony(h,0,na).
>> [b,a] = stmcb(y,x,nb,na,n,ai)
Trong trng hp ny ta nhp cc chui vo x v chui ra y tng ng thay v p ng xung
h.
Thit k trong min tn s
C th thit k b lc s da vo p ng tn s ca n bng cch dng hm invfreqz ca
MATLAB.
>> [b,a] = invfreqz(H,w,nb,na,wt,iter,tol,'trace')
Hm ny tr v mt b lc vi cc h s thc c p ng tn s phc c xc nh bi cp
vector (H,w): w l vector tn s gm cc tn s gc chun ho trong khong [0,] (n v
rad/s) cn H l vector p ng tn s phc ti cc im tn s xc nh bi w. (na,nb) l
bc ca cc a thc t v mu ca b lc. Bn thng s ni trn l bn thng s c bn ca
hm invfreqz.
Thit k cc b lc

129
Cc thng s cn li l cc thng s khng bt buc. wt l mt vector cng chiu di vi w
nh gi trng s ca sai s ti cc im tn s kho st. Hm invfreqz s tm cch ti
thiu ho i lng (B H.A)
2
.wt (mc nh wt l vector n v). iter xc nh s ln lp
ti a ca gii thut. tol xc nh sai s cho php. Gii thut s dng khi sai s nh hn gi
tr tol (mc nh 0.01). Chui trace c cung cp yu cu hm invfreqz to ra cc
bo co v tng bc lp.
Nu cn thit k b lc phc, ta dng c php:
>> [b,a] = invfreqz(h,w,'complex',nb,na,...)
trong vector w gm cc phn t nm trong khong [-, ].
I0.3. IhII K 80 L00 FI8
Cc b lc FIR l cc b lc c p ng xung hu hn v l b lc ton zero. So vi b lc
IIR, cc b lc IIR c nhng u im ni bt sau:
o Pha tuyn tnh
o Lun lun n dnh
o Phng php thit k ni chung l tuyn tnh
o C th thc hin mt cch hiu qu bng phn cng
o p ng qu ch tn ti trong thi gian hu hn
Tuy nhin, nhc im ln nht ca b lc FIR so vi b lc IIR l bc ca b lc FIR phi
ln hn nhiu so vi b lc IIR vi cng mt ch tiu cht lng. Do tr ca b lc FIR
cng cao hn.
Cc phng php thit k b lc FIR c s dng trong MATLAB c tm tt trong bng
di y:
Bng 10.5. Cc phng php thit k b lc IIR v cc hm MATLAB tng ng
Phng php thit k M t Cc hm thit k
Phng php ca s
S dng cc ca s gii hn p ng xung,
tc bin i FFT ngc ca p ng tn s l
tng
fir1, fir2,
kaiserord
Nhiu di tn v cc di chuyn
tip
Gn sng cn bng hoc cc tiu ho bnh
phng sai s cc bng con ca p ng tn s
firls, firpm,
firpmord
Gii hn bnh phng cc tiu
Ti thiu ho sai s bnh phng tch lu trn
ton di tn s v gi tr ti a cho php
fircls, fircls1
p ng tu nh
Thit k b lc tu theo p ng tn s, k c
cc b lc phc v b lc c pha phi tuyn
cfirpm
Raised-Cosine
p ng ca b lc thng thp vi vng chuyn
tip c dng sine
firrcos
I0.3.I. 040 80 L00 00 Fh4 I0N INh
Hu ht cc b lc FIR c thit k trong MATLAB u c pha tuyn tnh, tr cc b lc
thit k bng hm cfirpm. Da vo tnh cht i xng ca cc h s ca b lc FIR (cn gi
l cc tap), ngi ta nh ngha bn loi b lc FIR c pha tuyn tnh nh sau:
Thit k cc b lc

130
Bng 10.6. Phn loi cc b lc FIR c pha tuyn tnh
Loi b lc Bc b lc Tnh i xng ca cc h s b lc p ng tn s ti f = 0
p ng tn s
ti f = 1
Loi I Chn Khng rng buc Khng rng buc
Loi II L
Chn:
b(k) = b(n + 2 k), k = 1, 2, ..., n + 1 Khng rng buc H(1) = 0
Loi III Chn H(0) = 0 H(1) = 0
Loi IV L
L:
b(k) = - b(n + 2 k), k = 1, 2, ..., n + 1
H(0) = 0 Khng rng buc
tr nhm v tr pha ca b lc FIR c pha tuyn tnh bng nhau v bng mt hng s
trn ton b bng tn ca b lc. Nu bc ca b lc l n th tr nhm s bng n/2, tc l
tn hiu sau khi lc s b tr i n/2 bc so vi tn hiu vo. c im ny gip bo ton dng
sng tn hiu trong di thng, ngha l tn hiu khng b mo pha.
Trong trng hp mc nh, cc hm fir1, fir2, firls, firpm, fircls, fircls1, v firrcos u
thit k cc b lc FIR loi I v II. Do c im H(1) = 0, nn b lc fir1 khng th thit k
cc b lc thng cao v chn di thuc loi II. Thay vo , nu n l, hm fir1 s t ng
cng thm 1 vo bc b lc tr thnh loi I. Cc hm firls v firpm thit k cc b lc loi
III v IV. Hm cfirpm c th thit k bt k b lc loi no, k c b lc c pha phi tuyn.
I0.3.2. Fh00N0 Fh4F 004 50 {wIN00wIN0)
Xt b lc thng thp l tng c tn s ct l
0
(rad/s), c p ng bin bng 1 mi
tn s nh hn
0
v bng 0 cc tn s cn li. B lc ny c p ng xung l:

= = =


n c d e d e H n h
n j n j

0 0
sin
2
1
) (
2
1
) (
0
0
(10.16)
B lc ny khng th thc hin c trong thc t v n c p ng xung v hn v khng
nhn qu. to mt b lc p ng xung hu hn c p ng gn ging p ng l tng
nu trn, ta dng mt ca s thi gian hu hn gii hn p ng xung h(n). Ta c th to ra
mt b lc c pha tuyn tnh bng cch ch gi li phn trung tm ca p ng xung h(n). V
d, thit k b lc thng thp bc 51, c tn s ct bng 0,4, ta chn cc h s ca n nh
sau:
>> b = 0.4*sinc(0.4*(-25:25));
Trong trng hp trn ta dng ca s ch nht tc ng ln h(n). Trong trng hp
tng qut, p ng xung ca b lc FIR s l:
) ( ). ( ) (
0
n w n h n h = (10.17)
trong ) (
0
n h l p ng xung l tng cn w(n) l ca s thi gian hu hn. Cc hm ca
s khc nhau cng vi hm MATLAB tng ng c trnh by trong bng 10.6.
Bng 10.6. Cc loi ca s v hm MATLAB tng ng
Tn ca s Biu thc thi gian Hm MATLAB tng ng
Ch nht
w = ones(n,1);
w = rectwin(n)
Thit k cc b lc

131
Tam gic
Vi n l: w(k) =

<
+
+
+
+

+
n k
n
n
k n
n
k
n
k
2
1
1
) 1 ( 2
2
1
1
1
2

Vi n chn: w(k) =

<
+

n k
n
n
k n
n
k
n
k
2
1 ) ( 2
2
1
1 2

w = triang(n)
Hamming w(k + 1) = 0,54 0,46.cos

1
2
n
k
, k = 1 , 0 n w = hamming(n,sflag)
Kaiser
w(k) =
( )
) (
] 2 / /[ ) 1 (
0
0

I
n k n k I
, k = 1 , 0 n

< < +

=
21 0
50 21 ) 21 ( 07886 , 0 ) 21 ( 5842 , 0
50 ) 7 , 8 ( 1102 , 0
4 , 0




vi l gn sng ti a theo dB
w = kaiser(n,bta)
Bartlett
Vi n l: w(k + 1) =

<

1
2
1
1
2
2
2
1
0
1
2
n k
n
n
k
n
k
n
k

Vi n chn: w(k + 1) =

<

1
2 1
) 1 ( 2
1
2
0
1
2
n k
n
n
k n
n
k
n
k

w = bartlett(n)
Hann w(k + 1) = 0,5(1 - cos

1
2
n
k
), k = 1 , 0 n w = hann(n,sflag)
Bartlett-
Hanning
w(k + 1) = 0,62
0,48. 5 , 0
1

n
k
+0,38.cos

5 , 0
1
2
n
k
, k = 1 , 0 n
w = barthannwin(n)
Blackman w(k + 1) = 0,42 - 0,5.cos

1
2
n
k
+ 0,08.cos

1
4
n
k
, k = 1 , 0 n
w =
blackman(n,sflag)
Blackman -
Harris
w(k + 1) = 0,35875 - 0,48829.cos

1
2
n
k
+ 0,14128.cos

1
4
n
k
+
0,01168. cos

1
6
n
k
, k = 1 , 0 n
w =
blackmanharris(n)
Thit k cc b lc

132
Bohman
w(k + 1) =

2
2
sin
1
2
2
cos
2
2
1
N
N
k
N
N
k
N
N
k


vi 0 |k| n
w = bohmanwin(n)
Chebychev w = chebwin(n,r)
Gauss w(k + 1) = exp

2
2 /
2 /
2
1
N
N k
vi N k 0 , 2
w =
gausswin(n,alpha)
Parzen (de
la Valle-
Poussin)
w(k) =

2 4 2 /
1 2
4
0
2 /
1
2 /
6 1
3
2
N
k
N
N
k
N
k
N
k
N
k

w = parzenwin(n)
Tukey
w(k) =

<

+
+
+ <

+
k n
r
n
n r
k
r
n
r
n k n
r
n
r
k
n r
k
) 1 (
2 ) 1 (
) 1 ( 2 2
cos 1
2
1
) 1 (
2
1 ) 1 (
2
1
1 ) 1 (
2 ) 1 (
) 1 ( 2
cos 1
2
1


vi k = n , 1
w = tukeywin(n,r)
Flat top
w(k) =
2 4
1 1.93cos 1.29cos
t t
T T

+


-
6 8
0.388cos 0.0322cos
t t
T T

+


nu 0 t T,
w(k) = 0 vi t khc
w =
flattopwin(n,sflag)
Nuttall
w(k + 1) = 0,3635819 - 0,4891775.cos

1
2
n
k
+
0,1365995.cos

1
4
n
k
+ 0,0106411. cos

1
6
n
k
, k = 1 , 0 n
w = nuttallwin(n)
sflag: phng php ly mu ca s: symmetric (i xng), periodic (tun hon)
Ca s ch nht l loi ca s n gin nht. Tuy nhin, nu dng ca s ny th p ng tn
s ca b lc s c gn sng trong di thng v gn sng c bit ln vng chuyn tip.
Hin tng ny gi l hin tng Gibbs, n khng gim khi tng s bc ca b lc m n ch
c khc phc khi ta dng mt s hm ca s khc khng phi ca s ch nht.
Thit k cc b lc

133
h tr vic thit k cc b lc FIR bng phng php ca s, MATLAB cung cp hai
hm fir1 v fir2. Cc hm ny tr v p ng xung ca b lc FIR c ca s ho. Hai
hm ny c mc nh s dng ca s Hamming, nhng cng c th chp nhn cc ca s
khc.
>> b = fir1(N,wn,form,win)
trong , N l bc ca b lc, win l vector ca s thi gian c chiu di bng N + 1. Vector
wn cng vi chui k t form s nh ngha dng b lc theo cch sau:
o Nu wn ch c mt phn t th chnh l tn s ct ca b lc. form = high nu l
b lc thng cao, form = low nu l b lc thng thp.
o Nu wn c hai phn t: wn = [w1 w2] th hm fir1 to ra b lc thng di c cc tn
s ct l w1 v w2. Nu form = stop th fir1 to ra b lc chn di c cc tn s ct
w1, w2.
o Nu wn l mt vector n phn t: wn = [w1 w2 ... wN], hm fir1 s to ra mt b
lc nhiu di thng v di chn xen k nhau: 0 < w < w1, w1 < w < w2, ..., wn < w < 1. Trong
, nu form = DC-1 th di u tin s l di thng, cn nu form = DC-0 th di
u tin l di chn.
MATLAB cn cung cp hm kaiserord c lng cc thng s cn cung cp cho hm
fir1 (ch thch hp vi ca s Kaiser), ch cn cung cp p ng tn s mong mun.
>> [N,wn,bta,filtype] = kaiserord(f,a,dev,fs)
trong bta l h s ca ca s Kaiser, filtype l kiu b lc. f l vector tn s v a l
vector p ng bin tng ng, dev l vector cha cc lch cc i cho php trong cc
di tn, fs l tn s ly mu (mc nh bng 2).
Nu nh hm fir1 ch cho php thit k cc b lc FIR vi cc cu hnh cc di tn theo cc
dng chun nh thng thp, thng cao, thng di,... th hm fir2 cho php thit k b lc FIR
vi dng p ng tn s tu nh.
>> b = fir2(N,f,a,win)
f v a xc nh p ng tn s mong mun: f l vector cc im tn s cn a l vector p ng
bin ti cc im . win l vector ca s thi gian, l kt qu ca cc hm ca s
cp trn. B lc c to ra l b lc i xng, ngha l b(k) = b(n + 2 k), k = 1, 2, ... Vi
cc b lc c p ng khc 0 ti tn s Fs/2, bc ca b lc phi l s chn, nu N l, bc ca
b lc s t ng tng ln 1.
I0.3.3. IhII K 80 L00 FI8 NhI0 04I I4N 0I 040 04I 0h0N IIF
Cc hm firls v firpm cho php xc nh b lc l tng mong mun mt cch tng qut
hn so vi cc hm fir1 v fir2. Cc hm ny cho php thit k cc b bin i Hilbert, cc
b vi phn v cc b lc khc vi cc h s c tnh cht i xng l (cc b lc FIR pha tuyn
tnh loi III v IV). Cc hm trn cn cho php xc nh cc vng tn s m ta khng quan
tm n sai s (ngha l khng cn ti thiu ho sai s so vi b lc l tng trong vng ny),
v d nh cc di chuyn tip; hoc a vo cc trng s cho cc di tn khi ti thiu ho sai
s.
Hm firls l s m rng ca cc hm fir1 v fir2 trn c s s ti thiu ho bnh phng sai
s gia p ng thc v p ng l tng tch lu trong ton b di tn ca b lc.
Hm firpm thc hin gii thut Parks McClellan, l s kt hp ca thut ton Remez vi
l thuyt xp x Chebychev ti thiu ho sai s cc i gia p ng tn s thc v p
Thit k cc b lc

134
ng tn s l tng. Do cc b lc ny cn gi l b lc minimax. Mt tnh cht ca cc
b lc ny l c gn sng cn bng, nn cn c gi l cc b lc gn sng cn bng
(equiripple).
C php ca hai hm ni trn hon ton tng t nhau. Chng ch khc nhau v gii thut
thc hin. Chng ta s ln lt tm hiu cc c php ny trong tng trng hp ng dng c
th.
Cc cu hnh c bn
Ch hot ng c bn nht ca cc hm firls v firpm l thit k cc b lc FIR pha tuyn
tnh loi I v II (ph thuc vo bc ca b lc l chn hay l) vi c php nh sau:
>> b=firpm(N,f,a)
>> b=firls(N,f,a)
N l bc ca b lc cn (f,a) l cp vector xc nh p ng tn s mong mun ca b lc
(ging nh hm fir1 v fir2).
V d 10-6. Thit k b lc FIR thng thp bc 20 c p ng tn s xp x bng 1 trong
khong tn s t 0Hz n 0,4Hz v xp x bng 0 trong khong tn s t 0,5Hz n 1Hz (gi
s tn s ly mu l 2Hz) bng hai phng php: bnh phng cc tiu v Parks-McCllelan.
n = 20; % Bc b lc
f = [0 0.4 0.5 1]; % Cc tn s ngng ca cc di tn
a = [1 1 0 0]; % Bin mong mun
b = firpm(n,f,a); % Thit k bng gii thut Parks-McCllelan
[h1,f1] = freqz(b,1,256,2); % Tnh p ng tn s
bb = firls(n,f,a); % Thit k bng gii thut bnh phng cc tiu
[h2,f2] = freqz(bb,1,256,2); % Tnh p ng tn s
plot(f2,abs(h2),'b-',f1,abs(h1),'r--');grid % V p ng bin
legend('Giai thuat binh phuong cuc tieu','Giai thuat Parks-McCllelan');
xlabel('Frequency (Hz)');
ylabel('Magnitude')
Thit k cc b lc

135
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Frequency (Hz)
M
a
g
n
i
t
u
d
e
Giai thuat binh phuong cuc tieu
Giai thuat Parks-McCllelan

Hnh 10.7.
Ta thy rng b lc thit k bng firpm c gn sng cn bng. B lc thit k bng firls c
p ng tt hn trong cc di thng v di chn nhng km hn so vi firpm di chuyn
tip.
Vector trng s
Cc hm firls v firpm u cho php ta nhn mnh mc ti thiu ho mt s di tn so
vi cc di tn khc. thc hin iu ny ta ch cn cung cp thm mt vector trng s w.
Vector ny c chiu di bng mt na chiu di vector a v f bo m mi di tn u c
ng mt trng s. C php trong trng hp ny l:
>> b=firpm(N,f,a,w)
>> b=firls(N,f,a,w)
Tr li v d 16.6, gi s ta mun gn sng trong di chn phi nh hn 10 ln so vi
trong di thng, khi ta a thm vo vector trng s w v gi li cc hm firpm v firls
nh sau:
>> w = [1 10];
>> b=firpm(N,f,a,w)
Cc b lc phn i xng Bin i Hilbert
Nu gi hn firpm v firls km theo mt thng s chui k t h hoc Hilbert th kt
qu tr v s l p ng xung ca b lc FIR c tnh i xng l, tc l b lc c pha tuyn
tnh loi III hoc IV. B bin i Hilbert l tng l b lc c tnh i xng l nh trn v c
bin bng 1 trn ton b di tn s.
V d 10-7. Thit k b bin i Hilbert gn ng, s dng n tm bin i Hilbert ca
tn hiu x(t) = sin(600t) v xc nh tn hiu gii tch tng ng vi x.
Tn hiu gii tch ca x c nh ngha l: x j x x
a
+ = , vi x l bin i Hilbert ca x.
Thit k cc b lc

136
Ta thit k b bin i Hilbert gn ng bng cch thit k mt b lc thng di c di thng
chim gn nh ton b di tn s kho st. Sau s dng b lc ny lc tn hiu x, nh
vy ng ra chnh l bin i Hilbert ca x, nhng b tr i mt s lng mu bng mt na
bc ca b lc. Do tm tn hiu gii tch, ta phi lm tr tn hiu x i mt s lng mu
tng ng.
b=firpm(20,[0.05 0.95],[1 1],'h');% B bin i Hilbert xp x dng thng
di
fs = 1000; % Tn s ly mu
t = (0:1/fs:2)'; % Vector thi gian (chiu di 2s)
x = sin(2*pi*300*t); % Tn hiu sine tn s 300Hz
xh = filter(bb,1,x); % Bin i Hilbert ca x
xd = [zeros(10,1); x(1:length(x)-10)]; % Lm tr 10 mu
xa = xd + j*xh; % Tn hiu gii tch
Phng php trn khng kh thi i vi b lc c bc l. Trong trng hp ny, c th dng
hm hilbert hoc dng hm resample lm tr tn hiu i mt s lng mu khng phi l
s nguyn.
Cc b vi phn
o hm mt tn hiu trong min thi gian tng ng vi nhn bin i Fourier ca n vi
hm dc thun o. Nh vy, mun tm vi phn ca mt tn hiu, ta a tn hiu qua b lc
c p ng tn s H() = j. Cc hm firls v firpm cho php thit k cc b vi phn gn
ng (c hin tng delay), ch cn cung cp thm chui k t d hoc
differentiator, ng thi chuyn i thang tn s bng cch nhn vi .f
s
. V d:
>> b = firpm(21,[0 1],[0 pi*fs],'d');
Vi cc b lc FIR loi III th di vi phn phi kt thc trc tn s Nyquist v vector bin
cng phi c hiu chnh mt cch tng ng.
>> bb = firpm(20,[0 0.9],[0 0.9*pi*fs],'d');
ch d, hm firpm nh gi trng s ca sai s bng 1/ trong cc di tn c bin
khc 0 ti thiu ho sai s tng i cc i. Cn hm firls nh gi trng s bng ( )
2
/ 1 .
I0.3.4. IhII K 80 L00 FI8 0I 0I4I Ih04I 8Nh Fh00N0 000 II0 00 0I0I h4N {0L5
00N5I84IN0 L45I 5q048)
Cc b lc FIR thit k theo gii thut bnh phng cc tiu c gii hn (CLS Constrained
Least Squares) cho php ngi thit k khng cn xc nh cc di chuyn tip trong p ng
tn s mt cch tng minh. Ngi thit k ch cn nhp vo cc tn s ct (trong trng hp
b lc thng cao, thng di, thng thp hoc chn di) hoc cc tn s gii hn ca cc di
thng v di chn (trong trng hp b lc nhiu di tn).
c im quan trng ca phng php CLS l n cho php nh ngha cc gii hn trn v
di ca gn sng ti a cho php trong p ng tn s. Vi cc gii hn ny, gii thut
CLS s tm cch cc tiu ho sai s bnh phng trn ton b di tn s, ch khng phi ch
trn mt s di tn xc nh. Gii thut cng cho php gii hn cc nh gy ra bi hin tng
Gibb nh mt cch tu .
Thit k cc b lc

137
Phng php thit k b lc FIR dng gii thut CLS c thc hin bng hai hm fircls v
fircls1 ca MATLAB. Hm fircls1 dng thit k cc b lc thng thp v thng cao c
pha tuyn tnh cn hm fircls dng thit k cc b lc FIR nhiu di tn.
Thit k cc b lc CLS thng thp v thng cao c bn
i vi cc b lc thng thp v thng cao, dng hm fircls1.
>> b = fircls1(n,wo,dp,ds,wp,ws,k,wt,high)
Cc thng s c bn cn cung cp gm bc a b lc N, tn s ct wo, cc lch ti a cho
php trong di thng (dp) v di chn (ds) so vi cc gi tr l tng l 1 v 0.
Nu c thm cc thng s wp, ws, k, hm fircls1 s nh gi sai s bnh phng trong di
thng vi trng s gp k ln so vi trong di chn, wp l gii hn ca di thng v ws l gii
hn ca di chn (wp < wo < ws vi b lc thng thp).
Nu c thm thng s wt th b lc c thit k phi tho mn iu kin |e(wt)| dp nu
wt nm trong di thng hoc |e(wt)| ds nu wt nm trong di chn.
Trng hp mc nh, hm fircls1 s to ra b lc thng thp. Mun thit k b lc thng
cao, thm chui high vo cui danh sch thng s.
Cc gi tr tn s u l tn s chun ho theo mt na tn s ly mu.
V d 10-8. Thit k b lc FIR thng thp bc 61, tn s ct 0,3 (chun ho) vi cc
lch ti a trong cc di thng v di chn ln lt l 0,02 v 0,08. Gi s thm l qu trnh
ti thiu ho sai s trong di thng c nh gi vi trng s gp 10 ln so vi di chn, v
khi tnh trng s th di thng ko di ti tn s 0,28 cn di chn bt u t 0,32.
n = 61; % Bc b lc
wo = 0.3; % Tn s ct
dp = 0.02; % lch ti a trong di thng
ds = 0.008; % lch ti a trong di chn
k = 10; % T l trng s di thng so vi di chn
wp = 0,28; % Tn s gii hn ca di thng
ws = 0,32; % Tn s gii hn ca di chn
b = fircls1(n,wo,dp,ds,wp,ws,k); % Gi hm fircls1
[hh,ff] = freqz(b,1,512,2); % p ng tn s ca b lc
plot(ff,abs(hh),'b-');grid % V p ng bin
xlabel('Tan so chuan hoa');
ylabel('Bien do');
Thit k cc b lc

138
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Tan so chuan hoa
B
i
e
n

d
o

Hnh 10.8.
Thit k cc b lc FIR nhiu di tn
Trong trng hp ny, ta dng hm fircls vi c php nh sau:
>> b = fircls(n,f,a,up,lo)
trong n l bc ca b lc, f l mt vector xc nh cc tn s ranh gii gia cc di tn, a
l vector xc nh bin mong mun trong cc di tn v up, lo ln lt l cc vector xc
nh cc gii hn trn v di ca bin trong cc di tn ni trn. Cc gi tr tn s u l
tn s chun ho.
V d 10-9. Thit k b lc FIR bc 129 vi cc m t nh sau:
Di tn t 0 -0,3: bin bng 0, gii hn trn 0,005, gii hn di -0,005.
Di tn t 0,3 -0,5: bin bng 0,5, gii hn trn 0,51, gii hn di 0,49.
Di tn t 0,5 -0,7: bin bng 0, gii hn trn 0,03, gii hn di -0,03.
Di tn t 0,7 -0,9: bin bng 1, gii hn trn 1,02, gii hn di 0,98.
Di tn t 0,9 -1: bin bng 0, gii hn trn 0,05, gii hn di -0,05.
n = 129; % Bc b lc
f = [0 0.3 0.5 0.7 0.9 1]; % Cc tn s ngng
a = [0 0.5 0 1 0]; % Bin mong mun
up = [0.005 0.51 0.03 1.02 0.05]; % Gii hn trn ca bin
lo = [-0.005 0.49 -0.03 0.98 -0.05]; % Gii hn di ca bin
b = fircls(n,f,a,up,lo); % Cc h s b lc
[hh,ff] = freqz(b,1,512,2); % V p ng tn s
plot(ff,abs(hh),'b-');grid
xlabel('Tan so chuan hoa');
Thit k cc b lc

139
ylabel('Bien do');
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Tan so chuan hoa
B
i
e
n

d
o

Hnh 10.9.
I0.3.5. IhII K 80 L00 FI8 00 04F 0N0 I4N 50 I0 0h0N
Hm cfirpm cho php thit k cc b lc FIR c p ng tn s phc bt k do ngi thit k
chn. im c bit ca hm cfirpm so vi cc hm khc l n cho php ngi thit k nhp
vo p ng tn s bng cch cung cp tn hm biu din p ng tn s, hm ny s tr v
p ng ca b lc ti cc im tn s xc nh. c im ny lm cho qu trnh thit k
mang tnh linh hot v hiu qu rt cao. Hm cfirpm c th dng thit k c cc b lc FIR
c pha phi tuyn, cc b lc FIR bt i xng (vi cc h s phc) v nhiu b lc FIR i
xng khc c p ng tn s tu chn.
Gii thut thit k l ti u ho sai s cc i (Chebychev) bng cch dng thut gii Remez
m rng c lng ban u. Nu qu trnh ti u ho khng hi t th chuyn sang gii
thut tng gim (ascent descent) t c s hi t v gii php ti u.
C php c bn ca hm ny l:
>> b = cfirpm(n,f,{'fresp',p1,p2,...},w,sym)
trong n l bc ca b lc, f l mt vector gm cc tn s chun ho xp theo th t tng
dn t -1 n 1, di tn t f(k) n f(k + 1) vi k l s l cc di thng hoc di chn, di tn
t f(k + 1) n f(k + 2) vi k l l cc vng chuyn tip v sai s trong vng ny khng c
quan tm n khi ti thiu ho. fresp l tn ca hm tnh p ng tn s ca b lc ti
cc tn s cho bi f, p1, p2, ... l danh sch cc thng s cung cp cho hm fresp. w l mt
vector nh gi trng s ca cc di tn trong qu trnh ti thiu ho (mc nh l vector n
v), v sym l mt chui k t cho bit tnh cht i xg ca b lc (bao gm none,
even, odd, real).
Cc tn hm c th c dng khi gi hm cfirpm l:

Thit k cc b lc

140
Bng 10.7. Cc gi tr c th ca fresp khi gi hm cfirpm
Tn hm M t
'lowpass' B lc thng thp
'bandpass' B lc thng di
'multiband' B lc nhiu di tn
'hilbfilt' B bin i Hilbert
'highpass' B lc thng cao
'bandstop' B lc chn di
'differentiator' B vi phn
'invsinc' Hm sinc o
Thit k b lc nhiu di tn
Trong khi gi hm cfirpm ta cung cp tn hm multiband v cc thng s i km.
V d 10-10. Thit k b lc FIR bc 38 vi cc m t nh sau:
Di tn t -1 -0,5: bin gim t 5 xung 1 ([5 1]).
Di tn t -0,40,3: bin bng 2 ([2 2]), trng s bng 10.
Di tn t 0,4 0,8: bin gim t 2 xung 1 ([2 1]), trng s bng 5.
b = cfirpm(38, [-1 -0.5 -0.4 0.3 0.4 0.8], ...
{'multiband', [5 1 2 2 2 1]}, [1 10 5]);
[hh,ff] = freqz(b,1,512,2,whole);
plot(ff,abs(hh),'b-');grid
xlabel('Tan so chuan hoa');
ylabel('Bien do');
Thit k cc b lc

141
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
1
1.5
2
2.5
3
3.5
4
4.5
5
Tan so chuan hoa
B
i
e
n

d
o

Hnh 10.10.
I0.4. Ih00 hIN 80 L00
Sau qu trnh thit k b lc, ta nhn c hai vector a v b cha cc h s ca b lc. Da
trn hai vector ny, ta c th thc hin b lc bng cch dng mt trong hai hm sau:
Hm dfilt cho php nh ngha cu trc ca b lc v khi to mt i tng b lc s
trong MATLAB.
Hm filter vi cc thng s u vo l cc vector a v b s thc hin b lc vi cu trc
chuyn v trc tip dng II v s dng n lc tn hiu vo. Nu thng s u vo l i
tng to bi hm dfilt th hm filter s thc hin cu trc b lc nh ngha bi dfilt v dng
n lc tn hiu vo.
Vic la chn cu trc b lc thc hin n ph thuc vo cc nhim v c th m b lc
phi thc hin. V d nu b lc hot ng tc cao, ta nn dng b lc FIR khng quy
thay v dng b lc IIR quy; cc b lc IIR cu trc trc tip thng c thc hin di
cu trc cc khu bc 2 (SOS) v n rt nhy vi nhiu do lm trn s khi tnh ton.
C php ca hm filter c cp chng 9. Do y ch trnh by c php ca
hm dfilt. Bit trc cc h s ca b lc, hm dfilt s to ra mt i tng b lc s vi cu
trc do ngi s dng xc nh. Vi i tng ny, ta c th thc hin cc tc v khc nhau
nh tnh p ng tn s, tr nhm, ... hoc cng c th dng i tng ny lm nhp liu
cho hm filter thc hin lc cc tn hiu.
khi to i tng b lc s, ta dng c php:
>> Hd = dfilt.STRUCTURE(input1,input2,...)
trong STRUCTURE l tn cu trc b lc m ta mun thc hin. V d, to i tng b
lc c cu trc chuyn v trc tip dng 2:
>> Hd = dfilt.df2t(b,a);
Thit k cc b lc

142
c gi c th tm danh sch cc cu trc c th dng vi hm dfilt bng cch g lnh help
dfilt ca s lnh ca MATLAB. Cng bng cch ny, cc bn c th tm thy danh sch cc
tc v c th thc hin trn i tng b lc s to bi hm dfilt.
# Bi tp 10-1.
Thit k mt b lc thng thp elliptic tng t c cc c tnh sau:
- gn sng di thng ti a 1dB
- tn s ct ca di thng bng 10rad/s
- suy hao di chn ti thiu 40dB tn s ln hn 15rad/s.
V p ng bin , p ng bin theo dB, p ng pha v p ng xung ca b lc.
# # Bi tp 10-2.
Tn hiu x(t) c hai thnh phn tn s: 100Hz v 130Hz. Cn phi nn thnh phn tn s
130Hz ti thiu l 50dB ng thi cho thnh phn tn s 100Hz qua vi suy hao ti a 2dB.
Thit k b lc Chebychev loi I c bc ti thiu thc hin vic ny. V p ng bin
v kim chng li thit k.
# # Bi tp 10-3.
Thit k b lc s thng thp s dng trong s sau:
A/D H(z) D/A
( )
a
x t ( )
a
y t

tho mn cc yu cu:
- tc ly mu: 8000 mu/s
- tn s ngng ca di thng l 1500Hz, gn sng 3dB
- tn s ngng ca di chn l 2000Hz, suy hao 40dB
- gn sng cn bng trng di thng nhng n iu trong di chn
- s dng phng php bt bin xung
Xc nh hm truyn t dng hu t v dng ghp cc khu bc 2. V p ng bin (theo
dB) v p ng xung ca b lc.
# Bi tp 10-4.
Xt b lc thng thp elliptic thit k bi tp 10-1. Dng bin i song tuyn tnh ri
rc ho b lc. V p ng bin v p ng xung.
S dng hm ellip thit k li b lc ny v so snh vi kt qu trn.
# Bi tp 10-5.
Thit k b lc thng di dng hm cheby2 vi cc yu cu nh sau:
- gii hn ca di chn di: 0,3.
- gii hn ca di chn trn: 0,6
- suy hao cc di chn: 50dB
- cc gii hn trn v di ca di thng: 0,4 v 0,5.
- gn sng di thng: 0,5dB
Thit k cc b lc

143
# Bi tp 10-6.
Thit k li b lc thng di trong bi tp 10-5 dng hm yulewalk.
# Bi tp 10-7.
Vi p ng xung ca b lc c thit k bi tp 10-5, hy dng phng php Prony
thit k li b lc ny. So snh kt qu vi bi 10-5.
# Bi tp 10-8.
Thit k b lc thng thp FIR c tn s ct w = 0,3 s dng phng php ca s ch nht.
Ln lt cho bc ca b lc nhn cc gi tr N = 11, 41, 81 v 121. V p ng xung v p
ng bin ca b lc. Nhn xt kt qu.
# Bi tp 10-9.
Lm li bi tp trn dng ca s Hamming. So snh ca s Hamming vi ca s ch nht.
# Bi tp 10-10.
Thit k b lc FIR s, thng thp, pha tuyn tnh s dng phng php ca s Kaiser vi cc
yu cu thit k: tn s ly mu 10kHz, tn s gii hn di thng 1,5kHz, tn s gii hn di
chn 2kHz, suy hao di thng 0,1dB suy hao di chn 80dB. Tnh bc ca b lc (tt c thc
hin trn MATLAB).
# Bi tp 10-11.
Thit k b lc FIR chn di dng ca s Hanning vi cc yu cu nh sau:
- gii hn ca di thng di: 0,3.
- gii hn ca di thng trn: 0,7
- gn sng di thng: 0,5dB
- cc gii hn trn v di ca di thng: 0,4 v 0,6.
- suy hao cc di chn: 40dB
V p ng bin (theo dB), p ng pha v p ng xung ca b lc.
# Bi tp 10-12.
Thit k b lc FIR dng ca s Blackman c p ng tn s tho mn yu cu sau:
Di tn 1: 0 w 0,3, li l tng bng 1, gn sng ti a 0,001
Di tn 2: 0,4 w 0,7, li l tng bng 0,5, gn sng ti a 0,005
Di tn 2: 0,8 w , li l tng bng 0, gn sng ti a 0,001
V p ng bin v p ng pha.
# Bi tp 10-13.
Lm li bi 10-12 dng cc gii thut bnh phng cc tiu (hm firls) v gii thut Parks-
McCllelan (hm firpm). So snh hai gii thut ny.
# Bi tp 10-14.
Thit k li b lc FIR trong bi 10-12 dng gii thut CLS. Nhn xt.
# Bi tp 10-15.
Thit k b lc FIR c p ng tn s c m t nh sau:
Thit k cc b lc

144
- Di tn t -1 -0,8: bin gim t 5 xung 2, trng s bng 1.
- Di tn t -0,70,5: bin bng 2, trng s bng 5.
- Di tn t -0,4 -0,1: bin gim t 2 xung 1, trng s bng 1.
- Di tn t 0,1 0,4: bin tng t 1 ln 2, trng s bng 1.
- Di tn t 0,50,7: bin bng 2, trng s bng 5.
- Di tn t 0,8 1: bin tng t 2 ln 5, trng s bng 1.
V p ng tn s ca b lc ny.
# Bi tp 10-16.
Thit k b vi phn gn ng bng cch dng b lc FIR bc 30. Sau kim chng li thit
k bng cch a tn hiu rng ca vo v v tn hiu ra. Nhn xt.
# Bi tp 10-17.
Dng hm dfilt to mt i tng b lc s vi cc yu cu nh bi tp 10-3. Hy c
gng s dng tt c cc cu trc b lc c th thc hin. Sau thc hin mt s tc v trn
i tng ny: v p ng bin , p ng pha, p ng xung, tr pha, tr nhm,...
Thit k cc b lc

145
Danh sch cc hm c gii thiu trong chng 10
Cc hm thit k b lc IIR
besselap To b lc thng thp analog loi Bessel
besself Thit k b lc Bessel hon chnh
bilinear Thc hin bin i song tuyn tnh
buttap To b lc thng thp analog Butterworth
butter Thit k b lc Butterworth hon chnh
buttord c lng bc ca b lc Butterworth
cheb1ap To b lc thng thp analog Chebychev loi I
cheb2ap To b lc thng thp analog Chebychev loi II
cheb1ord c lng bc ca b lc Chebychev loi I
cheb2ord c lng bc ca b lc Chebychev loi II
cheby1 Thit k b lc Chebychev loi I hon chnh
cheby2 Thit k b lc Chebychev loi II hon chnh
ellip Thit k b lc elliptic hon chnh
ellipap To b lc thng thp analog elliptic
ellipord c lng bc ca b lc elliptic
impinvar Ri rc ho b lc bng phng php bt bin xung
invfreqs Thit k b lc analog trong min tn s da vo p ng tn s cho trc
invfreqz Thit k b lc s trong min tn s da vo p ng tn s cho trc
lp2bp Thc hin bin i tn s: thng thp thng di
lp2bs Thc hin bin i tn s: thng thp chn di
lp2hp Thc hin bin i tn s: thng thp thng cao
lp2lp Thc hin bin i tn s: thng thp thng thp
lpc Thit k b lc s bng phng php m ho d on tuyn tnh
maxflat Thit k b lc thng thp Butterworth tng qut
prony Thit k b lc s bng phng php Prony
stmcb Thit k b lc s bng phng php lp Steiglitz-McBride
yulewalk Thit k b lc s trc tip trong min thi gian
Cc hm thit k b lc FIR
bartlett Hm ca s Bartlett
barthannwin Hm ca s Bartlett - Hanning
blackman Hm ca s Blackman
blackmanharris Hm ca s Blackman - Harris
Thit k cc b lc

146
bohman Hm ca s Bohman
cfirpm Thit k b lc FIR da vo p ng tn s cho trc
chebwin Hm ca s Chebychev
fir1 Thit k b lc FIR bng phng php ca s
fir2 Thit k b lc FIR bng phng php ca s vi p ng tu chn
fircls
Thit k b lc FIR bng phng php gii hn bnh phng cc tiu, p
ng tn s c nhiu di tn
fircls1
Thit k b lc FIR thng thp v thng cao bng phng php gii hn
bnh phng cc tiu
firls
Thit k b lc FIR nhiu di tn theo phng php sai s bnh phng
cc tiu
firpm Thit k b lc FIR nhiu di tn theo phng php Parks - McClellan
firpmord c lng bc ca b lc Parks - McCllelan
firrcos p ng ca b lc thng thp vi vng chuyn tip c dng sine
flattopwin Hm ca s flattop
gausswin Hm ca s Gauss
hamming Hm ca s Hamming
hann Hm ca s Hanning
hilbert Thc hin bin i Hilbert
kaiser Hm ca s Kaiser
kaiserord c lng bc ca b lc FIR theo phng php Kaiser
nuttallwin Hm ca s nutall
parzenwin Hm ca s Parzen
rectwin Hm ca s ch nht
resample Hm ly mu li
triang Hm ca s tam gic
tukeywin Hm ca s Tukey

C bn v x l nh s

147
Chng 11
II. 00 8aN 9 80 L aNN 80

Vn quan trng khi m phng mt h thng thng tin l phn tch cc p ng ca n
trc cc yu t gy nhiu tn ti trong th gii thc, minh ho bng cc cng c ho v
nh gi xem cht lng ca n c p ng cc tiu chun c t ra i vi h thng
hay khng. Vn ny c th gii quyt tt bi cc cng c nh gi cht lng knh truyn
do MATLAB cung cp.
II.I. 8I0 0IN 4Nh 4 I04I Nh4F 4Nh
MATLAB l mt cng c tnh ton c xy dng trn c s cc php x l ma trn. y li
l i tng rt thch hp cho vic biu din cc hnh nh, trong , mi phn t ca ma trn
biu din d liu mu hoc mc xm ca 1 im nh. Trong MATLAB, mi hnh nh thng
c biu din bng mt ma trn hai chiu. Mi mt phn t ca ma trn tng ng vi 1
pixel (mt phn t nh picture element biu din bng 1 im trn mn hnh). im nh
gc trn bn tri l ng vi hng 1, ct 1. Mt s hnh nh c biu din bng mt ma trn
ba chiu, v d nh RGB, trong chiu th ba c kch thc bng 3, ngha l ma trn ny c
th chia thnh 3 ma trn hai chiu, ma trn th nht ng vi sng mu (R Red) ca
im nh, ma trn th hai ng vi sng mu xanh dng (B Blue) v ma trn th ba ng
vi sng mu lc (G Green).
MATLAB lu gi cc hnh nh di mt trong cc kiu d liu sau: logical, uint8,
uint16, double. Ngi s dng c th s dng cc php ton v cc thao tc c bn trn
ma trn, chng hn nh truy xut cc phn t, thay i kch thc, sp xp, ct b mt phn
ma trn ... tc ng ln cc d liu hnh nh vi iu kin cc thao tc ny chp nhn cc
kiu d liu nh ni trn. Ring vi cc kiu d liu uint8 v uint16, ta khng th s
dng cc php ton s hc nh cng, tr, nhn, chia. Trong trng hp ny, MATLAB cung
cp thm cc hm thc hin cc php ton ny m chng ti s cp cui phn ny.
II.I.I. 040 KI0 hNh 4Nh I80N0 M4IL48
Image Processing Toolbox ca MATLAB h tr bn kiu biu din hnh nh c bn, gm:
nh ch s (indexed images), nh sng (intensity images), nh nh phn (binary images),
nh RGB (RGB images).
nh ch s
Vi cch biu din nh ny, mi nh s c biu din bi hai ma trn, mt ma trn d liu
nh X v mt ma trn mu (cn gi l bn mu) map. Ma trn d liu c th thuc kiu
uint8, uint16, hoc double. Ma trn mu l mt ma trn kch thc m x 3 gm cc
phn t kiu double c gi tr trong khong [0,1]. Mi hng ca ma trn xc nh cc thnh
phn red, green, blue ca mt mu trong tng s m mu c s dng trong nh. Gi tr ca
mt phn t trong ma trn d liu cho bit mu ca im nh l mu nm hng no trong
ma trn mu. Nu ma trn d liu thuc kiu double, gi tr 1 s tng ng vi hng th 1
trong bng mu, gi tr th hai tng ng vi mu hng th hai, ... Nu ma trn d liu
thuc kiu uint8 hoc uint16, gi tr 0 ng vi hng 1, gi tr 1 ng vi hng 2, ... Ring
vi kiu uint16, MATLAB khng h tr cc php ton so vi kiu uint8 nn khi cn
x l ta cn chuyn sang kiu d liu uint8 hoc double bng cc hm imapprox hoc
im2double. Hnh 11.1 minh ho cch biu din nh theo ch s.
C bn v x l nh s

148

Hnh 11.1. Biu din nh bng phng php ch s
nh biu din theo sng
Mi nh c biu din bi mt ma trn hai chiu, trong gi tr ca mi phn t cho bit
sng (hay mc xm) ca im nh . Ma trn ny c th thuc mt trong cc kiu
uint8, uint16, hoc double. Trong , gi tr nh nht (0) ng vi mu en cn gi tr
ln nht (255 hoc 65535 hoc 1 tu kiu d liu l uint8, uint16, hay double) ng vi
mu trng. Nh vy, nh biu din theo kiu ny cn gi l nh trng en hoc nh gray
scale (xem hnh 11.2).

Hnh 11.2. Biu din nh theo sng
nh nh phn
nh nh phn cng c biu din bi ma trn hai chiu nhng thuc kiu logical, c ngha l
mi im nh ch c th nhn mt trong hai gi tr 0 (en) hoc 1 (trng) (hnh 11.3).
C bn v x l nh s

149

Hnh 11.3. nh nh phn
nh RGB
nh RGB cn gi l nh truecolor do tnh trung thc ca n. nh ny c biu din bi
mt ma trn ba chiu kch thc m x n x 3, vi m x n l kch thc nh theo pixels. Ma trn
ny nh ngha cc thnh phn mu red, green, blue cho mi im nh, cc phn t ca n c
th thuc kiu uint8, uint16, hoc double. V d, im nh v tr (10,5) s c ba thnh
phn mu c xc nh bi cc gi tr (10,5,1), (10,5,2) v (10,5,3). Cc file nh hin nay
thng s dng 8 bit cho mt thnh phn mu, ngha mt 24 bit cho mi im nh (khong 16
triu mu). Cch biu din nh RGB c minh ha hnh 11.4.

Hnh 11.4. Biu din nh RGB
Dy nh a khung (multiframe)
Trong mt s ng dng, ngi s dng c th c nhu cu lu mt chui cc nh ghi nhn ti
nhng thi im lin tip nhau tin cho vic hin th, v d nh t cc on video hoc ct
lt ct t my chp nh cng hng t, ... phc v cho cc ng dng ny, MATLAB cho
php ta lu nhiu nh thnh mt dy, mi nh gi l mt frame, bng hm cat.
>> muti = cat(4, A1, A2, A3,... ) % A1, A2, A3, ... l cc nh cn lu
Ta cng c th truy xut n mt frame trong dy nh a frame ny theo cch nh sau:
C bn v x l nh s

150
>> frm3 = multi(:,:,:,3) % truy xut frame th 3
Chuyn i gia cc kiu nh
C mt s thao tc x l nh trong MATLAB ch thc hin c trn kiu nh ny m khng
thc hin c trn mt kiu nh khc, v d mun lc nh mu, th nh cn lc phi dng
RGB. V vy, trong MATLAB c mt s hm cho php ngi s dng chuyn i qua li
gia cc kiu nh cho tin x l. Bng 11.1 di y lit k danh sch cc hm nh vy.
Bng 11.1. Cc hm chuyn i gia cc kiu nh
Tn hm C php M t
dither
dither(RGB,map)
dither(I)
To nh nh phn t nh trng en I hoc to
nh indexed t nh RGB v ma trn mu map
bng phng php dithering
gray2ind
[X,MAP] = gray2ind(I,N)
[X,MAP] = gray2ind(BW,N)
Chuyn i nh nh phn BW hoc nh
intensity thnh nh index thng qua ma trn
mu tuyn tnh gray(N)
grayslice
X=grayslice(I,N)
X=grayslice(I,V)
Chuyn i nh trng en thnh nh index
bng cch ly ngng. Cc gi tr ngng c
xc nh bi vector V hoc bi N (khi cc
gi tr ngng l 1/n, 2/n, ... (n-1)/n)
im2bw
bw = im2bw(i,level)
bw = im2bw(x,map,level)
bw = im2bw(rgb,level)
Chuyn i cc loi nh trng en, nh index,
nh RGB thnh nh phn bng cch ly ngng
bi level
ind2gray
i = ind2gray(x,map)
Chuyn i nh index I vi ma trn mu map
thnh nh trng en
ind2rgb
rgb = ind2rgb(x,map)
Chuyn i nh index I vi ma trn mu map
thnh nh RGB
mat2gray
i = mat2gray(a,[amin amax])
To nh trng en t ma trn A, gi tr Amin
tng ng vi mc 0 (en), gi tr Amax ng
vi mc 1 (trng), mc nh: Amin, Amax s l
gi tr ln nht v nh nht ca A
rgb2gray
i = rgb2gray(rgb)
Chuyn i nh RGB thnh nh trng en
rgb2ind
[x,map] = rgb2ind(rgb,n)
x = rgb2ind(rgb,map)
[x,map] = rgb2ind(rgb,tol)
Chuyn nh RGB rgb thnh nh index [x,map]:
TH1: N<=65535, s mu ti a l N
TH2: mi pixel c xp x n mu gn ging
nht trong bn mu map
TH3: tol [0,1], s mu ti a:
(floor(1/tol)+1)^3
II.I.2. 000 4 0hI 040 00 LI0 4Nh
Hm imread c cc file nh vi bt k cc nh dng nh bit hin nay v lu li di
dng mt ma trn biu din nh trong MATLAB. Hu ht cc nh dng nh hin nay dng 8
bit cho mi pixel (ng vi mt thnh phn mu), do sau khi c MATLAB s lu li di
dng ma trn thuc kiu uint8. Vi cc nh dng nh 16 bit nh PNG v TIFF, MATLAB
s dng kiu uint16. Vi nh index, ma trn mu s c lu vi kiu double. C php
ca hm imread:
>> A = imread(filename,fmt)
C bn v x l nh s

151
>> [X,map] = imread(filename,fmt)
Trong : filename l chui xc nh tn file cn c cng vi ng dn (nu file ny
khng nm trong th mc hin hnh.
fmt l chui cho bit nh dng ca nh, th d bmp, gif, jpg, ...
Ngoi ra, hm imread cn c thm mt s thng s khc tu vo tng nh dng nh c th.
G lnh help ca s lnh ca MATLAB bit v cc thng s ny.
MATLAB h tr c mt s nh dng nh c th cha nhiu nh nh HDF, TIFF hay GIF.
Trong trng hp mc nh, hm imread ch c nh u tin trong cc nh ny. Tuy nhin, ta
c th cung cp thm mt thng s l ch s ca nh cn c trong dy nh trong v d sau
y.
V d 11-1. c mt chui 27 nh lin tip trong mt file TIFF v lu vo mt dy 4
chiu:
mri = uint8(zeros(128,128,1,27)); % khi to mt dy 4 chiu
for frame=1:27
[mri(:,:,:,frame),map] = imread('mri.tif',frame);
end
Hm imwrite cho php lu mt nh biu din bng mt ma trn trong MATLAB thnh
mt file nh di mt trong cc nh dng nh bit. C php c bn ca hm ny nh sau:
>> imwrite (A, filename, fmt)
>> imwrite (X, map, filename, fmt)
>> imwrite (..., param1, val1, param2, val2, ...)
C th b qua thng s fmt nu trong chui filename c c phn m rng (sau du chm). Tu
thuc vo nh dng nh cn lu, ta cung cp thm tn cc thng s param1, param2, ... cng
vi gi tr tng ng ca chng. V d, lnh sau y thc hin ghi vo file mypicture.jpg vi
cht lng nn l 100:
>> imwrite(A, mypicture.jpg, Quality, 100)
kim chng xem cc thng s m chng ta xc nh trong hm imwrite c c thc
hin ng hay khng, hoc xem cc thng s ca mt file nh no , ta c th dng hm
imfinfo:
>> info = imfinfo(filename,fmt)
V d:
>> info = imfinfo('test.tif');
>> info.BitDepth
ans =
1
Cc thng tin m hm ny cung cp c lit k trong bng 11.2.
II.I.3. 0h0N 00I 0I04 040 KI0 00 LI0
Chng ta c th chuyn i gia cc kiu d liu uint8, uint16 v double nh s dng cc
hm chuyn kiu ca MATLAB m ta bit nh hm double, uint8, uint16, nhng vic
chuyn kiu nh vy c th khng ph hp vi cch biu din nh trong MATLAB, do sau
khi chuyn kiu phi dch thang hoc offset th mi tr thnh d liu nh hp l. Nhm
C bn v x l nh s

152
mc ch gip ngi s dng trong vic chuyn kiu ni trn, MATLAB cung cp sn cc
hm thc hin chuyn kiu cho cc ma trn biu din nh, bao gm: im2double, im2uint8, v
im2uint16. C php ca cc hm ny rt n gin, ch cn nhp vo ma trn nh cn chuyn
kiu, ring vi nh indexed cn thm vo chui indexed.
Tuy nhin, khi thc hin chuyn i gia cc kiu d liu cn lu mt s vn nh sau:
Khi chuyn t mt kiu d liu dng nhiu bit sang mt kiu d liu dng t bit hn, v d
t uint16 sang uint8, mt s thng tin chi tit v bc nh ban u s b mt i. Ni chung s
mt mt ny vn chp nhn c v 256 vn ln hn s mc xm ti a m mt ngi c th
phn bit c. Tuy nhin nu cn nhng nh c cht lng cao th cng nn lu s mt
mt ny.
Khng phi lc no cng c th chuyn i kiu d liu i vi kiu nh indexed, v cc
gi tr ca ma trn nh xc nh mt a ch trong bn mu ch khng phi l gi tr mu,
do khng th lng t ho c. V d, ta khng th chuyn mt nh indexed kiu
double vi ma trn mu c 300 mu thnh kiu uint8 v kiu d liu ny ch c 256 gi tr.
Mun chuyn c, u tin ta phi dng hm imapprox gim s mu cn biu din
nh xung (bng cch ghp cc mu gn ging nhau li thnh mt mu) ri mi chuyn.
Bng 11.2. Cc thng tin c c khi gi hm imfinfo
Tn thuc tnh M t
Filename Chui cha tn file
FileModDate Chui cho bit ngy hiu chnh file gn y nht
FileSize Mt s nguyn ch kch thc file (n v byte)
Format Chui cho bit nh dng ca nh
FormatVersion Chui hoc s cho bit tn phin bn ca nh dng
Width S nguyn ch chiu rng nh (pixels)
Height S nguyn ch chiu cao nh (pixels)
BitDepth S nguyn cho bit s bits trn mt pixel
ColorType
Chui cho bit kiu nh: truecolor, grayscale hoc indexed
II.I.4. 040 FhF I04N 50 h00 00 84N 00I 0I 00 LI0 4Nh
Cc php ton s hc c bn trn cc d liu nh bao gm cc php cng, tr, nhn v chia.
y l nhng thao tc x l nh c bn trc khi thc hin cc bin i phc tp khc. Ngi
s dng c th dng cc php ton s hc m MATLAB cung cp tc ng ln d liu nh.
Tuy nhin, do MATLAB ch h tr cc php ton ny trn kiu double nn cn thc hin
chuyn i kiu trc khi thc hin. lm gim bt thao tc ny, trong MATLAB Image
Processing Toolbox c cung cp cc hm thc hin cc php ton s hc trn nh m c th
chp nhn bt k kiu d liu nh no v tr v kt qu thuc cng kiu vi cc ton hng.
Cc hm ny cng x l cc d liu trn mt cch t dng. Di y l danh sch cc hm
thc hin cc php ton s hc c bn trn nh cng vi c php tng ng:



C bn v x l nh s

153
Bng 11.3. Cc php ton s hc trn nh
Tn hm C php M t
imabsdiff z = imabsdiff(x,y) Tr mi phn t ca Y t phn t tng ng ca X,
sau tr v tr tuyt i ca hiu
imadd z = imadd(x,y,out_class) Cng hai nh hoc cng mt nh vi mt hng s,
output_class l chui xc nh kiu d liu ca
tng
imcomplement im2 = imcomplement(im)
Ly b ca nh im
imdivide z = imdivide(x,y) Chia cc phn t ca nh x cho phn t tng ng ca
y, cc gi tr phn s c lm trn
imlincomb z = imlincomb(k1,a1,k2,a2,
..., kn,an,k,out_class)
Ly t hp tuyn tnh ca cc nh: z = k1.*a1 +
k2.*a2 + ... + kn.*an + k
immultiply z = immultiply(x,y) Nhn hai nh hoc nhn mt nh vi mt hng s, nu
kt qu b trn th s c gii hn li trong tm cho
php
imsubstract z = imsubtract(x,y) Tr hai nh hoc tr mt nh cho mt hng s, nu
kt qu b trn th s c gii hn li trong tm cho
php
Php cng hai nh thng dng xp chng mt nh ln trn mt nh khc. Php cng mt
nh vi mt hng s lm tng sng ca nh.
V d 11-2. Chng ln hai nh trn mt nn chung:
I = imread('rice.png'); % c nh th nht
J = imread('cameraman.tif'); % c nh th hai
K = imadd(I,J); % Cng hai nh
imshow(I) % Hin th nh th nht
imshow(J) % Hin th nh th hai
imshow(K) % Hin th nh tng
Sau khi thc hin chng trnh ta c nh kt qu nh sau (hnh 11.5):

Hnh 11.5.
V d 11-3. Lm tng sng nh bng php cng vi hng s:
C bn v x l nh s

154
RGB = imread('peppers.png');
RGB2 = imadd(RGB, 50);
subplot(1,2,1); imshow(RGB);
subplot(1,2,2); imshow(RGB2);

Hnh 11.6. Tng sng bng php cng
Php tr hai nh thng dng pht hin nhng s khc nhau gia cc nh trong mt chui
cc nh ca cng mt cnh. Php tr mt nh cho mt hng s lm gim sng ca nh.
Php nhn mt nh vi mt hng s, cn gi l scaling, l mt php ton thng gp trong x
l nh. N lm tng hoc gim sng ca nh tu theo h s nhn l ln hn hay nh hn 1,
nhng khc vi php cng nh vi hng s, php nhn cho php bo ton tng phn ca
nh, do nh c v thc hn.
V d 11-4. Lm tng sng nh bng php nhn vi hng s:
RGB = imread('peppers.png');
RGB2 = immultiply(RGB, 1.5);
subplot(1,2,1); imshow(RGB);
subplot(1,2,2); imshow(RGB2);

Hnh 11.7. Tng sng bng php nhn
Php chia hai nh cng dng pht hin nhng thay i gia cc nh lin tip ca cng mt
i tng nhng di dng nhng thay i t l.
C bn v x l nh s

155
II.I.5. 040 h4M hIN Ihj hNh 4Nh I80N0 M4IL48
phc v chc nng hin th hnh nh, MATLAB cung cp hai hm c bn l image v
imagesc. Ngoi ra, trong Image Processing Toolbox cng c hai hm hin th nh khc, l
imview v imshow.
Hm image(X, Y, C) hin th hnh nh biu din bi ma trn C kch thc MxN ln
trc to hin hnh. X, Y l cc vector xc nh v tr ca cc pixel C(1,1) v C(M,N) trong
h trc hin hnh. To ca pixel C(1,1) l (X(1),Y(1)) cn to ca pixel C(M,N) l
(X(end),Y(end)). Nu khng cung cp X, Y, th MATLAB s mc nh l to ca C(1,1) l
(1,1), ca C(M,N) l (M,N). Nu ma trn C ch c hai chiu th MATLAB hiu rng y l
ma trn nh dng index vi ma trn mu l ma trn mu hin hnh trong h thng. Ngoi ra
c th cung cp thm cc cp thng s (tn thuc tnh/ gi tr thuc tnh) cho hm image. V
d, hm image(...,'parent',ax) xc nh h trc to m nh s hin th trn l h
trc to ax.
Hm imagesc c chc nng tng t nh hm image, ngoi tr vic d liu nh s c co
gin (scale) s dng ton b bn mu hin hnh.
Hm imview cho php hin th hnh nh trn mt ca s ring, nn Java, gi l Image
Viewer. Image Viewer cung cp cc cng c cho php d tm v xc nh gi tr cc pixel mt
cch linh hot. S dng hm ny khi ta cn kho st bc nh v cn cc thng tin v cc pixel.

Hnh 11.8. Hin th nh bng hm imview
Ging nh cc hm image v imagesc, hm imshow cng to mt i tng ho thuc
loi image v hin th nh trn mt figure. Hm imshow s t ng thit lp cc gi tr ca
cc i tng image, axes v figure th hin hnh nh. S dng hm ny trong cc
trng hp ta cn li dng cc cng c ch gii v cc h tr in n c sn trong figure.

Hnh 11.9. Hin th nh bng hm imshow
C bn v x l nh s

156
II.2. 040 FhF 8IN 00I hNh h00
Cc php bin i hnh hc l nhng php ton bin cc im nh t v tr ny thnh cc im
nh v tr khc trong nh mi. l nhng thao tc x l nh c bn nh quay, thay i
kch thc, ct mt phn nh, ...
II.2.I. FhF N0I 50 4Nh
Ni suy l qu trnh c lng gi tr ca nh ti mt im nm gia hai pixel c gi tr
bit. Chng hn, nu ta thay i kch thc nh sao cho n cha nhiu pixel hn nh gc, th
gi tr ca cc pixel thm vo s c xc nh bng php ni suy. Php ni suy cng l c s
thc hin cc bin i hnh hc khc, v d bin i kch thc hoc quay nh, ...
Image Processing Toolbox cung cp ba phng php ni suy nh, bao gm: ni suy theo cc
ln cn gn nht, ni suy song tuyn tnh v ni suy bicubic. C ba phng php u thc
hin theo mt nguyn tc chung: xc nh gi tr ca mt pixel nh ni suy, ta tm mt
im trong nh ban u tng ng vi pixel , sau gi tr ca pixel nh mi s c
tnh bng trung bnh c trng s ca mt tp cc pxel no ln cn ca im va xc
nh, trong trng s ca cc pixel ph thuc vo khong cch ti im ny.
Vi phng php ln cn gn nht, pixel mi s c gn gi tr ca pixel cha im tng
ng ca n (pixel mi) trong nh ban u. Vi phng php song tuyn tnh, pixel mi s
c gn l trung bnh c trng s ca cc pixel trong mt ln cn kch thc 2x2. Vi
phng php bicubic, pixel mi s c gn l trung bnh c trng s ca cc pixel trong mt
ln cn kch thc 4x4.
Phng php u tin l phng php n gin v nhanh nht, nhng cht lng khng tt
bng hai phng php cn li. S pixel c a vo tnh trng s cng nhiu th cht
lng cng tt nhng thi gian cng lu. Ngoi ra, ch c phng php u tin l c th p
dng cho mi kiu nh v kiu d liu v n khng lm thay i tp gi tr ca cc pixel. Cc
phng php cn li khng thch hp cho nh indexed, nhng vi nh RGB th nn dng cc
phng php ny bo m cht lng nh.
Vi nh RGB, php ni suy c thc hin mt cch ring bit trn ba mt phng mu ,
lam v lc.
Vi nh nh phn dng ni suy song tuyn tnh hoc bicubic, cn lu n kiu d liu, v gi
tr ca pixel mi c th nhn gi tr khc 0 v 1. Nu nh gc thuc kiu double th nh mi
s l nh trng en thuc kiu double, nu nh gc thuc kiu uint8 th nh mi s l nh
nh phn kiu uint8, trong cc gi tr khc 0 v 1 s c lm trn v 0 hoc 1.
II.2.2. Ih4 00I K0h Ih000 4Nh
Hm imresize cho php ngi s dng thay i kch thc ca nh. Ngoi kch thc nh
mi, ngi s dng cn c th xc nh phng php ni suy s dng v loi b lc dng
chng aliasing.
>> b = imresize(a,m,Method)
Dng lnh trn to nh mi b c kch thc gp m ln nh gc a. Method l mt chui xc
nh phng php ni suy s dng: nearest (ln cn gn nht), bilinear (song tuyn
tnh) hoc bicubic. Phng php mc nh l nearest. Thay v xc nh t s m, ta c
th xc nh trc tip kch thc nh mi theo n v pixel bng cch dng c php:
>> b = imresize(a,[mrows mcols],method)
C bn v x l nh s

157
Trong mrows v mcols l s ct v s hng ca nh mi. Hoc ta cng c th xc nh c
th bc ca b lc chng aliasing (kch thc mc nh l 11x11) hoc cung cp c th p
ng xung h ca b lc theo cc c php di y:
>> b = imresize(...,method,N) % Dng b lc kch thc NxN
>> b = imresize(...,method,h) % Dng b lc c p ng xung h
V d 11-5. Tng kch thc nh ln 1,25 ln dng phng php bicubic vi b lc chng
aliasing bc 5:
I = imread('circuit.tif');
J = imresize(I,1.25,bicubic,5);imshow(I)
figure, imshow(J)

Hnh 11.10. Tng kch thc nh
II.2.3. FhF q04 4Nh
thc hin cc php quay nh, ta c th s dng hm imrotate. Ngoi hai thng s c bn
l nh gc v gc quay, ngi s dng cng c th xc nh phng php ni suy s dng, v
kch thc ca nh mi ( ln cha nh mi hay ch bng kch thc nh c).Thng s
mc nh l nearest (ln cn gn nht) v loose (tng kch thc nu cn). Trong
trng hp tng kch thc, cc im nh ngoi phn nh gc s c set v 0 (mu en).
Di y l c php ca hm ny, vi Bbox l chui xc nh kch thc nh mi.
>> b = imrotate(a,angle,Method,Bbox)
V d 11-6. Quay nh i mt gc 35, dng phng php ni suy song tuyn tnh:
I = imread('circuit.tif');
J = imrotate(I,35,'bilinear');
K = imrotate(I,35,'bilinear',crop);
imshow(I)
figure, imshow(J)
figure, imshow(K)
C bn v x l nh s

158

a) nh gc b) nh quay c tng kch thc c) Gi nguyn kch thc
Hnh 11.11. Minh ho php quay nh
II.2.4. I80h I04I 4Nh
Khi cn trch xut mt phn ca nh gc, ta dng hm imcrop. Khi s dng hm ny, ngi
s dng c th c hai la chn: xc nh c th v tr ca phn nh cn trch (di dng hnh
ch nht) bng cch cung cp cc thng s v tr khi gi hm hoc s dng mouse chn
phn nh cn trch xut.
Nu chn cch th nht, ta dng c php nh sau:
>> x2 = imcrop(x,map,rect) % nh indexed
>> a2 = imcrop(a,rect) % nh grayscale hoc RGB
trong rect = [Xmin Ymin width height], vi (Xmin,Ymin) l to gc trn bn
tri ca phn nh cn trch, width v height l chiu rng v chiu cao ca phn nh cn
trch.
Nu dng cch th hai, ta khng cn cung cp thng s rect, khi thc hin hm ny, con tr
s chuyn sang dng ch thp, ngi dng s drag chut chn phn nh cn trch sao
th chut. Hm imcrop s tr v phn nh nm trong phm vi xc nh bi mouse.
Nu khng cung cp thng s nh gc, hm imcrop s mc nh chn nh trn h trc ta
hin hnh. Ngoi ra, trong trng hp xc nh bng mouse, ngi s dng c th truy xut
cc thng tin v v tr v kch thc ca phn nh chn bng cch yu cu thm cc output
ca hm ny:
>> [A2,rect] = imcrop(A)
>> [X2,rect] = imcrop(X,map)
II.2.5. Ih00 hIN FhF 8IN 00I hNh h00 I0N0 q04I
Ngoi cc php bin i hnh hc c th trn y, MATLAB cn cho php thc hin cc php
bin i hnh hc khc do ngi s dng tu nh bng cch cung cp mt hm thc hin bin
i hnh hc tng qut, l hm imtransform. thc hin mt php bin i hnh hc no
, ngi s dng cn cung cp nh cn bin i A v cu trc ca php bin i hnh hc,
gi l TFORM.
>> B = imtransform(A,TFORM,interp)
>> [B,XData,YData] = imtransform(...,param1,val1,param2,val2,...)
trong , interp l chui xc nh phng php ni suy s dng. (Xdata,Ydata) xc nh
v tr ca nh B trong h trc X-Y. Ngoi ra c th cung cp thm cc cp thng s (tn thng
C bn v x l nh s

159
s / gi tr thng s) xc nh cc thng s c th ca php bin i. Bn c c th tm
hiu cc thng s ny bng cch g lnh help imtransform t ca s lnh ca MATLAB.
Nh vy, vn quan trng nht khi gi hm ny l phi xc nh cu trc ca php bin i.
Vic ny c thc hin bng cch s dng cc hm xy dng cu trc bin i, trong
thng dng nht l hai hm maketform v cp2tform.
Bng 11.4. Cc dng bin i hnh hc c th dng vi hm maketform
TFORM_type
M t C php
affine Cc php bin i affine, bao gm php
dch, php quay, co gin, v xn. ng
thng bin thnh ng thng, bo ton
tnh song song nhng khng bo ton gc
(hnh ch nht c th tr thnh hnh bnh
hnh)
T=maketform(affine,A)
T=maketform(affine,U,X)
A l ma trn (N+1) x (N+1) hoc (N+1) x N sao cho
vector U1 (1xN) s bin thnh vector X1 = U1 *
A(1:N,1:N) + A(N+1,1:N)
U v X l cc ma trn sao cho mi hng ca U bin
thnh hng tng ng ca X sau php bin i. U v X
u c kch thc 3x2, gm to ca 3 nh ca 1 tam
gic.
projective Cc php bin i trong cc ng
thng vn bin thnh ng thng nhng
cc ng song song tr nn hi t ti 1
im no trong hoc ngoi nh (c th
l v cc)
T=maketform(projective,A)
T=maketform(projective,U,X)
A l ma trn (N+1) x (N+1) sao cho vector U1 (1xN)
s bin thnh vector X1 = W(1:N)/W(N+1) vi W = [U
1] * A.
U v X l cc ma trn sao cho mi hng ca U bin
thnh hng tng ng ca X sau php bin i. U v X
u c kch thc 4x2, gm to ca 4 nh ca 1 t
gic.
box Trng hp c bit ca php bin i
affine, trong mi chiu c dch v
co gin mt cch c lp vi nhau
T=maketform('box',Tsize,low,high)
T=maketform('box',inbounds,outbounds)
Php bin i s nh x vng gii hn bi cc nh c
to xc nh bi inbounds (hoc ones(1,N) v
Tsize) thnh vng gii hn bi cc nh c to xc
nh bi outbounds (hoc low v high)
inbounds v outbounds : 2xN
Tsize, low, high: 1xN
custom Cc php bin i do ngi dng t nh
ngha
T=maketform('custom',Ndims_in,Ndims_o
ut,forward_fcn,inverse_fcn,TData)
Ndims_in,Ndims_out: s chiu ca nh vo v ra.
forward_fcn,inverse_fcn: cc hm thc hin
bin i thun v nghch
TData: cc thng s khc km theo
composite Kt hp hai hay nhiu php bin i
T=maketform('composite',T1,T2,...,TL)
T1,T2,...,TL: cc php bin i nh ngha
trc
C php chung ca hm maketform:
>> T = maketform(TFORM_type,...)
C bn v x l nh s

160
trong TFORM_type l mt chui xc nh dng cu trc bin i hnh hc, v sau l cc
thng s i km tu thuc vo tng dng cu trc c th. Cc dng cu trc ny c trnh
by trong bng 11.4.
Hm cp2tform tr v cu trc ca php bin i bng cch suy t cc cp im iu khin
trong nh gc v sau khi bin i:
>> TFORM = cp2tform(input_points,base_points,TFORM_type,order)
input_points v base_points l cc ma trn M x 2 xc nh to (X,Y) ca M im iu
khin trong nh bin i v trong nh gc. TFORM_type c th l mt trong nhng chui sau:
'linear conformal', 'affine', projective, polynomial, piecewise linear,
lwm. Nu l polynomial th cn cung cp thm thng s order cho bit bc ca a thc
(mc nh bng 3).
V d 11-7. Thc hin php x nh to hiu ng 3D cho nh bn c:
I = checkerboard(20,1,1); % To nh bn c
figure; imshow(I)
T = maketform('projective',[1 1; 41 1; 41 41; 1 41],...
[5 5; 40 5; 35 30; -10 30]); % nh ngha php bin i x nh
R = makeresampler('cubic','circular'); % nh ngha cu trc resampler
K = imtransform(I,T,R,'Size',[100 100],'XYScale',1); % Thc hin php x
nh
figure, imshow(K)

Hnh 11.12.
II.3. 040 FhF 8IN 00I 4Nh
Php bin i nh l mt dng biu din ton hc ca nh ngoi cch biu din bng ma trn
thng thng. Cc php bin i nh c nhiu ng dng nh nng cao cht lng nh, trch
xut cc c tnh, hoc nn nh.
II.3.I. 8IN 00I F008I8
Php bin i Fourier biu din nh di dng tng ca cc lu tha phc ca cc thnh phn,
bin , tn s v pha khc nhau ca nh. Php bin i Fourier c vai tr rt quan trng
trong cc ng dng rng ri ca x l nh s, bao gm nng cao cht lng nh, phn tch,
khi phc v nn nh.
Nu f(m,n) l mt hm ca hai bin khng gian ri rc m v n, th bin i Fourier hai chiu
ca f(m,n) c nh ngha nh sau:
1 2
1 2
( , ) ( , )
jm jn
m n
F f m n e e


+ +

= =
=

(11.1)
1 2
, l cc bin tn s vi n v rad/mu.
1 2
( , ) F gi l biu din trong min tn s ca
f(m,n).
1 2
( , ) F l hm tun hon chu k 2 i vi cc bin
1 2
, , do ch cn xt
C bn v x l nh s

161
1 2
, . F(0,0) chnh l tng cc gi tr ca f(m,n) v c gi l thnh phn hng s
hoc thnh phn DC ca bin i Fourier. Nu f(m,n) biu din sng ca nh X v tr
pixel (m,n) th
1 2
( , ) F chnh l bin i Fourier ca nh X. Cc hnh v di y minh ho
php bin i Fourier cho mt vi dng nh f(m,n), trong logarith ca bin i Fourier,
1 2
log ( , ) F c th hin di dng nh.


Hnh 11.13. Bin i Fourier ca mt s dng nh n gin
Do cc d liu trn my tnh c lu tr di dng ri rc, c th l d liu nh c t
chc theo n v pixel nn php bin i Fourier cng c ri rc ho thnh bin i Fourier
ri rc (DFT Discrete Fourier Transform). Gi s rng hm f(m,n) ch khc 0 trong min (0
m M-1, 0 n N-1). Cc php bin i DFT thun v nghch kch thc MxN c nh
ngha nh sau:
C bn v x l nh s

162
1 1
(2 / ) (2 / )
0 0
( , ) ( , )
M N
j M pm j N qn
m n
F p q f m n e e



= =
=

(0 p M-1, 0 q N-1) (11.2)


1 1
(2 / ) (2 / )
0 0
1
( , ) ( , )
M N
j M pm j N qn
p q
f m n F p q e e
MN


= =
=

(0 m M-1, 0 n N-1) (11.3)
F(p,q) c gi l cc h s ca bin i DFT. Trong MATLAB, cc mng v ma trn c ch
s bt u t 1, do phn t F[1,1] s ng vi h s F(0,0), phn t F[2,2] ng vi F(1,1), ...
Cc hm MATLAB fft, fft2, fftn s thc hin cc php bin i Fourier ri rc 1 chiu, 2
chiu v n chiu. Cc hm ifft, ifft2, ifftn thc hin cc php bin i DFT ngc. Vi cc
ng dng x l nh, ta ch cn quan tm n cc hm fft2 v ifft2.
>> F = fft2(X,Mrows,Ncols)
>> X = ifft2(F,Mrows,Ncols)
trong , Mrows x Ncols l kch thc ca bin i DFT. Nu nh ban u c kch thc
nh hn th MATLAB s t ng thm vo cc zero pixel trc khi bin i.
Sau khi thc hin bin i DFT bng hm fft2, thnh phn DC ca bin i s nm gc trn
bn tri ca nh. C th dch chuyn thnh phn ny v trung tm bng cch dng hm
fftshift.
V d 11-8. Thc hin php bin i Fourier ri rc cho mt nh n gin:
f = zeros(30,30); % To mt nh kch thc 30x30
f(5:24,13:17) = 1;
imshow(f,'notruesize') % Hin th nh ban u
F = fft2(f); % Bin i DFT vi kch thc 30x30
F2 = log(abs(F));
imshow(F2,[-1 5],'notruesize');
colormap(jet); colorbar % Hin th nh bin i
F = fft2(f,256,256); % Bin i DFT vi kch thc 256x256
imshow(log(abs(F)),[-1 5]); colormap(jet); colorbar % Hin th nh
F2 = fftshift(F); % Chuyn thnh phn DC v trung tm
imshow(log(abs(F2)),[-1 5]); colormap(jet); colorbar % Hin th nh

a) nh gc b) Bin i DFT 30x30 c) Bin i DFT 256x256 d) S dng fftshift
Hnh 11.14. Minh ho bin i DFT
Php bin i Fourier c nhiu ng dng, chng hn tm p ng tn s ca cc b lc tuyn
tnh, tnh tch chp, tm nh tng quan, ... Trong cc chng sau, c gi c th tm thy
nhiu v d ng dng bin i ny trong x l nh.
C bn v x l nh s

163
II.3.2. 8IN 00I 005IN 80I 840
Bin i cosine ri rc (DCT Discrete cosine Transform) biu din nh di dng tng ca
cc cosine ca cc thnh phn bin v tn s khc nhau ca nh. c im ni bt ca bin
i ny l: hu ht cc thng tin v nh ch tp trung trong mt vi h s ca bin i DCT,
trong khi cc h s cn li ch cha rt t thng tin. Do , php bin i ny l c s cho cc
k thut nn nh. V d, gii thut nn c tn hao theo chun quc t JPEG l gii thut c
xy dng trn c s bin i DCT.
Theo nh ngha, bin i DCT 2 chiu ca mt ma trn A kch thc MxN l:
1 1
0 0
(2 1) (2 1)
cos cos
2 2
M N
pq p q mn
m n
m p n q
B A
M N



= =
+ +
=

vi
0 1
0 1
p M
q N


(11.4)
trong :
1/ 0
(2/ ) 1 1
p
M p
M p M

v
1/ 0
(2/ ) 1 1
q
N q
N q M


(11.5)
Cc gi tr
pq
B c gi l cc h s ca bin i DCT. Lu rng trong MATLAB, h s
00
B s c biu din l B[1,1],
12
B s c biu din bi B[2,3], ...
Bin i ngc DCT c xc nh bi phng trnh sau:
1 1
0 0
(2 1) (2 1)
cos cos
2 2
M N
mn p q pq
p q
m p n q
A B
M N



= =
+ +
=

vi
0 1
0 1
m M
n N


(11.6)
T (11.6) ta thy rng mi ma trn A kch thc MxN c th biu din di dng tng ca
MN hm s dng
(2 1) (2 1)
cos cos
2 2
p q pq
m p n q
A B
M N


+ +
vi trng s tng ng l
pq
B .
Cc hm ny gi l cc hm c s ca bin i DCT. Hm c bn ng vi p = q = 0 gi l
hm c s DC v
00
B c gi l h s DC ca bin i DCT. Hnh v 11.15 minh ho 64
hm c s ca bin i DCT ca ma trn 8x8, trong hm c s DC nm gc trn bn tri.

Hnh 11.15.
Php bin i DCT thun v nghch c thc hin bng cc hm dct2 v idct2. Cc hm ny
s dng gii thut da theo FFT tng tc tnh ton. Hm ny thch hp vi cc nh c
kch thc ln.
>> B = dct2(A,M,N) % hoc dct2(A,[M N]) hoc dct2(A)
>> A = idct2(A,M,N) % hoc dct2(B,[M N]) hoc dct2(B)
C bn v x l nh s

164
Ngoi ra, cn mt cch khc tnh DCT bng MATLAB, l s dng ma trn bin i T.
Cch ny ch p dng cho cc ma trn vung. Ma trn bin i T c kch thc MxM c
nh ngha nh sau:
1/ 0, 0 1
2 (2 1)
cos
2
pq
M p q M
T
q p
M M

=

+

ni khac
(11.7)
Vi A l ma trn kch thc MxM th T*A s l ma trn kch thc MxM trong mi ct
ca n l bin i DCT 1 chiu ca cc ct tng ng ca A. Bin i DCT 2 chiu ca A s
l B = T*A*T. T l mt ma trn thc, trc chun, ngha l
1
' T T

= , do bin i DCT
ngc ca B chnh l A = T*B*T. Trong MATLAB, ma trn T l kt qu tr v khi ta gi
hm dctmtx.
>> T = dctmtx(M) % MxM l kch thc ca T
Sau y l mt v d minh ho cch thc hin bin i DCT trong MATLAB. Ta thc hin
DCT trn nh autumn.tif. Sau cc h s c bin <10 s c cho bng 0, ri thc hin
bin i DCT ngc. V hu ht cc thng tin ca nh ch tp trung trong mt vi h s DCT
nn nh thu c s khng khc bit nhiu so vi nh gc.

a) nh gc b) nh sau khi nn cc h s DCT <10 v 0

c) Bin i DCT ca nh gc
Hnh 11.16.
V d 11-9. Thc hin bin i DCT v DCT ngc:
RGB = imread('autumn.tif'); % c nh
I = rgb2gray(RGB); % Chuyn sang dng grayscale
J = dct2(I); % Bin i DCT
imshow(log(abs(J)),[]), colormap(jet(64)), colorbar % Hin th bin i DCT
J(abs(J) < 10) = 0; % Nn cc h s <10 v 0
C bn v x l nh s

165
K = idct2(J); % Bin i ngc DCT
imview(I) % Hin th nh gc
imview(K,[0 255]) % Hin th nh sau khi nn
Kt qu c trnh by hnh 11.16.
II.3.3. 8IN 00I 8400N
Php bin i Radon, c thc hin bi hm radon trong MATLAB, biu din nh di
dng cc hnh chiu ca n dc theo cc hng xc nh. Hnh chiu ca mt hm hai bin
f(x,y) l mt tp hp cc tch phn ng. Hm radon tnh cc tch phn ng t nhiu im
ngun dc theo cc ng dn song song, gi l cc tia chiu (beam), theo mt hng xc
nh no . Cc tia chiu ny nm cch nhau 1 pixel. biu din ton b nh, hm radon s
ly nhiu hnh chiu song song ca nh t cc gc quay khc nhau bng cch xoay cc im
ngun quanh tm ca nh. Qu trnh ny c minh ho hnh 11.17a.

(a) (b)
Hnh 11.17.
V d, tch phn ng ca f(x,y) theo hng thng ng chnh l hnh chiu ca f(x,y) trn
trc x, cn tch phn ng ca f(x,y) theo hng nm ngang chnh l hnh chiu ca f(x,y)
trn trc y (hnh 11.17b).
Tng qut, bin i Radon ca f(x,y) ng vi gc quay l tch phn ng ca f dc theo
trc y:
( ') ( ' cos ' sin , ' sin ' cos ) ' R x f x y x y dy

= +

(11.8)
Trong (x,y) l h trc to c c bng cch xoay h trc (x,y) i mt gc bng :
' cos sin
' sin cos
x x
y y



=


(11.9)
Hnh 11.8 m t cch tnh bin i Radon vi gc quay . Trong MATLAB, bin i Radon
c tnh bng hm radon vi c php nh sau:
>> [R,Xp] = radon(I,theta)
Trong :
theta l mt vector gm cc gc quay cn tnh bin i Radon
R l mt ma trn m mi ct ca n l bin i Radon R(x) ng vi mt gc quay theta.
C bn v x l nh s

166
Xp l vector cha cc to x tng ng (Xp l nh nhau i vi mi gc quay theta).

Hnh 11.18.
V d 11-10. Kho st bin i Radon ca nh mt i tng hnh vung:
a. V bin i Radon nh mt hm ca x trong hai trng hp = 0 v = 45
b. Hin th bin i Radon di dng mt nh
I = zeros(100,100); % To nh gc
I(25:75, 25:75) = 1; % nh hnh vung
imshow(I) % Hin th nh gc
[R,xp] = radon(I,[0 45]); % Bin i Radon ng vi cc gc 0 v 45
figure; plot(xp,R(:,1)); title('R_{0^o} (x\prime)') % V bin i Radon ...
figure; plot(xp,R(:,2)); title('R_{45^o} (x\prime)') % ... va tnh c
theta = 0:180; % Cho gc quay thay i t 0 n 180
[R,xp] = radon(I,theta);% Tm bin i Radon
imagesc(theta,xp,R); % Hin th bin i Radon
title('R_{\theta} (X\prime)');
xlabel('\theta (degrees)');
ylabel('X\prime');
set(gca,'XTick',0:20:180);
colormap(hot);
colorbar
Kt qu thc thi on chng trnh trn c th hin trong hnh 11.19.
T cc d liu hnh chiu ca nh ng vi cc gc khc nhau, c th ti to li nh gc bng
php bin i radon ngc. Hm iradon s thc hin cng vic ny:
>> I = iradon(R,theta)
Trong v d 11.10 trn, cc d liu hnh chiu c ly t nh gc qua php bin i Radon
thun. Tuy nhin, trong hu ht cc ng dng thc t, cc d liu ny c c nh cc thit b
chuyn dng, cn nh gc l i tng m ta cha bit. Chng hn, trong k thut X quang,
C bn v x l nh s

167
d liu hnh chiu thu c bng cch o mc suy hao phng x khi chiu tia phng x
qua vt mu di cc gc khc nhau. nh gc y l nh mt ct ngang ca vt mu, trong
cc gi tr sng chnh l mt vt cht ca vt mu ti v tr . T cc d liu hnh
chiu thu thp t thit b X quang, ngi ta s khi phc li nh gc bng bin i Radon
ngc. Nh vy, ta thy rng mt ng dng quan trng ca bin i Radon l khi phc
nh trong k thut chiu x. V d 11-11 di y lm r nhn xt ny.

a) nh gc

b) Bin i Radon ng vi cc gc quay 0 v 45 c) Th hin bin i Radon di dng
nh
Hnh 11.9.
V d 11-11. ng dng php bin i Radon: khi phc nh t cc d liu hnh chiu
Trong v d ny, chng ta to cc d liu hnh chiu gi (thay v thu thp cc d liu ny bng
my) bng cch ly bin i Radon ca mt nh tng t nh cc nh X quang thc. Sau
ti to nh gc bng bin i Radon ngc. Cht lng nh ti to s ph thuc vo s lng
hnh chiu c c.
P = phantom(256); % To nh phantom
imshow(P) % Hin th nh gc
theta1 = 0:10:170; [R1,xp] = radon(P,theta1);% To cc tp d liu hnh
chiu
theta2 = 0:5:175; [R2,xp] = radon(P,theta2); % ... ba mc khc nhau
theta3 = 0:2:178; [R3,xp] = radon(P,theta3);
figure, imagesc(theta3,xp,R3); colormap(hot); colorbar % Hin th tp d
liu
xlabel('\theta'); ylabel('x\prime'); % ... th ba
I1 = iradon(R1,10); % Khi phc nh bng bin i Radon ngc
I2 = iradon(R2,5); % ... s dng ba tp d liu hnh chiu
I3 = iradon(R3,2);
imshow(I1) % Hin th cc nh ti to
figure, imshow(I2)
figure, imshow(I3)
C bn v x l nh s

168

a) nh gc b) Bin i Radon vi 90 gc quay khc nhau

c) d) e) nh ti to t cc tp d liu hnh chiu 18, 36 v 90 gc quay
Hnh 11.20.
II.3.4. FhF 8IN 00I F4N-84M
Php bin i fan-beam cng biu din nh di dng mt tp cc hnh chiu ca nh. Mt
hnh chiu ca mt hm hai bin f(x,y) c nh ngha l tch phn ng ca f(x,y) dc
theo cc ng dn ng quy ti mt im ngun (thay v song song vi nhau nh bin i
Radon). biu din mt nh, ta tnh ton cc hnh chiu ti cc gc quay khc nhau khi
quay im ngun quanh tm ca nh (xem hnh 11.21).

Hnh 11.21.
Cc hm thc hin bin i fan-beam thun v nghch l fanbeam v ifanbeam.
>> F = fanbeam(I,D,param1,val1,param2,val2,...)
>> I = ifanbeam(F,D,param1,val1,param2,val2,...)
vi D l khong cch t im ngun n tm ca nh. Cc gc quay c thay i lin tc t
0 n 360, mi ln tng 1. C th thay i gia s 1 ny bng cch cung cp thm thng s
C bn v x l nh s

169
FanRotationIncrement v gi tr gia s mi. Ngoi ra c th thay i cc thng s
khc bng cch cung cp cc cp (param1/val1) cho hm fanbeam v ifanbeam.
V d 11-12. ng dng php bin i Fan-beam: khi phc nh t cc d liu hnh chiu:
P = phantom(256); % To nh phantom
imshow(P) % Hin th nh gc
D = 250; % Khong cch t ngun n tm ca nh
dsensor1 = 2; % Xy dng tp d liu hnh chiu trong 3 trng hp
F1 = fanbeam(P,D,'FanSensorSpacing',dsensor1); % ... tu khong cch gia
dsensor2 = 1; % ... hai im cui tia lin tip l 2,1 hoc 0.25
F2 = fanbeam(P,D,'FanSensorSpacing',dsensor2);
dsensor3 = 0.25
[F3, sensor_pos3, fan_rot_angles3] = fanbeam(P,D,...
'FanSensorSpacing',dsensor3);
figure, imagesc(fan_rot_angles3, sensor_pos3, F3)% Hin th bin i fan-
beam
colormap(hot); colorbar
xlabel('Fan Rotation Angle (degrees)')
ylabel('Fan Sensor Position (degrees)')
output_size = max(size(P));
Ifan1 = ifanbeam(F1,D, % Khi phc nh t cc tp d liu hnh chiu
'FanSensorSpacing',dsensor1,'OutputSize',output_size);
figure, imshow(Ifan1)
Ifan2 = ifanbeam(F2,D,
'FanSensorSpacing',dsensor2,'OutputSize',output_size);
figure, imshow(Ifan2)
Ifan3 = ifanbeam(F3,D,
'FanSensorSpacing',dsensor3,'OutputSize',output_size);
figure, imshow(Ifan3)
C bn v x l nh s

170


a) nh gc b) Bin i Radon vi khong cch gia 2 im cui l 0.25

c) d) e) nh ti to (cc im cui tia cch nhau 2, 1, 0.25)
Hnh 11.22

# Bi tp 11-1.
Chn mt s file nh c trong my tnh ca bn v thc hin cc thao tc sau:
i. c nh bng hm imread
ii. Dng hm imfinfo xem cc thng tin ca nh
iii. Chuyn i qua li gia cc kiu nh indexed, gray scale, nh phn v RGB
iv. Chuyn i kiu d liu ca nh: logical, double, uint8 hoc uint16.
v. Hin th nh sau khi chuyn
vi. Lu nh mi vo mt file khc cng format vi file nh ban u.
# Bi tp 11-2.
a. Load nh cameraman.tif vo mt ma trn cc mc xm (dng imread) v chuyn ma trn
ny sang kiu double.
b. Tm median ca cc gi tr mc xm (dng hm median) ca nh.
c. To mt bn copy ca ma trn ni trn, sau thay cc gi tr <127 tr thnh 0. Dng lnh
for thc hin vic ny.
d. To mt bn copy ca ma trn ni trn, sau thay cc gi tr >127 tr thnh 255. C gng
khng dng cc vng lp.
e. To nh m bn bng cch thay cc gi tr mc xm v bng 255 v. Khng c dng
vng lp.
C bn v x l nh s

171
f. Chuyn cc ma trn nh cu a, c, d, e v kiu uint8. Hin th 4 nh trn mt figure 2x2.
# Bi tp 11-3.
Chn mt vi nh no trong my tnh v thc hin cc php bin i hnh hc c bn: php
quay, php trch xut mt phn nh.
# Bi tp 11-4.
Thc hin cc php bin i hnh hc t nh ngha to cc hiu ng m thut cho nh
peppers.png.
# Bi tp 11-5.
Vit mt hm MATLAB tr v gi tr mc xm ti mt im c to khng nguyn dng
php ni suy song tuyn tnh: p = getpixel(x,y) (xt nh uint8 hoc uint16).
# Bi tp 11-6.
Vit hm MATLAB thc hin php bin i hnh hc bng ma trn 2x2 nh ngha nh sau:
11 12
21 22
a a u x
a a v y

=


hay u = A.x
Trong [ ]
T
u u v = v
[ ]
T
x x y = l cc to trc v sau khi bin i,
11 12
21 22
a a
A
a a

=


l
mt ma trn kch thc 2x2 cho trc gi l ma trn bin i thun.
nh ngha hm ny di dng ImageOut = map2x2(ImageIn,A), vi A l ma trn bin i
thun. S dng phng php ni suy ln cn gn nht thc hin bin i.
# Bi tp 11-7.
S dng chng trnh ca bi tp 11-6 thc hin bin i hnh hc cho nh checkerboard
vi cc ma trn bin i thun nh sau:
a.
1 1
2 2
1 1
2 2
A


=



b.
1
1
10
0 1
A


=


c.
1 0
1
1
10
A


=


d.
1
1
10
1
1
10
A


=




e.
4 0
0 4
A

=


f.
1
0
4
1
0
4
A


=




g.
0 1
1 0
A

=



# Bi tp 11-8.
Vit hm MATLAB thc hin php dch c nh ngha nh sau:
0
0
1 0
0 1
x u x
v y y

= +


hay u = Ix +
0
x
vi [ ]
T
u u v = , [ ]
T
x x y = l cc to trc v sau khi bin i, [ ]
0 0 0
T
x x y = l vector hng,
I l ma trn n v kch thc 2x2.
C bn v x l nh s

172
nh ngha hm ny di dng ImageOut = translate(ImageIn,x0), vi x0 l vector
hng. S dng phng php ni suy ln cn gn nht thc hin bin i.
# Bi tp 11-9.
Vit hm MATLAB thc hin php bin i c nh ngha nh sau:
0 1 11 12
21 22 0 1
x x x a a u
a a v y y y
+
= +

+

hay u = A(x +
0
x ) +
1
x
vi [ ]
T
u u v = , [ ]
T
x x y = l cc to trc v sau khi bin i, [ ]
0 0 0
T
x x y = , [ ]
1 1 1
T
x x y =
l cc vector hng, A l ma trn bin i kch thc 2x2.
nh ngha hm ny di dng ImageOut = transform(ImageIn,A,x0,x1), vi x0,x1 l
cc vector hng v A l ma trn bin i thun. S dng phng php ni suy ln cn gn
nht thc hin bin i.
# Bi tp 11-10.
S dng hm vit bi tp 11-9 bin i nh cameraman.tif vi cc thng s bin i
nh sau:
a. A =
0 1
1 0



,
0
0 x = v
1
1
0
N
x

=


b. A =
0 1
1 0


,
0
0 x = v
1
0
1
x
N

=



c. A =
0 1
1 0


,
0
0 x = v
1
1
1
N
x
N

=


d. A =
cos sin
sin cos




,
0
1
2
1
2
N
x
N



v
1
1
2
1
2
N
x
N


=





(NxN l kch thc ca nh)
# Bi tp 11-11.
Chn 2 nh trong my tnh v thc hin cc bc sau:
i. Thc hin bin i DCT
ii. Hin th ph DCT ca nh
iii. Di phn ph DCT v trung tm. Hin th ph mi.
iv. Ch gi li 10% s h s DCT, cn li cho bng 0. Thc hin bin i DCT ngc. Hin
th nh thu c.
Sp xp tt c cc kt qu hin th trong mt figure.
# Bi tp 11-12.
nh mri.tif l mt nh gi lp kt qu chp t thit b X quang. Hy thc hin bin i Radon
i vi nh ny to tp d liu hnh chiu, sau khi phc nh t tp d liu ny. Xt cc
trng hp mt ca cc tia chiu nh sau:
C bn v x l nh s

173
a. Cc tia cch nhau 2 pixels
b. Cc tia cch nhau 1 pixels
c. Cc tia cch nhau 0.5 pixels
# Bi tp 11-13.
Lm li bi tp 11-12 i vi nh spine.tif v dng php bin i fan-beam.
C bn v x l nh s

174
Danh sch cc hm c gii thiu trong chng 11
Cc hm chuyn i loi nh v kiu d liu nh
dither To nh nh phn t nh trng en hoc nh RGB
gray2ind Chuyn nh trng en (gray scale) thnh nh indexed
grayslice Chuyn nh trng en (gray scale) thnh nh indexed bng cch ly ngng
im2bw Chuyn cc loi nh thnh nh nh phn
im2double Chuyn kiu d liu nh thnh double
im2uint16 Chuyn kiu d liu nh thnh uint16
im2uint8 Chuyn kiu d liu nh thnh uint8
imapprox Xp x nh indexed bng cch gim s mu
ind2gray Chuyn nh indexed thnh nh gray scale
ind2rgb Chuyn nh indexed thnh nh RGB
mat2gray To nh gray scale t ma trn
rgb2gray Chuyn nh RGB thnh nh gray scale
rgb2ind Chuyn nh RGB thnh nh indexed
Cc hm truy xut d liu nh
imfinfo Truy xut cc thng tin v nh
imread c nh t file v xut ra ma trn nh
imwrite Lu ma trn nh thnh file nh
Cc hm thc hin bin i s hc i vi nh
imabsdiff Ly gi tr tuyt i ca hiu hai nh
imadd Cng hai nh hoc cng nh vi hng s
imcomplement Ly phn b ca nh
imdivide Chia hai nh hoc chia mt nh cho mt hng s
imlincomb Ly t hp tuyn tnh ca cc nh
immultiply Nhn hai nh hoc nhn nh vi mt hng s
imsubstract Tr hai nh hoc tr nh i mt hng s
Cc hm hin th nh
image Hin th nh t mt ma trn
imagesc Ging hm image nhng c th co gin d liu nh
imshow Hin th nh trn mt figure
imview Hin th nh trn mt ca s nn Java
Cc hm bin i hnh hc
cp2tform nh ngha php bin i hnh hc t cc cp im tng ng
C bn v x l nh s

175
imcrop Trch xut mt phn nh
imresize Thay i kch thc nh
imrotate Thc hin php quay nh
imtransform Thc hin php bin i hnh hc tng qut
maketform nh ngha php bin i hnh hc tng qut
Cc hm thc hin cc php bin i nh
dct2 Bin i DCT thun
dctmtx Ma trn bin i DCT
fanbeam Bin i Fan-beam
fft2 Bin i FFT thun
fftshift Bin i FFT vi thnh phn DC dch v trung tm
idct2 Bin i DCT nghch
ifanbeam Bin i Fan-beam nghch
ifft2 Bin i FFT nghch
iradon Bin i Radon nghch

Nng cao cht lng nh

176
Chng 12
I2. NaN0 0a0 0NaT L00N0 aNN

Mt ng dng quan trng v mang tnh thc tin cao ca k thut x l nh s l nng cao
cht lng nh. C th l cc k thut khi phc li nh gc t nh b nhiu khi truyn trong
h thng, lm r nt nhng nh chp trong nhng iu kin kh khn, chng hn nh chp cc
hnh tinh khc hoc cc nh chp t v tinh, hoc phc v cho cng tc iu tra ca cnh st,
... Ni chung, cc k thut nng cao cht lng nh l cc k thut ci tin cht lng nh th
hin thng qua cc thng s nh gi cht lng khch quan (v d t s tn hiu trn nhiu
SNR, sai s bnh phng trung bnh MSE, ...) v i khi l c cc nh gi ch quan (v d
lm r nt mt s c tnh ca nh, ...). Cc phng php chnh c dng ci thin cht
lng nh bao gm: phng php bin i mc xm (hay sng) ca nh, phng php cn
bng histogram v cc phng php lc nhiu nh.
I2.I. Fh00N0 Fh4F 8IN 00I M00 I4M
Phng php bin i mc xm l mt k thut nng cao cht lng nh trong tp cc gi
tr mc xm ca nh c nh x vo mt min gi tr mi. Qu trnh ny c nh ngha
bi biu thc:
g(x,y) = T[f(x,y)] (12.1)
trong f(x,y) l nh ban u, g(x,y) l nh sau khi bin i cn T l mt ton t trn f, c
nh ngha bi mt hm ca cc gi tr sng cc im ln cn ca im (x,y) ang xt.
Cc im ln cn l cc im nm trong 1 hnh vung c tm ti im (x,y). Trong trng
hp n gin nht, hnh vung ny c kch thc 1x1.
Hm imadjust l mt hm c bn trong Image Processing Toolbox ca MATLAB dng
bin i mc xm ca nh vi c php nh sau:
>> J=imadjust(I,[low_in; high_in],[low_out; high_out],gamma)% gray-scale
>> newmap=imadjust(map,[low_in; high_in],[low_out; high_out],gamma) %
indexed
>> RGB2=imadjust(RGB,[low_in; high_in],[low_out; high_out],gamma)% RGB
Hm imadjust bin i cc gi tr mc xm nm trong khong [low_in,high_in] thnh
cc gi tr nm trong khong [low_out, high_out] theo mt quy lut c nh ngha tu
theo gi tr gamma nh minh ho hnh 12.1.

Hnh 12.1. Bin i mc xm bng hm imadjust
Nng cao cht lng nh

177
nh ban u v nh bin i thuc cng kiu d liu (uint8, uint16, hoc double). Cc
thng s gii hn c nhp cho hm ny u nm trong khong [0,1], MATLAB s t
chuyn i thnh gi tr thch hp tu theo kiu d liu ca nh (v d vi kiu uint8, [0 1] s
tr thnh [0 255], vi uint16, [0 1] tr thnh [0 65535]). i vi nh indexed, hm imadjust
thc hin bin i ma trn mu ca nh thay v bin i trc tip trn nh.
V d 12-1. To nh m bn v thay i tng phn bng hm imadjust:
lm r nhng bc nh c nhiu vng ti, ngi ta thng chuyn sang dng m bn.
Ngoi ra, i khi cn phi lm ni bt nhng vng c sng nm trong mt khong xc nh
no . Tt c cc trng hp trn u c th thc hin bng hm imadjust. Trong v d ny,
chng ta s xem xt qu trnh ny i vi nh chp mt mu m ngc.
f = imread('tissue.bmp');
imshow(f)
g = imadjust(f, [0 1] ,[1 0]);
figure, imshow(g)
g1 = imadjust(f, [0.5 0.75], [0 1]);
figure, imshow(g1)


a) nh gc b) nh m bn c) nh sau khi bin i mc
xm
Hnh 12.2.
Thng thng, trc khi thc hin bin i mc xm ta cn thc hin hai bc:
Nng cao cht lng nh

178
Xem biu histogram ca nh bit c cc gii hn mc xm ca nh. Histogram l
mt biu ct biu th tn s xut hin ca cc mc xm khc nhau c trong nh. Trong
MATLAB, hm imhist cho php hin th biu histogram ca cc dng nh gray-scale,
index v RGB.
Xc nh cc gii hn mc xm ca nh v chuyn sang dng phn s trong khong [0 1]
nhp cho hm imadjust.
V d 12-2. S dng hm imhist v hm imadjust thay i tng phn ca nh:
I = imread('pout.tif'); % c nh gc
imshow(I) % Hin th nh gc
figure, imhist(I,64) % Xem biu histogram
J = imadjust(I,[0.3 0.65],[0 1],1); % Bin i mc xm
imshow(J) % Hin th nh sau khi bin i
figure, imhist(J,64) % Xem biu histogram

a) nh gc v biu histogram

b) nh sau bin i v biu histogram
Hnh 12.3.
Tuy nhin, thun tin cho ngi s dng, MATLAB cung cp hm strectchlim. Hm ny
tnh ton histogram ca nh v xc nh cc gi tr gii hn ca mc xm mt cch t ng.
N tr v mt vector m ta c th dng lm cp thng s [low_in;high_in] cung cp cho
hm imadjust (trong trng hp mc nh, hm imadjust s dng hm stretchlim to ra
cp [low_in;high_in] nu ngi s dng khng cung cp). Bnh thng hm stretchlim
Nng cao cht lng nh

179
s ly cc gi tr mc xm nm mc 1% v 99% trong vng bin thin mc xm ca nh.
Tuy nhin, ta cng c th thay i m rng hoc thu hp cc gii hn ny bng cch cung cp
thm thng s tol cho hm stretchlim. l mt vector gm hai phn t thuc [0,1] cho bit
ta s chn cc gii hn mc no trong vng bin thin mc xm (mc nh l [0.01 0.99]).
>> [low,high] = stretchlim(I,tol)
Ngoi phng php s dng hm imadjust nu trn, ngi s dng c th t nh ngha cc
ton t bin i mc xm v p dng vo cc nh c th. Di y chng ti trnh by hai
php bin i mc xm khng dng hm imadjust, l php bin i logarithm v php m
rng tng phn.
Php bin i logarithm c thc hin da trn biu thc sau:
>> g = c*log(1 + double(f))
trong c l mt hng s. Dng bin i ny gn ging vi bin i trong hnh 12.1a vi cc
gi tr gii hn trn c hai trc u l 0 v 1. Tuy nhin, nu hnh 12.1a th thay i tu
theo gamma th y hm log l c nh. Mt ng dng rt quan trng ca bin i logarithm
l nn di ng. V d, trong chng trc ta thy rng cc gi tr ca ph Fourier ca nh
thng thay i rt rng (khong [0
6
10 ]). Bng php bin i log, di ng
6
10 ca ph ny
s gim xung cn khong 14, gip cho vic quan st d dng hn. Sau khi thc hin bin
i, ta chuyn kt qu v kiu d liu tng ng vi nh gc, th d vi nh uint8, ta c th
dng dng lnh sau:
>> gs = im2uint8(mat2gray(g));
Php m rng tng phn c nh ngha bng biu thc sau v c minh ho trn hnh
12.4a:

1
( )
1 ( / )
E
s T r
m r
= =
+
(12.2)
Trong r l gi tr mc xm ban u, s l gi tr mc xm sau khi bin i, m l mc
ngng v E l mt hng s quy nh dc ca hm. Hm ny nn cc gi tr mc xm di
m vo thnh mt di hp trong vng ti v nn cc gi tr trn m thnh mt di hp trong vng
sng, do lm tng tng phn ca nh.

Hnh 12.4.
Bin i ny c thc hin bng dng lnh MATLAB sau:
>> g = 1./(1 + (m./(double(f) + eps)).^E)
Hng s eps c thm vo trnh trng hp f c phn t bng 0.
Nng cao cht lng nh

180
V d 12-3. Lm li v d 12-2 khng s dng hm imadjust:
I = imread('pout.tif'); % c nh gc
imshow(I) % Hin th nh gc
J = 1./(1 + (0.5./(im2double(I) + eps)).^5); % Tng tng phn
figure, imshow(J) % Hin th nh sau bin i

a) nh gc b) nh sau khi bin i
Hnh 12.5.
I2.2. 04N 84N0 hI5I0084M
I2.2.I. I40 4 8I0 00 hI5I0084M
Histogram ca mt nh s nhn L gi tr mc xm khc nhau trong khong [0,G] l mt hm
ri rc c nh ngha bi:
( )
k k
h r n = (12.3)
vi
k
r l gi tr mc xm th k cn
k
n l s pixel ca nh c mc xm bng
k
r . Gi tr ca G
ph thuc vo kiu d liu ca nh: G = 1 i vi kiu double, G = 255 vi kiu uint8, G =
65535 vi kiu uint16. Thng thng, ngi ta cng nh ngha histogram di dng chun
ho, l t s ca
k
n so vi tng s pixel ca nh:
( )
( )
k k
k
h r n
p r
n n
= = (12.4)
vi k = 1, 2, ..., L.
Hm c bn nht dng tnh histogram ca nh trong MATLAB l hm imhist vi c php
nh sau:
>> [h,r] = imhist(I,N)
trong I l nh u vo. Cc gi tr mc xm trong khong [0,G] c chia thnh N khong
(gi l bin), v tr ca cc bin c xc nh bi vector r v h l vector histogram, ngha l s
cc pixel c gi tr mc xm nm trong tng bin. Nu gi hm imhist m khng cn tr v
cc thng s h, r th MATLAB s to mt figure v v biu histogram ca nh.
Ngoi cch v trc tip bng cch dng hm imhist khng cn thng s tr v nh trn, ta c
th tnh vector histogram ca nh theo c php trn, sau dng cc hm bar, stem, hoc
plot v biu histogram.
Nng cao cht lng nh

181
V d 12-4. V biu histogram bng cc hm imhist, bar, stem v plot:
V d ny minh ho cc biu histogram ca nh f thu c khi v bng cc cch khc
nhau. Cc kt qu c trnh by hnh 12.6.
>> [h,r] = imhist(f);
>> h1 = h(1:10:256);
>> imhist(f) % Cch 1: dng imhist
>> horz = 1:10:256;
>> bar(horz, h1) % Cch 2: dng bar
>> stem(r,h) % Cch 3: dng stem
>> plot(r,h) % Cch 4: dng plot
Cc dng lnh sau dng iu chnh cc gii hn ca cc trc to c hin th:
>> axis([0 255 0 15000])
>> set(gca, 'xtick', 0:50:255)
>> set(gca, 'ytick', 0:2000:15000)

Hnh 12.6.
I2.2.2. 04N 84N0 hI5I0084M
Gi s rng cc gi tr mc xm ca nh l i lng lin tc trong khong [0,1], v gi
( )
r
p r l hm mt xc sut ca cc gi tr mc xm ca mt nh cho trc. Gi s ta thc
hin php bin i mc xm sau y c cc gi tr mc xm mi s:
Nng cao cht lng nh

182
0
( ) ( )
r
r
s T r p w dw = =

(12.5)
Khi , c th chng minh rng phn b xc sut ca nh mi s l phn b u trn [0,1]:
1 0 1
( )
0 ni khac
s
s
p s

=

(12.6)
Nh vy, php bin di ny lm cho cc gi tr mc xm ca nh tr nn c xc sut xut hin
phn b u trn ton khong [0,1], ngha l di ng ca nh s ln hn v tng phn
cao hn. Qu trnh bin i ny gi l qu trnh cn bng nh. Khi lm vic vi cc gi tr
mc xm ri rc nh trong cc nh s th hm mt xc sut s tr thnh histogram ca nh
v qu trnh bin i ni trn c gi l qu trnh cn bng histogram. Gi ( )
r j
p r vi j = 1,
2, ..., L l cc gi tr histogram chun ho ca nh th qu trnh cn bng histogram c biu
din bi phng trnh sau:
1 1
( ) ( )
k k
j
k k r j
j j
n
s T r p r
n
= =
= = =

(12.7)
trong k = 1, 2, ..., L v
k
s l cc gi tr mc xm ca nh.
Qu trnh cn bng histogram c thc hin bi hm histeq vi cc c php nh sau:
>> g = histeq(f,nlev)
Trong , nlev xc nh s gi tr mc xm ri rc trong nh mi. Nu nlev = L th hm
histeq thc hin qu trnh cn bng T(
k
r ) mt cch trc tip. Nu nlev < L th hm ny tm
cch phn b cc mc xm to mt histogram phng. Gi tr mc nh ca nlev l 64.
Thng thng ta chn nlev bng s mc xm ti a ca nh.
V d 12-5. Dng hm histeq cn bng histogram cho nh:
V d sau y minh ho cch s dng hm histeq cn bng histogram cho mt nh gray
scale c biu din bi ma trn f. Cc hnh 12.7a v 12.7b l nh gc cng vi istogram ca
n, hnh 12.7c v d l nh v histogram sau khi cn bng. Cht lng nh c ci thin r
rt.
>> imshow(f)
>> figure, imhist(f)
>> ylim('auto')
>> g = histeq(f, 256);
>> figure, imshow(g)
>> figure, imhist(g)
>> ylim('auto')
Hm truyn t ca qu trnh cn bng chnh l hm xc sut tch lu ca cc mc xm ca
nh. Bn c c th v li nh ny bng cch dng cc lnh di y:
>> hnorm = imhist(f)./numel(f); % Histogram chun ho
>> cdf = cumsum(hnorm); % Hm truyn t (tch lu)
>> x = linspace(0, 1, 256);
>> plot(x, cdf) % V cdf theo x.
Nng cao cht lng nh

183
>> axis([0 1 0 1]) % t thng s cho cc trc to
>> set(gca, 'xtick', 0:.2:1)
>> set(gca, 'ytick', 0:.2:1)
>> xlabel('Input intensity values', 'fontsize', 9)
>> ylabel('Output intensity values', 'fontsize', 9)
>> text(0.18, 0.5, 'Transformation function', 'fontsize', 9)

a) b)

c) d)
Hnh 12.7.

Hnh 12.8.
Nng cao cht lng nh

184
Hm truyn t c v hnh 12.8.
Hm truyn t ca qu trnh cn bng histogram l mt hm c to ra tu theo
histogram ca nh. Ni cch khc, y l mt hm c tnh thch nghi i vi nh u vo. Tuy
nhin, vi mt bc nh c th th hm truyn t ny khng th thay i. Mt khc, vic m
rng phm vi bin thin ca cc gi tr mc xm khng phi lc no cng mang li cht lng
cao hn. Trong mt s trng hp, ta cn bin i cc mc xm ca nh sao cho histogram
ca nh mi c mt dng c th nh trc. Qu trnh ny gi l qu trnh phi hp (hay xc
nh) histogram.
Nguyn tc ca qu trnh ny kh n gin. Gi s nh c xm l i lng lin tc trn
[0,1]. Gi r, z ln lt l gi tr xm ca nh gc v nh mi, ( )
r
p r v ( )
z
p z l cc hm
mt xc sut tng ng ca chng. phn trn, ta thy php bin i
0
( ) ( )
r
r
s T r p w dw = =

s tr v mc xm s c mt xc sut phn b u. Ta nh ngha mt


bin z c tnh cht nh sau:
0
( ) ( )
z
z
H z p w dw s = =

(12.8)
z chnh l sng ca nh c hm mt xc sut l ( )
z
p z . T hai phng trnh trn suy ra:
1 1
( ) ( ( )) z H s H T r

= = (12.9)
Vy xc nh hm truyn t ca qa trnh phi hp, cn xc nh
1
H

. Vi cc d liu
nh ri rc, vic ny lun thc hin c nu ( )
z k
p z ng l histogram ca 1 nh no
(ngha l c din tch bng 1 v cc gi tr mc xm u khng m).
Trong MATLAB, qu trnh phi hp histogram cng c thc hin bng hm histeq nhng
vi c php nh sau:
>> g = histeq(f,hgram)
>> newmap = histeq(X,map,hgram)
Di cc gi tr mc xm [0,G] c chia thnh length(hgram) khong u nhau, hgram l
mt vector gm cc s nguyn m s ga tr mc xm trong mi khong chia. Gi tr mc
nh ca hgram l hgram = ones(1,n)*prod(size(A))/n. C php th hai dng cho nh
index, hm histeq thc hin cn bng trn ma trn mu ca nh.
V d 12-6. Dng hm histeq phi hp histogram cho nh:
V d di y cho thy vi cc nh c nhiu phn ti (hnh 12.9a v b), qu trnh cn bng
histogram khng mang li kt qu r rt (hnh 12.9c v d) nhng nu dng qu trnh phi hp
histogram sao cho histogram ca nh mi c dng bimodal Gaussian th hiu qu s tt hn
(hnh 12.9e v f). Dng histogram mong mun c v hnh 12.9g.
imshow(f) % nh gc
figure, imhist(f) % v histogram tng ng
f1 = histeq(f,256)
figure, imshow(f1) % nh sau khi cn bng histogram
figure, imhist(f1) % v histogram tng ng
%% Thit lp dng histogram mong mun (bimodal Gaussian)
Nng cao cht lng nh

185
M1 = 0.15, SIG1 = 0.05, M2 = 0.75, SIG2 = 0.05, A1 = 1, A2 = 0.07, K =
0.002
c1 = A1 * (1 / ((2 * pi) ^ 0.5) * sig1);
k1 = 2 * (sig1 ^ 2);
c2 = A2 * (1 / ((2 * pi) ^ 0.5) * sig2);
k2 = 2 * (sig2 ^ 2);
z = linspace(0, 1, 256);
p = k + c1 * exp(((z m1) .^ 2) ./ k1) + ...
c2 * exp(((z m2) .^ 2) ./ k2);
p = p ./ sum(p(:)); % p: dng histogram mong mun
g = histeq(f, p)
figure, imshow(g) % nh sau khi phi hp histogram
figure, imhist(g) % v histogram tng ng

a) c) e)

b) d) f)

Hnh 12.9.
Nng cao cht lng nh

186
Ngoi hm histeq, ta cng c th thc hin cn bng histogram bng hm adapthisteq. Qu
trnh ny gi l cn bng histogram thch nghi vi tng phn b gii hn (CLAHE
Contrast-Limited Adaptive Histogram Equalization). Hm histeq tc ng ln ton b nh bi
mt hm bin i mc xm, cn hm adapthisteq s phn chia nh thnh cc vng nh (gi
l tile) v tc ng ring trn mi vng, sau s kt hp gia cc tile ln cn theo phng
php ni suy song tuyn tnh loi b cc chi tit l xut hin bin gii cc tile.
>> J = adapthisteq(I,param1,val1,param2,val2...)
Nhp liu cho hm adapthisteq bao gm nh I v gi tr ca cc thng s lin quan (nu cn).
Cc thng s ny bao gm: NumTiles (mc nh 8x8, l s tile trn hng ngang v trn
mt ct dc), ClipLimit (gii hn tng phn, mc nh 0.01), Nbins (s bins, mc
nh 256), Range (chui xc nh cc gii hn mc xm ca nh, mc nh:full),
Distribution (chui xc nh kiu phn b, gm ;uniform, rayleigh,.. mc nh
uniform), Alpha (hng s cho phn b rayleigh hoc phn b hm m, mc nh 0.4).
I2.3. L00 4Nh
Nhiu l mt vn thng gp i vi cc nh s. Nhiu c th hnh thnh do nhiu nguyn
nhn nkac nhau. V d nu nh c scan t mt nh chp s dng film th nhiu c th pht
sinh bi cc ht nh trn film hoc t thit b scan, nu nh c chp t cc my chp nh s
th c ch thu thp d liu (chng hn b pht hin CCD) s to ra nhiu. Ngoi ra khi truyn
nh trong cc h thng vin thng, nh cng c th b nhiu do knh truyn gy ra. khc
phc nh hng ca nhiu, ta phi s dng cc phng php lc nh khc nhau. Mi phng
php thch hp vi mt s loi nhiu nht nh.
m phng nh hng ca nhiu ln nh, MATLAB cung cp hm imnoise cho php to ra
cc loi nhiu khc nhau v cng vo nh gc. Cc c php ca hm imnoise c gii thiu
bng 12-1.
Bng 12-1. Cc c php ca hm imnoise
C php M t
J = imnoise(I,'gaussian',m,v)
To nhiu trng Gauss c trung bnh bng m v variance

J = imnoise(I,'localvar',v) To nhiu trng Gauss c trung bnh bng 0 v cc variance


khc nhau cho tng pixel. v l vector variance c kch thc
bng s pixel ca I
J = imnoise(I,'localvar',level,v)
Nh trn nhng vi vector v c xc nh theo mt hm
ca cc mc xm. level l vector gm cc gi tr mc xm
thuc [0,1] v v l vector variance tng ng .
J = imnoise(I,'poisson') To nhiu Poisson
J = imnoise(I,'salt & pepper',D)
To nhiu salt and pepper vi mt l D (mc nh 0.05)
J = imnoise(I,'speckle',V)
To nhiu nhn: J = I + n*I vi n l nhiu phn b u
vi trung bnh bng 0 v variance bng v (mc nh 0.04)
Phng php lc nh bao gm cc bc nh sau: (1) xc nh mt im trung tm (x,y); (2)
thc hin cc php ton ch lin quan n mt s im ln cn vi (x,y); (3) kt qu tr v
chnh l p ng ca qu trnh lc ti im (x,y); (4) lp li qu trnh lc vi cc im (x,y)
khc.
Nu php ton thc hin trn cc im ln cn l tuyn tnh th ta c qu trnh lc tuyn tnh
(cn gi l php chp khng gian), ngc li, ta c qu trnh lc phi tuyn.
Nng cao cht lng nh

187
I2.3.I. L00 I0N INh
Lc tuyn tnh l phng php lc trong mi pixel ca nh mi l t hp tuyn tnh ca
cc mc xm ca cc pixel ln cn vi pixel (x,y) ca nh gc, ngha l mi pixel ln cn s
c nhn vi mt h s tng ng no ri cng tt c li. Nu vng ln cn ca (x,y) c
kch thc mxn, th s c mn h s lc v chng cng c sp thnh mt ma trn kch thc
mxn. Ma trn ny c nhiu tn gi khc nhau: ma trn lc, mt n, nhn lc, khun lc hoc
ca s lc. C ch ca qu trnh lc tuyn tnh c m t hnh 12.10. Ln lt di chuyn
tm ca mt n w qua cc im khc nhau ca nh f. Ti mi im (x,y), p ng ca b lc
l tng cc tch ca cc h s lc vi mc xm ca im tng ng ca nh. Kch thc mt
n l cc s l.

Hnh 12.10.
Lu rng c th c hai loi php ton lin quan n lc tuyn tnh: php tnh tng quan v
php chp. Vi php tnh tng quan, ta ch cn di chuyn trc tip mt n qua cc im nh
nh hnh 12.10, cn vi php chp, trc khi di chuyn qua cc im nh, ta phi xoay mt n
i 180.
Trong Image Processing Toolbox, php lc tuyn tnh c thc hin bng hm imfilter vi
c php tng qut nh sau:
>> g = imfilter(f, w, filtering_mode, boundary_options, size_options)
Nng cao cht lng nh

188
vi f l nh ban u, w l mt n lc v g l nh sau khi lc. Cc thng s cn li l cc thng
s tu chn:
filtering_mode c th l corr (thc hin php tnh tng quan) hoc conv (php
chp), gi tr mc nh l corr.
Khi tnh ton p ng lc ti cc pixel bin ca nh, mt phn mt n s nm ngoi bin
gii ca nh, do khi tnh p ng lc, ta khng bit phi gn gi tr mc xm ti nhng
im ny bng bao nhiu (xem hnh 12.11). boundary_options xc nh quy tc chn
thm cc mc xm ngoi bin ca nh trc khi lc.

Hnh 12.11.
C bn quy tc chn thm mc xm ngoi bin, c xc nh bi 4 cch chn gi tr ca
boundary_options:
X : X l gi tr mc xm c th c gn cho cc im ngoi, mc nh l 0.
symmetric: cc mc xm bn ngoi l nh i xng gng ca cc im nh bn trong
qua bin ca nh.
replicate: cc mc xm bn ngoi lp li cc gi tr mc xm trn bin ca nh
circular : cc mc xm c tnh ton trn c s gi thit nh vo c tnh tun hon
Hnh v di y (12.12) minh ho cc cch chn thm bin nh:

Hnh 12.12.
size_options l mt chui xc nh kch thc nh sau khi lc: gi tr full c ngha
l ton b kt qu tnh ton (k c cc v tr c chn thm) c a vo nh mi, nh vy
Nng cao cht lng nh

189
kch thc s ln hn nh ban u; same c ngha l MATLAB ch gi li phn nh c
kch thc bng nh ban u.
Hm imfilter x l cc kiu d liu khc nhau theo cch tng t vi cc hm thc hin cc
php ton s hc. nh sau khi lc c cng kiu vi nh gc, tuy nhin khi tnh ton hm
imfilter t chuyn sang kiu s thc du chm ng vi chnh xc kp. Nu kt qu vt
ra ngoi tm gi tr ca kiu d liu, hm ny s t ng iu chnh gi tr cho ph hp.
V d 12-7.
>> A=magic(5)
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> h=[-1 0 1]
h =
-1 0 1
>> imfilter(A,h)
ans =
24 -16 -16 14 -8
5 -16 9 9 -14
6 9 14 9 -20
12 9 9 -16 -21
18 14 -16 -16 -2
Nu trc khi lc, ta chuyn nh sang kiu uint8 th sau khi lc, cc gi tr m s t ng
chuyn v 0.
>> A = uint8(magic(5));
imfilter(A,h)
ans =
24 0 0 14 0
5 0 9 9 0
6 9 14 9 0
12 9 9 0 0
18 14 0 0 0
V d 12-8. S dng hm imfilter vi cc cch chn cc im ngoi bin khc nhau
Hnh 12.13a l mt nh gc kch thc 242x308. Ta cng nhiu cho nh v kho st ca s
lc kch thc 9x9.
I = imread('eight.tif'); % c nh gc
imshow(I)
J = imnoise(I,'salt & pepper',0.02); % Cng nhiu salt&pepper vi mt
0.02
Nng cao cht lng nh

190
figure, imshow(J)
w = ones(9)/81; % Ca s lc 9x9
gd = imfilter(f, w); % Lc vi thng s mc nh
figure,imshow(gd, [ ])
gr = imfilter(f, w, 'replicate'); % Gn cc tr lp li bin nh
figure, imshow(gr, [ ])
gs = imfilter(f, w, 'symmetric'); % Gn tr i xng gng
figure, imshow(gs, [ ])
gc = imfilter(f, w, 'circular'); % Gn theo kiu circular
figure, imshow(gc, [ ])


a) b) c)

d) e) f)
Hnh 12.13.
a) nh gc b) nh nhiu c) zero padding d) replicate e) symmetric f) circular
MATLAB nh ngha trc mt s b lc tuyn tnh ngi s dng chn la. Bng
cch gi hm fspecial, ta nhn c mt mt n lc c th dng cung cp cho hm
imfilter.
Bng 12-2. Cc c php ca hm fspecial
C php M t
H = fspecial('average',N)
B lc trung bnh vi kch thc N x N (mc nh l 3x3)
H = fspecial('disk',r)
B lc trung bnh dng trn (pill box) vi bn knh r (nm
trong ma trn vung kch thc 2*r-1). Mc nh r = 5
H = fspecial('gaussian',N,sigma) B lc Gaussian vi kch thc NxN, lch chun sigma.
Gi tr mc nh l N = 3, sigma = 0.5
Nng cao cht lng nh

191
H = fspecial('laplacian',alpha) B lc Laplacian kch thc 3x3. alpha l thng s
dngnm trong khong [0 1], mc nh l 0.2
H = fspecial('log',N,sigma)
i xng quay ca b lc Gaussian. Gi tr mc nh: N =
5, sigma = 0.5
H = fspecial('motion',len,theta) B lc xp x chuyn ng tuyn tnh ca camera khi di
chuyn len pixels theo mt gc theta. Gi tr mc nh l
len = 9 v theta = 0
H = fspecial('prewitt')
B lc Prewitt: H = [1 1 1;0 0 0;-1 -1 -1]
H = fspecial('sobel')
B lc Sobel: H = [1 2 1;0 0 0;-1 -2 -1]
H = fspecial('unsharp',alpha)
B lc tng tng phn. alpha l thng s tng t nh
b lc Laplacian
V d 12-9. S dng hm imfilter vi ca s lc nh ngha trc bi hm fspecial:
originalRGB = imread('peppers.png');
h = fspecial('motion',30,45);
filteredRGB = imfilter(originalRGB,h);
imshow(originalRGB)
figure,imshow(filteredRGB)

a) nh gc b) nh lc xp x chuyn ng ca camera
Hnh 12.14.
Lu : Hm imfilter c th s dng vi cc nh nhiu chiu, chng hn nh RGB.
I2.3.2. L00 FhI I0N
Phng php lc phi tuyn cng da trn nguyn tc ca s lc ging nh phng php lc
tuyn tnh, tuy nhin, thay v ly tng c trng s ca cc pixel ln cn th phng php lc
phi tuyn s thc hin mt php ton phi tuyn trn cc im ln cn ny, v d php ly cc
i ca cc mc xm ln cn l mt php ton phi tuyn.
Qu trnh lc phi tuyn tng qut c thc hin bi hm nlfilter v colfilt. Hm nlfilter thc
hin mt cch trc tip trn c hai chiu, trong khi hm colfilt thc hin lc theo tng ct.
Hm colfilt i hi nhiu b nh hn nhng tc thc thi nhanh hn hm nlfilt.
>> g = nlfilter(f,[m n],@fun,parameters)
>> g = colfilt(f,[m n],'sliding',@fun,parameters)
Nng cao cht lng nh

192
Trong , f l nh gc, ca s lc c kch thc m x n, fun l mt hm phi tuyn c
nh ngha trc v parameters l cc thng s tu chn khc (dng lnh help colfilt
hoc help nlfilter bit thm v cc thng s ny).
Cng nh phng php lc tuyn tnh, trc khi lc phi tuyn, ta cn chn thm cc im ph
ngoi bin ca nh bng cch s dng hm padarray:
>> fp = padarray(f, [r c], method, direction)
Trong [r c] l s ct v s hng thm vo, method c th l replicate,
symmetric hoc circular vi ngha tng t nh hm imfilter, direction c th
l pre,post hoc both cho php la chn gia cc phng n thm vo trc phn
t u tin ca mi chiu, hoc sau phn t cui ca mi chiu hoc c hai (mc nh).
V d, nu f = [1 2;3 4] th lnh di y:
>> fp = padarray(f, [3 2], 'replicate', 'post')
s to ra ma trn fp nh sau:
fp =
1 2 2 2
3 4 4 4
3 4 4 4
3 4 4 4
3 4 4 4
V d 12-10. S dng hm colfilt:
Sau y l mt v d minh ho cch s dng hm colfilt. u tin ta nh ngha hm phi tuyn
gmean, sau thm cc im ph bng cch dng hm padarray. Cui cng gi hm colfilt
vi cc thng s cn thit.
%% nh ngha hm phi tuyn
function v = gmean(A)
mn = size(A, 1);
v = prod(A, 1).^(1/mn);
%% Kt thc nh ngha
>> f = padarray(f, [m n], 'replicate'); % Chn thm cc pixel
>> g = colfilt(f, [m n], 'sliding', @gmean); % Lc phi tuyn
Ngoi cc hm thc hin b lc phi tuyn tng qut ni trn, trong MATLAB c sn mt hm
lc phi tuyn c th, l b lc hng (rank filter hoc order-statistic filter), thc hin bi
hm ordfilt2. ng thi, mt trng hp c bit ca b lc ny, l b lc trung v
(median filter), cng c th thc hin bng hm medfilt2.
>> g = ordfilt2(f,order,domain,padopt)
>> g = medfilt2(f,[m n],padopt)
Hm ordfilt s sp th t t nh n ln cc im nm trong mt min xc nh bi domain
(domain l mt ma trn kch thc m x n (kch thc ca s lc) gm cc gi tr 0 hoc 1,
trong cc im c gi tr 0 s khng thuc min kho st), sau thay th pixel ca nh
gc bng gi tr mc xm sp hng th order. V d, mun ly phn t nh nht trong ln
cn mxn ca mt pixel, ta dng lnh:
Nng cao cht lng nh

193
>> g = ordfilt2(f, 1, ones(m, n))
Padopt cho bit phng php chn cc im ph l zero hay symmetric.
Hm medfilt2 l trng hp c bit ca hm ordfilt2, trong phn t c chn l phn t
xp hng chnh gia v domain l mt ca s kch thc m x n. Vi hm ny, padopt cng
c th l indexed, khi cc pixel thm vo s l 1 nu nh thuc kiu double v l 0
trong cc trng hp khc.
Hm medfilt2 thng c s dng trong nhng trng hp c nhng gi tr pixel ln hn
hoc nh hn hn cc pixel khc (chng hn trong trng hp c nhiu salt and peper). Khi
nu dng b lc trung bnh th p ng ca b lc c th b ko ln (hoc gim xung)
theo gi tr nhiu ni trn.
V d 12-11. S dng b lc median loi nhiu salt and peper:
f=imread(circuit1.tif); % nh gc
imshow(f)
fn = imnoise(f, 'salt & pepper', 0.2); % nh nhiu salt and peper
figure,imshow(g)
gm = medfilt2(fn); % Lc median vi zero padding
figure,imshow(gm)
gms = medfilt2(fn, 'symmetric');
figure,imshow(gms) % Lc median vi symmetric padding

a) nh gc b) nh nhiu

c) Lc median vi zero padding d) Lc median vi symmetric padding
Hnh 12.15.
Nng cao cht lng nh

194
Ta thy cht lng nh lc rt tt so vi nh nhiu. Kt qu hnh c (chn thm cc gi tr 0)
vi hnh d (chn bng phng php symmetric) l gn ging nhau, ch khc ch hnh d
khng b xut hin cc chm en bin nh.
I2.3.3. L00 Ih0h N0hI
Hm wiener2 cho php thc hin b lc Wiener i vi cc nh s. y l mt loi b lc
tuyn tnh nhng c tnh thch nghi tu theo cc gi tr variance ca tng pixel nh. i vi
cc pixel c variance ln, hm ny ch lm phng nh mc thp nhng vi cc pixel c
variance nh, n s c xu hng tri rng cc gi tr mc xm hn. Cht lng ca b lc ny
tt hn cc b lc tuyn tnh thng thng, v n vn bo tn c nhng chi tit tn s cao
ca nh, vn gi c nhng ng nt bin ca nh. Tuy nhin khi lng tnh ton i hi
cao hn d0 thi gian thc thi hm ny s di hn. B lc Wiener thch hp vi cc loi
nhiu c cng sut bng phng, chng hn nhiu Gauss.
V d 12-12. S dng b lc Wiener loi nhiu Gauss:
RGB = imread('saturn.png');
I = rgb2gray(RGB);
J = imnoise(I,'gaussian',0,0.05);
K = wiener2(J,[5 5]);
imshow(J)
figure, imshow(K)

a) nh nhiu Gauss b) nh sau khi lc Wiener
Hnh 12.16.
# Bi tp 12-1.
Dng hm imadjust iu chnh tng phn cho cc nh c trong my tnh ca bn. C
th s dng hm imhist xem histogram ca nh.
# Bi tp 12-2.
Vit hm MATLAB thc hin cc php bin i mc xm sau y:
a.
1/ 2
( ) . s T r Ar = = . Chn A v [0, L-1].
Nng cao cht lng nh

195
b.
1 / 2
( )
0 / 2
L r L
s T r
r L

= =

<


# Bi tp 12-3.
nh ngha php bin i s = T(r) nh x tuyn tnh t
[ ]
min max
, L L vo [0, L-1]. Gi s
min
0 L v
max
1 L L .
Vit chng trnh MATLAB s dng php bin i ni trn cn bng nh pout.tif.
# Bi tp 12-4.
Load 6 nh tu chn trong my, sau thay i tng phn bng cch m rng histogram
(dng imadjust) v bng cch cn bng histogram (dng histeq). Hin thi tt c 18 nh cng
vi histogram tng ng ca chng. Sp xp cc nh ny trong 6 figure, mi figure gm nh
gc, hai nh sau khi bin i cng vi cc histogram ca chng.
# Bi tp 12-5.
Lm li bi tp 12-4 nhng s dng hai phng php: cn bng histogram v phi hp
histogram theo dng bimodal Gaussian.
# Bi tp 12-6.
Cn bng histogram cho nh pout.tif s dng phng php cn bng thch nghi (t chn cc
thng s thch hp t kt qu ti u).
# Bi tp 12-7.
Xt nh pic1_degraded.bmp l nh km cht lng do b nhiu so vi nh gc l
pic1_original.bmp. Nhiu c hnh thnh theo cch sau: mu mi pixel s b thay i
thnh 0 hoc 255 vi xc sut bng p, v gi nguyn vi xc sut bng 1 p (nhiu salt and
pepper). Nhiu mi pixel u c lp vi nhau.
a. Hy c lng gi tr ca p.
b. Lc nh bng b lc median kch thc 3 x 3. Cc im bin c x l theo cch mc
nh ca MATLAB. Tnh MSE ca nh nhiu so vi nh gc v nh sau khi lc so vi nh
gc:
[ ]
1 2
, , 1 1
1
Im ( , , ) Im ( , , )
3
M N
c R G B x y
MSE age x y c age x y c
MN
= = =
=


c.* Phng php ny cha ti u v qu trnh lc c p dng trn tt c cc im nh trong
khi nhiu ch xy ra mt vi pixel. Hy tm mt phng php tt hn lc nh. Vit hm
MATLAB thc hin tng .

Nng cao cht lng nh

196

pic1_degraded.bmp

pic1_original.bmp
# Bi tp 12-8.
S dng cc b lc tuyn tnh lc nhiu cho nh trong bi 12-7:
a.
1 1 1
1
1 1 1
9
1 1 1
W


=



b.
1 3 1
1
3 1 3
9
1 3 1
W


=




# Bi tp 12-9.
Ln lt cng cc loi nhiu khc nhau vo nh autumn.tif, sau dng hm colfilt lc
nh nhiu, hm lc phi tuyn c s dng l s =
k
r

vi
k
r l xm ca cc pixel nm
trong ln cn kch thc 3x3 ca pixel ang xt.
a. Nhiu Gaussian vi trung bnh bng 0 v variance bng 0.05
b. Nhiu salt and pepper vi mt 0.05
c. Nhiu Poisson
d. Nhiu Speckle vi mt 0.05
# Bi tp 12-10.
Nng cao cht lng nh

197
Lm li bi tp trn s dng hm nlfilter.
# Bi tp 12-11.
Dng b lc Wienner lc cc nh nhiu trong bi 12-9. T nhn xt trong trng hp
no b lc Wiener t hiu qu cao nht.
Nng cao cht lng nh

198
Danh sch cc hm c gii thiu trong chng 12
Phng php bin i mc xm
imadjust Bin i mc xm ca nh
stretchlim Xc nh cc gii hn bin i cho hm imadjust
Phng php cn bng histogram
adapthisteq Cn bng histogram theo phng php thch nghi
bar V biu thanh
histeq Cn bng histogram
imhist Xc nh v v biu histogram ca nh
plot V th ca mt hm cho trc
stem V biu xung
Cc hm thc hin lc nh
colfilt Hm thc hin lc phi tuyn, x l theo ct
fspecial To cc b lc tuyn tnh theo cc dng c sn
imfilter Thc hin lc tuyn tnh
imnoise To nhiu v cng vo nh
medfilt2 Thc hin b lc trung v (median)
nlfilt Thc hin lc phi tuyn, x l trc tip trn c hai chiu
padarray Chn cc pixel bin trc khi thc hin lc
ordfilt2 Thc hin b lc th t tng qut
wiener2 Thc hin b loc thch nghi Wiener



Nn nh s

199
Chng 13
I3. NN aNN 80

Mc ch ca vic nn nh s l m ho cc d liu nh v mt dng thu gn, ti thiu ho c
s bits dng biu din nh ln cc sai khc do qu trnh nn gy ra. Tm quan trng ca
vn nn nh c th thy r qua cc s liu c th: vi mt bc nh trng en kch thc
512x512 pixels, mi pixel c biu din bi 8 bits (biu din mt trong 256 gi tr mc
xm), cn khong 256 Kbytes d liu. Vi nh mu cn gp ba ln con s ny. Vi cc d
liu video, cn 25 frames trn mt giy, nh vy 1 on video ch 30s phi cn n 540MB
d liu, mt con s qu ln. Do vn nn nh l ht sc cn thit.
Ni chung, cc phng php nn nh ch yu c phn thnh 2 nhm: nhm khng tn hao
v nhm c tn hao. Cc phng php nn nh khng tn hao cho php biu din nh vi
cht lng hon ton ngang bng vi nh gc. Cc phng php ny da trn cc gii thut
nn c p dng cho tt c cc i tng d liu ni chung ch khng ch ring d liu nh,
v d m Huffman, m s hc, m Golomb, ... Tuy nhin, cc phng php ny khng li
dng c nhng c tnh ring ca d liu nh v t l nn rt thp. Do , trong thc t, cc
phng php nn c tn hao l cc phng php c s dng ch yu. Vi cc phng php
ny, lun c s nh i gia dung lng nh vi cht lng nh.
I3.I. Fh00N0 Fh4F M4 h04 I0 L Kh0I 8I0 {8L00K I80N04IIN0 000IN0)
tng c bn ca phng php ny l chia nh ra thnh nhiu khi 4x4 v lng t ho cc
pixel trong khi v hai gi tr a v b. Trong mi khi, cn tnh gi tr trung bnh x v lch
chun thc hin m ho. Qu trnh lng t hai mc c thc hin i vi cc pixel
trong mi khi sao cho bit 0 c dng biu din cho cc gi tr nh hn gi tr trung bnh, v
bit 1 biu din cc mc xm ca cc pixel cn li. nh s c ti to t cc gi tr x v v
t ma trn cc bit d liu m ho (cn gi l mt phng bit) bng cch gn cc gi tr mc
xm a v b cho cc bit 0 v 1 tng ng:
q
a x
m q
=

(13.1)
m q
b x
q


= + (13.2)
trong m (=16) l tng s pixel trong mi khi, q l s bit 1 trong mt phng bit. Cc gi tr
lng t c chn nh trn gi tr trung bnh v variance ca nh vn c bo ton sau
khi gii nn, do phng php ny cn gi l phng php m ho x l khi bo ton
moment (MPBTC - moment preserving BTC). Mt dng khc ca phng php BTC l
phng php BTC moment tuyt i (AMBTC absolute moment BTC) chn cc gi tr
lng t a v b l cc gi tr trung bnh ca cc pixels trong hai nhm (nhm bit 1 v nhm bit
0):
1
.
i
i
x x
a x
m q
<
=


(13.3)
1
.
i
i
x x
b x
q
>
=

(13.4)
Nn nh s

200
Cch chn cc gi tr a v b nh trn khng bo m bo ton moment bc hai (tc l
variance) ca nh. Tuy nhin, cc kt qu phn tch cho thy gi tr biu din cho cc pixel
t MSE ti u chnh l gi tr trung bnh ca cc pixel ch khng phi variance. Hnh 13.1 l
mt th d v phng php BTC bo ton moment.

Hnh 13.1
i vi phng php BTC bo ton moment, d liu lng t c biu din bi cp ( x , ).
Mt nhc im ca phng php ny l cc mc lng t khi gii m li c tnh t cc
gi tr ( x , ) c lng t ho, ngha l cc gi tr ( x , ) c sai s do qu trnh lm trn.
Nh vy, cht lng nh s b gim do nguyn nhn pht sinh ngay t giai on m ho. Mt
cch gii quyt khc l tnh cc gi tr lng t a v b ngay giai on m ho v truyn cp
(a,b) thay v cp ( x , ). Vi cch ny, ta va c th gim c sai s lng t va gim c
qu trnh tnh ton khi gii m.
Tuy nhin, nhc im chnh ca phng php BTC l cht lng ca n rt km i vi cc
khi c tng phn cao bi v trong trng hp ny ch hai gi tr lng t khng th m
t ton b khi. gii quyt kh khn ny ngi ta s dng phng php thay i cc
kch thc ca cc khi. Vi cc khi kch thc ln, tng phn thp, ta gim c tc
bit yu cu, ngc li cc khi kch thc nh thch hp vi nhng vng c tng phn
cao bo m cht lng nh. Mt gii php khc cho vn trn l phn cp theo cu trc
cy 4 nhnh: nh c chia thnh cc khi kch thc
1 1
m m , nu nh hn mt gi tr
ngng nh trc
th
(ngha l tng phn thp) th vn p dng gii thut BTC, nu
ngc li, chia khi ny thnh 4 khi con v qu trnh trn lp li cho n khi t ti mc
ngng hoc khi ti gii hn nh nht ca kch thc khi
2 2
m m .
BTC AMBTC HBTC-VQ

mse = 43.76 mse = 40.51 mse = 15.62
Hnh 13.2. Cc nh nn bng cc gii thut BTC khc nhau.
Nn nh s

201
Hnh v 13.2 minh ho kt qu nn nh bng cc bin th khc nhau ca gii thut BTC, trong
hnh th ba l kt qu p dng kt hp cc gii php trnh by trn phng php HBTC
VQ (Hierachical BTC with Vector Quantization BTC phn cp vi lng t ho vector).
MATLAB (Version 7.0) khng cung cp cc hm nn nh c th. Tuy nhin, chng ta c th
vit cc hm thc hin cc gii thut nn nh thng dng t cc hm c sn trong MATLAB
ni chung v trong Image Processing Toolbox ni ring. V d, sau y l mt hm thc hin
gii thut nn BTC.
Trong phn ph lc cui quyn sch ny, bn c c th tm thy mt hm thc hin php nn
nh theo gii thut BTC: hm btcode. C php ca hm ny nh sau:
>> out = btcode (infile,bx,by,outfile)
Trong infile l tn file nh gc cn nn, bx, by l cc kch thc ca mi khi,
outfile l tn file nh sau khi nn.
V d 13-1. Dng hm btcode nn nh theo gii thut BTC:
Sau y l chng trnh kt qu thc hin nn nh peppers.tif bng cch dng hm btcode:
in = imread(peppers.tif)
out = btcode(peppers.tif,4,4,peppers_comp.tif)
imshow(in)
figure, imshow(out)

nh gc nh nn
Hnh 13.3.
Dung lng file nh gc l 280KB cn ca nh nn l 214KB.
I3.2. NN I0N h40 004 40 00I
Gii thut nn c tn hao c bit n nhiu nht c l l gii thut nn dng DCT. y l
gii thut c chun ho vi tn gi JPEG (ly t tn gi ca t chc nh ra tiu chun
nn ny: Joint Photographic Experts Group (Nhm lin kt cc chuyn gia x l nh). Hnh
v 13.4 v 13.5 m t s khi ca gii thut nn v gii nn nh JPEG.
Nn nh s

202

Hnh 13.4.

Hnh 13.5.
nn nh theo gii thut JPEG, ta chia nh thnh cc khi 8x8 (hoc 16x16). Mi khi 8x8
ny s c x l ring bit qua cc bc ca qu trnh nn nh. u tin, ta thc hin bin
i DCT thun i vi mi khi. Nh chng ta bit, do cc im nh k cn nhau thng
c tnh tng quan rt cao, php bin i DCT thun c xu hng tp trung hu ht nng
lng ca bc nh vo trong mt vi h s DCT tn s thp. y l c s ta c th thc
hin nn nh. Vi mt khi nh kch thc 8x8 trch t nh ngun, hu ht cc h s ca n
u bng 0 hoc gn bng 0. Nh vy, ta c th khng cn biu din cc h s ny khi truyn
d liu nh i. Lu rng bn thn bin i DCT khng lm mt mt thng tin ca nh gc,
n ch chuyn cc thng tin ny v mt dng khc m ta c th m ho mt cch hiu qu
hn.
Sau khi qua b bin i DCT, mi h s trong s 64 h s bin i DCT c lng t ho
da vo mt bng gi tr lng t c thit k k lng. Mt phng php lng t n
gin c th dng l ch gi li mt vi h s DCT tn s thp (cc h s c gi tr ln) cn tt
c cc h s cn li gn bng 0. Trong chun nn JPEG, mi h s DCT s c chia cho mt
trng s v tr tng ng trong mt ma trn lng t 8x8, sau lm trn v s nguyn gn
nht:
ij
ij
ij
D
C round
Q

=



(13.5)
vi D l ma trn cc h s DCT, Q l ma trn lng t (kch thc 8x8).
Thng thng mt ngi rt kh phn bit cc thnh phn tn s cao ca nh, do cc thnh
phn ny s c chia cho cc trng s ln hn. JPEG nh ngha cc ma trn lng t tu
theo cp cht lng t 1 n 100 (cp 100 c cht lng tt nht). Vi cp cht lng 50, ma
trn lng t c nh ngha l:
Nn nh s

203

Vi cc cp cht lng k vi k 50, ma trn lng t c nh ngha bi phng trnh sau:
50
50
50
. 50
100
. 50
50
k
Q k
k
Q
k
Q k

<


=

>


(13.6)
Sau khi lng t, cc h s bin i DCT s c sp xp theo mt chui zig-zag bt u t
thnh phn DC, ri n thnh phn AC th 1, thnh phn AC th 2, ... nh hnh v 13.6.

Hnh 13.6.
Cui cng cc h s ny c chuyn thnh chui bit nh phn bng cc k thut m ho
entropy. K thut m ho thng dng l RLC (Run Length Coding) trong thay v dng
chui cc bit 0 lin tip th ta ch cn dng mt vi bit biu din chiu di ca chui.
Phng php ny thch hp vi cc h s DCT ni trn v hu ht cc h s DCT tn s cao
u bng 0.
cng on gii m, b gii m (b c file JPEG) s thc hin qu trnh ngc li: gii m
entropy, sau nhn cc h s thu c vi phn t tng ng ca ma trn lng t, ri bin
i ngc DCT ti to li nh ban u.
MATLAB khng cung cp hm thc hin nn nh bng DCT. thc hin qu trnh nn da
trn DCT, ta phi vit on chng trnh dng cc hm x l nh c bn thc hin cc
bc nn nh nh trn. Trong phn ph lc cui sch, chng ti c gii thiu hm dctcompr
thc hin gii thut nn DCT vi c php nh sau:
Nn nh s

204
>> im = dctcompr (infile,coeff,outfile)
infile, outfile l tn cc file nh gc v nh sau khi nn, coeff l s cc h s DCT
c gi li trong ton b nh.
V d di y gii thiu mt on chng trnh ngn khc thc hin nn nh theo DCT.
Trong v d ny, chng ta s dng hm dctmtx to ra ma trn bin i DCT kch thc
NxN (c th N = 8):
>> D = dctmtx(N)
T c th tnh cc h s DCT ca nh A (vi A l ma trn vung) bng cng thc
D*.A.D. Cch tnh ny cho kt qu nhanh hn so vi hm DCT, c bit l khi ta chia nh
thnh nhiu khi nh v khi ch cn tnh ma trn D mt ln. chia nh thnh cc khi con
v x l tng khi, ta c th dng hm blkproc:
>> B = blkproc(A,[M N],fun)
Hm ny x l nh u vo A bng cch chia A thnh cc khi MxN v p dng hm fun cho
mi khi.
V d 13-2. Thc hin gii thut nn nh da trn DCT bng cch ch gi li 10 h s
DCT u tin trong tng s 64 h s DCT:
I = imread('cameraman.tif'); % c nh cameraman.tif
I = im2double(I); % Chuyn sang kiu double
T = dctmtx(8); % Tnh ma trn bin i DCT 8x8
B = blkproc(I,[8 8],'P1*x*P2',T,T');% Thc hin php nhn T*X*Tvi mi
khi
mask = [1 1 1 1 0 0 0 0 % Mt n, dng gi li ch 10 h s DCT
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2 = blkproc(B,[8 8],'P1.*x',mask); % Lng t ho cc h s DCT
I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);% Gii m
imshow(I), figure, imshow(I2) % Hin th cc nh
Nn nh s

205

nh gc nh nn bng gii thut DCT
Hnh 13.7.
C th nhn thy rng mc d khong 85% h s DCT b loi b nhng cht lng nh vn
c th chp nhn c.
V d 13-3. Thc hin gii thut nn DCT dng hm dctcompr:
in = imread(autumn.tif)
out=dctcompr(autumn.tif,8000,autumn_comp.tif);
imshow(in)
figure, imshow(out)

nh gc nh nn dng gii thut DCT
Hnh 13.8.
I3.3. NN 4Nh 84N0 0I4I Ih04I Fh4N I0h I8j 8IN0 {50)
I3.3.I. 0I0I IhI0 Fh00N0 Fh4F 50
Phng php phn tch tr ring (SVD Singular Value Decomposition) l mt ti rt c
quan tm ca i s tuyn tnh. Phng php ny c nhiu ng dng thc t, mt trong s
l ng dng trong k thut nn nh. c im quan trng ca phng php ny l n co th
p dng cho bt k ma trn thc m x n no. Ni dung ca n l: phn tch mt ma trn A cho
trc thnh 3 ma trn U, S, V, sao cho:

T
A USV = (13.7)
Nn nh s

206
trong U v V l cc ma trn trc giao v S l ma trn ng cho. Ma trn U l ma trn
gm cc vector ring tri ca A, ma trn V l ma trn gm cc vector ring phi ca A v ma
trn S l ma trn ng cho, mi phn t ng cho l mt tr ring ca A. Cc tr ring
c sp trn ng cho chnh theo th t sau:
1 2 1
... ... 0
r r p

+
> = = = (13.8)
vi r l hng ca ma trn A v p = min{m,n}.
tm cc ma trn S, U, V, ta thc hin cc bc nh sau:
Bc 1: tm ma trn V. Nhn
T
A vo hai v ca (13.7), ta c:
2
. ( ) . . . . . . . . . . .
T T T T T T T T T T
A A USV USV V S U U S V V S S V V S V = = = = (13.9)
(do .
T
U U I = ). Nh vy, tm ma trn S v V, ta ch cn tm cc tr ring v cc vector
ring ca .
T
A A v t (13.9) ta thy cc tr ring ca .
T
A A chnh l bnh phng cc phn t
ca S cn cc vector ring ca .
T
A A chnh l cc ct ca V.
Buc 2: tm ma trn U. Nhn hai v ca (13.7) vi
T
A v s dng: .
T
V V I = , ta cng c:
2
. . .
T T
A A U S U = (13.10)
Vy cc ct ca U chnh l cc vector ring ca .
T
A A .
Cui cng, ta phn tch ma trn A di dng nh sau:
( )
1 1
1
0
T
T
r m r r
T
n
v
A u u u v
v




=







(13.11)
A v S l cc ma trn kch thc m x n, U l ma trn m x m v V l ma trn n x n.
I3.3.2. 0N0 00N0 50 0 NN 4Nh 50
Bng cch phn tch ma trn nh A di dng
T
A USV = , ta c th biu din xp x ma trn A
bng t phn t hn. Nu hng ca ma trn A l r < m, hoc r < n, ta c th gim i nhng
thng tin tha:
1 1 1 2 2 2 1 1
... 0.
T T T T
r r r r r
A u v u v u v u v
+ +
= + + + + + ... (13.12)
Hn na, cc tr ring c sp xp theo th t gim dn, do nhng s hng pha sau s c
t nh hng n nh v c th b i cc s hng ny.
MATLAB c hm svd thc hin nhn t ho ma trn A thnh
T
USV :
>> [U,S,V] = svd(A)
Chng ta c th s dng hm ny kt hp vi phng trnh (13.12) vit mt hm nn nh
dng gii thut SVD. Bn c c th tham kho hm svdcompr phn ph lc. C php ca
n l:
>> im = svdcompr (infile,singvals,outfile)
trong infile v outfile l tn cc file nh gc v nh nn, singvals l s cc tr
ring ln nht c gi li.
Nn nh s

207
V d 13-4. Thc hin gii thut nn SVD dng hm svdcompr:
Trong v d ny ta ch gi li 30 s hng u tin trong phng trnh (13.12).
in = imread(2.bmp)
out=svdcompr(2.bmp,30,svd.bmp);
imshow(in),figure, imshow(out)

nh gc nh nn bng gii thut SVD
Hnh 13.9.
V d 13-5. Mt on chng trnh khc thc hin nn nh theo gii thut SVD:
close all
[A,map]=imread(lena.gif);
B=im2double(A,indexed);
imshow(B,map)
[u,s,v]=svd(B);
C=zeros(size(B));
for j=1:k
C=C+s(j,j)*u(:,j)*v(:,j).;
end
C=floor(C);
imshow(C,map)
k=find(C<1);
C(k)=1;
set(gcf,Unit,inches,Paperposition,[0,0,2,1])
print -djpeg lenak.jpg
Di y l kt qu ca on chng trnh trn vi cc gi tr k (s vng lp, cng l s tr
ring c gi li) khc nhau:
Nn nh s

208

a) nh gc b) nh nn vi k=5 c) k =10

d) k = 20 e) k = 60 f) k = 100
Hnh 13.10.
Trong hnh v 13.9, hnh b ng vi s tr ring gi li l 5, nh ny tit kim c 99,9%
dung lng so vi nh gc nhng cht lng km, ch thy c dng nh m khng thy r
cc chi tit. Nu gi li 60 tr ring ln nht, cht lng nh t gn vi nh gc (hnh e)
v ta tit kim c khong 84% dung lng. Khi tng s ln lp ln 100, cht lng nh rt
tt (hnh f) m vn tit kim c 55% so vi nh gc.
# Bi tp 13-1.
Vit li hm btcode trong phn 13.1 thc hin cc gii thut BTC khc, bao gm BTC vi
kch thc khi bin i v BTC-VQ.
# Bi tp 13-2.
S dng hm btcode phn ph lc v hm va vit trong bi tp 13-2 nn nh
autumn.tif. T so snh cc gii thut BTC thng qua t l nn v MSE ca nh.
# Bi tp 13-3.
Kim tra xem hm dctcompr c thc hin ng theo gii thut nn JPEG chun khng? Nu
cha hy sa li hm ny cho ng chun JPEG.
# Bi tp 13-4.
Dng hm dctcompr v hm thc hin trong bi tp 13-3 nn nh peppers.png. So
snh kt qu thng qua t l nn v MSE ca nh.
# Bi tp 13-5.
Thc hin li v d 13-2 i vi 3 nh tu chn. Vi mi nh xt 3 trng hp:
a. Ch gi li 5 h s DCT u tin
b. Gi li 20 h s DCT u tin
c. Gi li 40 h s DCT u tin
# Bi tp 13-6.
Thc hin nn cc nh trong bi tp 13-5 bng gii thut SVD. Ln lt xt cc trng hp:
a. Gi li 10 tr ring ln nht
Nn nh s

209
b. Gi li 50 tr ring ln nht
c. Gi li 100 tr ring ln nht
# Bi tp 13-7.
Vit cc hm thc hin cc gii thut nn nh khc m bn bit. C th tham kho ti web site
http://www.mathworks.com/matlabcentral/fileexchange.
Nn nh s

210
Danh sch cc hm c gii thiu trong chng 13
blkproc Chia nh thnh nhiu khi v x l tng khi
btcode Nn nh bng phng php m ho x l khi
dct2 Bin i DCT
dctcompr Nn nh c tn hao bng phng php DCT
dctmtx Tnh ma trn bin i DCT
svdcompr Nn nh bng phng php phn tch tr ring
























M ha ngun

203
Chng 14
I4. Na N0a N000N

Cc ngun tin tc trong i sng v cng a dng v phong ph. x l cc tin tc ny
bng cc h thng thng tin th trc ht cc tin tc ny phi c bin i tr thnh cc
tn hiu m h thng c th nhn bit v x l c. Qu trnh ny c gi l qa trnh m
ho ngun, hoc cn c cc tn gi khc nh qu trnh lng t ho hay nh dng tn hiu.
M ho ngun l qu trnh x l cc d liu tin tc lm gim nhng phn d tha v
chun b cho cc thao tc x l cn thit sau . Hai vn chnh khi cp n m ho
ngun l: chuyn i tng t s v nn d liu.
I4.I. I40 M0I N000N IN hI0
Trong MATLAB, cch ph bin biu din mt tn hiu l biu din di dng vector hoc
ma trn. MATLAB cung cp hai dng tn hiu ngu nhin dng lm ngun pht: ngun k
hiu ngu nhin v ngun s ngu nhin. Ngoi ra cn c hai dng ngun tn hiu khc phc
v cho vic m phng knh truyn, l ngun nhiu trng phn b Gauss v ngun to bit
li m phng cc b m sa sai (xem chng 16 v chng 17).
Hm randsrc cho php to ra mt ma trn m mi phn t ca n c ly t mt tp k
hiu cho trc vi xc sut xut hin c quy nh bi ngi s dng. Dng lnh sau y
cho php to mt ma trn 5x4, trong mi phn t ca n c ly t mt trong ba s 0,1,2
vi xc sut xut hin tng ng l 0.5, 0.25 v 0.25:
>> a=randsrc(5,4,[0,1,2;0.5,0.25,0.25])
a =
1 0 0 0
2 2 0 0
2 2 2 1
1 0 0 0
0 2 0 0
Nu khng ch r xc sut xut hin ca mi k hiu th cc k hiu s c xc sut phn b
u.
>> a=randsrc(2,5,[0,1])
a =
1 1 1 1 0
0 0 1 0 0
to mt ma trn gm cc s nguyn ngu nhin trong mt khong cho trc, ta s
dng hm randint:
>> c=randint(5,4,[2,5])
c =
2 4 3 4
4 3 5 3
3 5 5 3
M ha ngun

204
4 5 4 3
2 4 5 4
c bit nu to cc s ngu nhin bt u t 0 n n, ta c hai cch vit tng ng nh
sau:
>> c=randint(5,4,[0,10]);
>> c=randint(5,4,11);
C hai cch trn u to ra ma trn gm cc s nguyn ly gi tr ngu nhin t 0 n 10.
V d 14-1. To mt chui bit nh phn ngu nhin di dng vector ct c chiu di
30000. Biu din trn th.
on chng trnh di y s to ra chui bit ngu nhin theo yu cu trn v v gin
xung cho mt phn ca chui bit (gm 40 bit). to chui bit nh phn ta dng hm
randint.
Lu : Thi gian ly mu ng vi mi bit khng c th hin trn th. Trong th d ny ta
ch yu quan tm n gi tr ca chui bit d liu.
%% Thit lp
% nh ngha cc thng s.
n = 3e4; % S bit cn x l
%% Ngun tn hiu
% Khi to mt chui bit d liu nh phn.
x = randint(n,1); % Chui d liu nh phn ngu nhin
% V gin xung cho 40 bit u tin.
stem(x(1:40),'filled');
title('Random Bits');
xlabel('Bit Index'); ylabel('Binary Value');

Hnh 14.1.
1 hang n cot
M ha ngun

205
Gi s chui bit trn c chuyn thnh tn hiu n cc vi tc bit l fb. v tn hiu
ny ta to ra nhiu mu tn hiu trong mt chu k bit. V d on m sau s thc hin v tn
hiu ng vi 10 bit u tin ca chui bit vi tn s ly mu fs = 50fb:
fb = 1000; % Tc bit
fs = 50*fb; % Tn s ly mu
nbit = 10; % V 10 chu k bit u tin
len = fs/fb*nbit; % Tng s mu trong 10 chu k bit
time = 0:(1/fs):(len-1)/fs; % Vector thi gian
x = randint(n,1); % Chui d liu nh phn ngu nhin
pattern=[]; % khi to vector tn hiu
for k=1:nbit % Xt tng chu k bit
if x(k,1)==0
sig=zeros(1,50); % To 50 mu gi tr 0
else
sig=ones(1,50); % Tao 50 mu gia tr 1
end
pattern=[pattern sig];
end
plot(time,pattern);
axis([0 len/fs -0.5 1.5]);
title('Random Signals');
xlabel('Time in second'); ylabel('Voltage Level');
Kt qu thu c khi thc thi chng trnh:

Hnh 14.2.
M ha ngun

206
Lu : Cc bn c th nhn c cc kt qu khc vi hnh v trn v chui bit nhn c t
hm randint s thay i ngu nhin sau mi ln thc thi chng trnh.
I4.2. L00N0 I0 h04 IN hI0
Lng t ho l qu trnh ri rc ho tn hiu v mt bin , c th l thay th tt c cc gi
tr ca tn hiu nm trong mt khong xc nh no thnh mt gi tr duy nht. Min gi tr
ca tn hiu c chia thnh mt s hu hn cc khong chia. Nh vy, ln ca tn hiu
sau khi lng t ch c th nhn mt trong s hu hn cc gi tr cho trc.
Tp hp cc khong chia gi l s phn hoch ca tn hiu (partition). Tp cc gi tr thay th
cho mi khong chia gi l b m (codebook).
MATLAB biu din phn hoch ca tn hiu bng mt vector m cc phn t ca n l cc
im ranh gii gia hai khong chia lin tip. V d, nu tn hiu c min xc nh l R, c
phn hoch thnh cc khong (-, 0], (0,2], (2,4] v (4,+) th c th biu din s phn hoch
ny bng vector:
>> partition = [0,2,4];
Tng ng vi vector phn hoch tn hiu l vector biu din b m tn hiu. Cc phn t ca
n l cc gi tr thay th trong mi khong chia tng ng ca phn hoch. Nu ta thay th
cc gi tr trong khong (-, 0] bng -1, cc gi tr trong khong (0,2] bng 1, cc gi tr trong
khong (2,4] bng 3 v cc gi tr trong khong (4, +] bng 5 th vector biu din b m s
l:
>> codebook = [-1,1,3,5];
thc hin qu trnh lng t ho, MATLAB cung cp hm quantiz:
>> [indx, quant, distor] = quantiz(sig, partition, codebook)
trong sig l tn hiu trc khi lng t v partition, codebook ln lt l phn
hoch v b m lng t.
Hm quantiz tr v:
o tn hiu sau khi lng t ho quant
o vector indx c chiu di bng chiu di tn hiu, mi phn t ca n l ch s ca gi tr
tng ng ca tn hiu trong b m lng t. Ni cch khc, vector indx cho bit mi phn
t ca tn hiu vo nm trong khong chia no. Gia cc vector indx, quant v codebook
c mi lin h:
quant = codebook(indx+1);
o nhiu lng t do php lng t ho ny gy ra. Nhiu lng t l sai s bnh phng
trung bnh gia tn hiu gc v tn hiu sau khi lng t
V d:
>> parti=[0,2,4];
>> codebook=[-1,1,3,5];
>> samp=[-3,-1,1,1,5,3,5,4,2,1];
>> [index,quantized]=quantiz(samp,parti,codebook);
>> index
ans =
0 0 1 1 3 2 3 2 1 1
cho biet thu tu muc luong tu
distor
M ha ngun

207
>> quantized
quantized =
-1 -1 1 1 5 3 5 3 1 1
Trong cc h thng thng tin s, ngi ta thng phn hoch min gi tr ca tn hiu thnh q
khong bng nhau vi q =
v
2 . Cc gi tr thay th chnh l im gia ca mi khong chia.
Mi gi tr lng t ny li c biu din bng mt t m nh phn c chiu di v bit.
V d sau y s minh ho r hn qu trnh lng t ho mt tn hiu lin tc.
V d 14-2. Thc hin lng t ho tn hiu x(t) = sint vi s mc lng t l 12, di
cc khong chia bng nhau. V tn hiu trc v sau khi lng t.
Tn hiu x(t) = sint c min gi tr l [-1,1], do ta chia min gi tr ny thnh cc khong
chia c di 0.2.
t = [0:.1:2*pi]; % Cc thi im ly mu tn hiu sine
sig = sin(t); % Tn hiu sine cha lng t
partition = [-1:.2:1]; % Phn hoch thnh 12 khong chia
codebook = [-1.2:.2:1]; % B m lng t gm 12 mc
[index,quants] = quantiz(sig,partition,codebook); % Lng t ho.
plot(t,sig,'x',t,quants,'.')
legend(Tin hieu goc','Tin hieu sau khi luong tu hoa');
axis([-.2 7 -1.2 1.2])
Kt qu c minh ho trong hnh di:

Hnh 14.3.
M ha ngun

208
I4.3. I0I 00 h04 040 Ih0N0 50 004 q04 I8Nh L00N0 I0
Qu trnh lng t ho lm pht sinh sai s gia tn hiu lng t ho vi tn hiu thc. Sai s
ny gi l nhiu lng t. Ta c th nh gi nhiu lng t bng hm quantiz cp
phn trc. Vn t ra y l lm cch no ti thiu ho loi nhiu ny. Nhiu lng
t ph thuc vo cch phn hoch v tp cc gi tr lng t c chn. Nu s khong chia
cng nhiu th nhiu lng t cng nh. Tuy nhin, gii php ny khng phi lc no cng
thc hin c do nhng hn ch khch quan ca h thng. Mt phng php n gin hn
ti thiu ho nhiu lng t mc chp nhn c m khng cn phi phn hoch tn hiu
thnh qu nhiu khong, l phng php ti u ho theo gii thut Lloyd. Gii thut ny
da trn nguyn tc hun luyn, ngha l cc thng s ca qu trnh lng t s c chn v
cp nht mt cch thch nghi vi tng loi tn hiu a vo lng t.
Qu trnh ti u ho ni trn s c thc hin bng hm lloyds ca MATLAB
Communications Toolbox.
>> [partition, codebook] = lloyds(training_set, ini_codebook, tol)
hoc:
>> [partition, codebook, distortion, rel_distortion] = lloyds(...)
training_set l tp d liu dng hun luyn. l mt tn hiu tiu biu ca ngun tin
tc m ta cn lng t ho; ini_codebook l b m khi u do ta chn; tol l sai s cho
php ca qu trnh hun luyn (gi tr mc nh nu khng nhp thng s ny l
7
10

.
Cc kt qu xut ra gm phn hoch v b m ti u ho (partition v codebook),
nhiu lng t tuyt i (distortion) v tng i (rel-distortion) ca qu trnh
lng t.
V d sau y minh ho s ti u ho cc thng s ca qu trnh lng t bng cch dng
hm lloyds trong MATLAB. Nhiu lng t pht sinh t hai qu trnh lng t ho cha ti
u v ti u s c so snh vi nhau.
V d 14-3. Thc hin li qu trnh lng t ho tn hiu x(t) = sint vi cc thng s lng
t ti u ho. So snh nhiu lng t trc v sau khi ti u ho.
% Bt u vi cc thng s lng t nh v d 14-2
t = [0:.1:2*pi];
sig = sin(t);
partition = [-1:.2:1];
codebook = [-1.2:.2:1];
% Thc hin ti u ho vi b m khi u l codebook.
[partition2,codebook2] = lloyds(sig,codebook);
[index,quants,distor] = quantiz(sig,partition,codebook);
[index2,quant2,distor2] = quantiz(sig,partition2,codebook2);
% So snh nhiu lng t trc v sau khi ti u ho
[distor, distor2]
Kt qu xut ra ca s lnh ca MATLAB:
ans =
0.0148 0.0024
M ha ngun

209
Sau khi ti u ho, nhiu lng t gim i: 0.0148/0.0024 = 6.2 ln.
I4.4. 0I0 0h M4 I0N0 I 54I 0F0M {0IFF8NII4L F0L5 000
M000L4II0N)
Nh trn cp, thng thng ngi ta s phn hoch min xc nh ca tn hiu thnh
v
2 khong, sau mi khong tn hiu s c lng t ho, sau m ho bng mt t m
nh phn c chiu di v bit. Phng php lng t ho ny c gi l phng php iu m
xung (Pulse Code Modulation). Phng php ny khng cn i hi bt k thng tin no v
tn hiu cc thi im trc . Trong thc t, v tn hiu thng thay i chm t thi im
ly mu ny sang thi im ly mu k tip nn nu ta thc hin lng t v m ho cc gi
tr sai bit gia thi im hin ti vi thi im trc th s tn t gi tr hn so vi m ho
y ln ca tn hiu. Trn c s ny, ta c mt phng php lng t ho mi, gi l
lng t ho tin on, trong gi tr ca tn hiu thi im hin ti s c tnh thng
qua mt s cc gi tr ca tn hiu cc thi im qu kh. Tiu biu cho loi lng t ho
ny l k thut iu m xung vi sai (DPCM Differential Pulse Code Modulation).
thc hin m ho DPCM, ta khng nhng phi xc nh s phn hoch v b m lng t
m cn phi xc nh hm d on, d on gi tr ca tn hiu thi im hin ti. Thng
thng, ngi ta s dng hm d on tuyn tnh:
y(k) = p(1)x(k-1) + p(2)x(k-2) + ... + p(m-1)x(k-m+1) + p(m)x(k-m) (14.1)
trong x l tn hiu gc cn y(k) l gi tr d on ca x(k); p l mt vector gm cc hng s
thc.
Thay v lng t ho tn hiu x, ta s thc hin lng t ho tn hiu sai s d on y x.
m c gi l bc d on. Trng hp c bit m = 1 c gi l iu ch delta.
Trong MATLAB Communications Toolbox, hm d on c s dng l hm d on
tuyn tnh nh trn v c biu din bng vector:
>> predictor = [0, p(1), p(2), p(3),..., p(m-1), p(m)]
Cc hm dpcmenco v dpcmdeco s ln lt thc hin qu trnh m ho v gii m DPCM.
>> [indx,quant] = dpcmenco(sig,partition,codebook,predictor)
quant l vector cha cc gi tr lng t cn indx l vector cha cc ch s tng ng
trong b m.
>> [sig, quant] = dpcmdeco(indx, codebook, predictor)
sig l tn hiu tin tc c khi phc cn quant l tn hiu sai s d on.
V d 14-4. Thc hin m ho DPCM i vi tn hiu sng rng ca, s dng hm d
on y(k) = x (k - 1) (iu ch delta). Gii m v phc hi tn hiu ban u. nh gi sai s
bnh phng trung bnh gia tn hiu gc v tn hiu khi phc.
predictor = [0 1]; % Hm d on y(k)=x(k-1)
partition = [-1:.1:.9]; % Sai s ch nm trong khong [-1,1]
codebook = [-1:.1:1];
t = [0:pi/50:2*pi];
x = sawtooth(3*t); % Tn hiu gc
% Lng t ho tn hiu x theo phng php DPCM.
encodedx = dpcmenco(x,codebook,partition,predictor);
M ha ngun

210
% Khi phc tn hiu x t tn hiu iu ch.
decodedx = dpcmdeco(encodedx,codebook,predictor);
plot(t,x,t,decodedx,'--')
legend('Tin hieu goc','Tin hieu sau khi giai
ma','Location','NorthOutside');
distor = sum((x-decodedx).^2)/length(x) % Sai s bnh phng trung bnh
Kt qu thc hin:
o Trn ca s lnh ca MATLAB:
>> distor =
0.0327
o th dng sng tn hiu:

Hnh 14.4.
I4.5. I0I 00 h04 040 Ih0N0 50 004 q04 I8Nh M4 h04 0F0M
Cng ging nh vi phng php lng t ho PCM, ta c th ti u ho cc thng s m
ho DPCM bng gii thut hun luyn, ch cn cung cp d liu hun luyn. Qu trnh ti u
ho ny c thc hin bng hm dpcmopt ca MATLAB vi mt trong cc dng sau:
>> predictor = dpcmopt(training_set,ord)
Kt qu tr v l vector biu din hm d on ti u t tp d liu hun luyn v bc d
on cho trc.
>> [predictor,codebook,partition] = dpcmopt(training_set,ord,length)
>> [predictor,codebook,partition] = dpcmopt(training_set,ord,ini_codebook)
Nu cung cp thm chiu di length ca b m codebook hoc b m khi u
ini_codebook th hm s tr v phn hoch v b m ti u.
M ha ngun

211
V d 14-5. Thc hin li qu trnh m ho nh v d 14-4 nhng s dng cc thng s m
ho ti u, bit bc d on bng 1 v b m khi u [-1:.1:1]
Ta s dng hm dpcmopt tm cc thng s ti u trc khi m ho. Lu rng nhiu
lng t sinh ra trong v d ny nh hn nhiu so vi v d trc.
t = [0:pi/50:2*pi];
x = sawtooth(3*t); % Tn hiu gc
initcodebook = [-1:.1:1]; % B m khi u
% Ti u ho cc thng s DPCM t b m khi u v bc d on bng 1.
[predictor,codebook,partition] = dpcmopt(x,1,initcodebook);
% Lng t ho tn hiu x theo phng php DPCM.
encodedx = dpcmenco(x,codebook,partition,predictor);
% Phc hi tn hiu x t tn hiu iu ch.
decodedx = dpcmdeco(encodedx,codebook,predictor);
distor = sum((x-decodedx).^2)/length(x) % Sai s bnh phng trung bnh
Sai s lng t v d ny l:
distor =
0.0063
I4.6. NN 4 0I4N IN hI0
Trong cc ng dng x l tn hiu thoi (speech processing), trc khi lng t ho, ngi ta
thng thc hin nn (compress) tn hiu theo hm logarithm, mc ch l tn hiu mc
bin nh s thay i nhiu mc hn so vi cc gi tr bin ln, do sai s lng t
tng i cc mc bin nh v ln s khng chnh lch nhau nhiu nh i vi trng
hp khng nn.
khi phc li ng tn hiu ban u th sau khi gii m, ta phi a qua mt b gin tn
hiu (expander) c tuyn truyn t l nghch o ca c tuyn ca b nn (compressor).
S kt hp ca b nn v b gin tn hiu gi chung l b nn gin tn hiu (compander).
Hai lut nn gin thng c s dng trong x l tn hiu thoi l lut dng Bc M v
lut A dng chu u:
o Lut : y =
[ ]
x sgn
) 1 ln(
) x / x ( 1 ln
y
max
max
+
+
(14.2)
Theo cc chun Bc M, gi tr ca l 255.
max
x v
max
y ln lt l cc gi tr dng
ln nht ca x v y.
o Lut A:
( )
( )

<
+
+
<
+
=
1
x
x
A
1
x sgn
A ln 1
] x / x A ln[ 1
y
A
1
x
x
0 x sgn
A ln 1
x / x A
y
y
max
max
max
max
max
max
A l hng s (14.3)
Gi tr chun 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.
M ha ngun

212
>> out = compand(in, param, v, method)
in l tn hiu vo cn out l tn hiu ra
V l bin nh ca tn hiu vo
param l thng s ca lut nn gin (hng s A hoc )
method c th nhn mt trong cc gi tr sau:
method Chc nng
'mu/compressor'
Nn theo lut
'mu/expander'
Gin theo lut
'A/compressor'
Nn theo lut A
'A/expander' Gin theo lut A
V d sau y minh ho qu trnh nn gin theo lut .
V d 14-6. Thc hin qu trnh lng t ho tn hiu hm m theo hai phng php:
lng t ho u v lng t ho c nn gin theo lut . So snh sai s bnh phng trung
bnh ca hai phng php.
Vi phng php u tin ta s dng trc tip hm quantiz i vi tn hiu ly tha. Tn hiu
c phn hoch thnh cc khong u nhau c chiu di bng 1.
Vi phng php th hai, u tin ta s dng hm compand nn tn hiu theo lut , sau
dng hm quantiz lng t ho tn hiu thu c v cui cng li dng hm compand
phc hi tn hiu ban u.
Kt qu xut ra gm sai s bnh phng trung bnh ca hai phng php v th biu din
tn hiu gc v tn hiu c nn. C th nhn thy rng sai s lng t phng php th
hai nh hn so vi phng php th nht.
Mu = 255; % Thng s cho b nn gin theo lut
sig = -4:.1:4;
sig = exp(sig); % Tn hiu hm m cn lng t
V = max(sig);
% 1. Lng t ho u (khng nn gin).
[index,quants,distor] = quantiz(sig,0:floor(V),0:ceil(V));
% 2. S dng cng phn hoch v b m lng t nhng c nn trc khi lng
t
% ho v gii nn sau
compsig = compand(sig,Mu,V,'mu/compressor');
[index,quants] = quantiz(compsig,0:floor(V),0:ceil(V));
newsig = compand(quants,Mu,max(quants),'mu/expander');
distor2 = sum((newsig-sig).^2)/length(sig);
[distor, distor2] % Hin th sai s lng t ca hai phng php.
plot(sig); % V tn hiu gc .
hold on;
plot(compsig,'r--'); % V tn hiu nn gin.
M ha ngun

213
legend('Tin hieu goc','Tin hieu nen gian','Location','NorthWest')
Sai s lng t:
ans =
0.5348 0.0397
th dng tn hiu:

Hnh 14.5.
I4.7. M4 h04 h0FFM4N
Phng php m ho Huffman l mt k thut dng nn d liu. Mt ngun d liu
thng bao gm nhiu k hiu, mi k hiu c xc sut xut hin khc nhau. Nu chng ta
m ho cc k hiu ny bng cc t m c di bng nhau th s khng hiu qu bng cch
m ho sau cho cc k hiu c xc sut xut hin thp c biu din bi t m c chiu di
ln hn so vi cc t m biu din k hiu c xc sut xut hin cao hn. l nguyn tc
ca phng php m ho Huffman. Nh vy chiu di trung bnh ca cc t m Huffman s
ph thuc vo xc sut xut hin (hay cn gi l tn s thng k) ca cc k hiu trong tp d
liu ngun. iu kin quan trng i vi cc t m trong b m Huffman l khng c mt t
m no ca b m l phn u ca mt t m khc trong b m (v d: khng th tn ti ng
thi hai t m 01 v 0110 trong cng mt b m Huffman).
Lu : Trong trng hp mt chui d liu di cu to bi tp k hiu c t phn t v c s
phn b lch nhau nhiu th phng php m ho s hc s c hiu qu hn phng php m
ho Huffman.
thnh lp mt b m Huffman, MATLAB c hm huffmandict, ta ch cn cung cp
cc thng tin v tnh cht thng k ca tp d liu ngun:
>> [dict,avlen] = huffmandict(sym,prob,N,var)
Hm ny tr v b m Huffman dict cng vi chiu di trung bnh avlen ca cc t m
ca b m. Cc thng s nhp vo ti thiu gm c tp cc k hiu ca ngun d liu (sym)
M ha ngun

214
v xc sut xut hin ca tng k hiu trong tp k hiu ny (cho bi vector prob). Ngoi ra
cn c th cung cp thm hai thng s nhp khc:
o Nu dng cc t m N-ary thay v m nh phn th ta phi nhp thm gi tr N. Lu l N
l mt s nguyn c gi tr t 2 n 10 v khng c vt qu s k hiu ca tp ngun.
o Mt cch mc nh, MATLAB s dng gii thut variance ln nht. Nu chn gii thut
variance cc tiu, ta phi cung cp thm thng s var vi gi tr l min.
Sau y l mt v d n gin minh ho cch s dng hm huffmandict:
symbols = [1:5] % Tp k hiu
prob = [.3 .3 .2 .1 .1] % Xc sut xut hin tng ng
[dict,avglen] = huffmandict(symbols,prob);
% Hin th bng m.
temp = dict;
for i = 1:length(temp)
temp{i,2} = num2str(temp{i,2});
end
avglen
temp
Kt qu hin th nh sau:
avglen =
2.2000
temp =
[1] '0 1'
[2] '0 0'
[3] '1 0'
[4] '1 1 1'
[5] '1 1 0'
thc hin m ho v gii m theo phng php Huffman, ta c th s dng cc hm
huffmanenco v huffmandeco:
>> sig_encode = huffmanenco(sig,dict)
Hm ny thc hin m ho Huffman cho chui d liu sig vi b m Huffman tng ng l
dict. B m ny c to t hm huffmandict.
>> sig = huffmanenco(comp,dict)
Hm ny thc hin qu trnh gii m vi comp l d liu c m ho.
V d 14-7. Thc hin m ho v gii m theo phng php Huffman cho mt chui d
liu cho trc.
Trong v d ny, gi s ta c mt chui d liu cn m ho. Ta s thc hin m s k hiu
trong tp ngun v xc sut xut hin tng ng. T chn b m Huffman bng cch dng
hm huffmandict v thc hin m ho v gii m dng cc hm huffmanenco,
huffmandeco.
M ha ngun

215
n gin ho cc vn khng cn thit, chng ta s to ra mt chui d liu m ho
thay v ly chui d liu ngu nhin. Chui d liu ny gm c 3 k hiu. Ta s dng hm
repmat tng chiu di chui d liu nhng vn gi nguyn xc sut xut hin cc k hiu
(hm repmat s to mt ma trn mi bng cch lp li nhiu ln mt ma trn c kch thc
nh hn).
% D liu m ho (lp li 50 ln on [2 1 4 2 1 1 5 4 3 1])
sig = repmat([2 1 4 2 1 1 5 4 3 1],1,50);
symbols = [1 2 3 4 5]; % Tp cc k hiu c trong d liu cn m ho
p = [0.4 0.2 0.1 0.2 0.1]; % Xc sut k hiu tng ng ca cc k hiu
dict = huffmandict(symbols,p); % Thnh lp b m.
hcode = huffmanenco(sig,dict); % M ho d liu.
dhsig = huffmandeco(hcode,dict); % Gii m.
dhsig(1:10) % Hin th 10 k hiu u tin ca chui d liu c
% gii m
I4.8. M4 h04 50 h00 {48IIhMII0 000IN0)
y l mt phng php khc nn d liu. Phng php ny thch hp cho cc ngun d
liu c s k hiu t v xc sut xut hin cc k hiu chnh lch ln. M ho s hc i hi
phi cung cp tnh cht thng k ca tp d liu ngun. C th, i vi MATLAB, ta phi
cung cp s ln xut hin ca tng k hiu trong tp d liu ngun. V d, m ho mt
ngun d liu gm 10 k hiu x, 10 k hiu y v 80 k hiu z, ta phi nh ngha vector
counts ch ra s ln xut hin ca 3 k hiu x, y, z nh sau:
>> counts = [10,10,80];
Khi xc nh r s ln xut hin ca cc phn t trong vector counts ni trn, ta c th
thc hin m ho v gii m bng cc hm sau:
>> code = arithenco(seq, counts)
>> dseq = arithdeco(code, counts, len)
code l chui d liu c m ho cn dseq l chui d liu c khi phc vi s k
hiu khi phc c xc nh bi len.
V d 14-8. Thc hin m ho v gii m theo phng php s hc cho mt chui d liu
gm 10 k hiu x, 10 k hiu y v 80 k hiu z.
seq = repmat([3 3 1 3 3 3 3 3 2 3],1,50); % x: 1, y: 2, z: 3
counts = [10 10 80];
code = arithenco(seq,counts);
dseq = arithdeco(code,counts,length(seq));
# Bi tp 14-1.
To mt chui d liu ngu nhin ly t tp M = 8 k hiu. V tn hiu biu din chui d
liu trn dng:
a. Tin hiu nh phn (2 mc 0 v 1)
b. Tn hiu 8 mc
# Bi tp 14-2.
M ha ngun

216
Thc hin iu ch PCM cho tn hiu x(t) = sint. V chui xung pht i. Sau tin hnh gii
m khi phc li tn hiu ban u. V tn hiu gc v tn hiu khi phc. nh gi sai s bnh
phng trung bnh.
# Bi tp 14-3.
Lm li bi tp trn nhng s dng nn gin theo lut A v lut . nh gi sai s bnh
phng trung bnh trong ba trng hp: khng nn gin, nn gin theo lut A v theo lut
# Bi tp 14-4.
Thc hin m ho v gii m DPCM cho tn hiu x(t) = sint + 3cost vi bc d on bng 2
vi cc thng s lng t c ti u ho. nh gi sai s lng t.
# Bi tp 14-5.
Thc hin m ho thng ip sau y Welcome to Vietnam bng ba phng php:
a. M ASCII
b. M Huffman
c. M s hc
So snh chiu di trung bnh ca cc t m trong ba phng php trn.
# Bi tp 14-6.
Thc hin mt h thng thng tin n gin: truyn mt thng ip Hello world t my pht
n my thu bao gm cc bc sau:
i. M ho thng ip bng m Huffman (t m nh phn)
ii. iu ch bng phng php BPSK
iii. Pht i trn knh truyn c nhiu AWGN
iv. Gii iu ch BPSK
v. Gii m Huffman v thu li thng ip ban u
Ln lt kho st vi cc gi tr Eb/No bng 0, 2, 4, 6, 8 dB v so snh thng ip nhn c
vi thng ip pht. V th BER.
# Bi tp 14-7.
Thc hin yu cu tng t nh bi tp 14-6 vi tin tc l tn hiu x = cos(2*pi*250*t) (t tnh
bng s):
i. iu m xung PCM 4 bit
ii. iu ch QPSK
iii. Truyn trn knh truyn c nhiu AWGN vi Eb/No = 4dB
iv. Gii iu ch QPSK
v. Gii iu ch PCM phc hi li tn hiu ban u
V tn hiu ti mi bc. nh gi sai s bnh phng trung bnh.
# Bi tp 14-8.
M ha ngun

217


Hnh 14.6.
Cho h thng 16-QAM nh hnh 14.6. Thng ip vo c nhp t mt file input.txt. Dng
m ha Huffman v PCM. B lc sa dng xung l b lc raised-cosine chun (dng hm
rcosine). Knh truyn c nhiu fading Rayleigh vi SNR = 15dB. Sau khi gii m thng ip
my thu, lu vo file output.txt. Vit chng trnh m phng h thng trn.
M ha ngun

218
Danh sch cc hm c gii thiu trong chng 14
Cc hm to ngun tn hiu
randint To ma trn cc s nguyn ngu nhin
randsrc To ma trn cc gi tr ngu nhin ly t mt tp ngun vi xc sut cho trc
Lng t ho tn hiu
quantiz Lng t ho tn hiu
lloyds Ti u ho cc thng s ca qu trnh lng t
M ho ngun
dpcmdeco Gii m DPCM (iu ch m xung vi sai)
dpcmenco M ho DPCM (iu ch m xung vi sai)
dpcmopt Ti u ho cc thng s ca qu trnh m ho DPCM
Nn v gin tn hiu
arithenco M ho s hc
arithdeco Gii m ho s hc
compand Nn v gin tn hiu theo lut A v lut
huffmandeco Gii m Huffman
huffmandict Thnh lp b m Huffman
huffmanenco M ho Huffman
repmat To ma trn mi bng cch lp li nhiu ln mt ma trn


Truyn dn baseband v passband

219
Chng 15
I6. T80N 0aN 8a88aN0 9a a888aN0

Mt vn c bn trong cc h thng thng tin l vn iu ch. MATLAB cung cp y
cc hm thc hin cc phng php iu ch khc nhau (k c iu ch s ln iu ch
tng t) v mt s ngun tn hiu ngu nhin dng m phng qu trnh ny. Trong
chng ny chng ta s tm hiu cch iu ch v gii iu ch tn hiu trong MATLAB.
Vn : X l mt chui bit d liu bng mt h thng thng tin c bn gm ngun tn hiu,
b iu ch, knh truyn v b gii iu ch.
I5.I. 0I0 0h I00N0 I0
biu din mt tn hiu tong t, MATLAB dng cc vector hoc ma trn. Mi tn hiu
tng t c biu din bng mt vector, trong mi phn t ca vector l gi tr ca tn
hiu ti cc thi im ly mu xc nh bi vector thi gian t. Gi s tn s ly mu l
S
f th
vector thi gian s gm cc phn t cch u nhau mt khong bng 1/
S
f .
V d biu din tn hiu x = sin(20t) trong khong [0,0.1s] vi tn s ly mu 8kHz, ta
vit on m sau:
Fs = 8000; % Tn s ly mu 8000Hz
t = [0:.1*Fs]'/Fs; % Cc thi im ly mu trong 0.1s
x = sin(20*pi*t); % Biu din tn hiu
plot(t,x); % V tn hiu x.
biu din cc tn hiu a knh, ta s dng mt ma trn m mi ct (hay mi hng) ca n
ng vi mt knh tn hiu, chng hn trong v d trn nu biu din tn hiu 2 knh, mt knh
c pha ban u bng 0, mt knh c pha ban u l /8, ta vit nh sau:
Fs = 8000;
t = [0:.1*Fs]'/Fs;
x = [sin(20*pi*t), sin(20*pi*t+pi/8)];
MATLAB cung cp sn cc hm thc hin qu trnh iu ch tng t, ch cn cung
cp tn hiu iu ch, tn s sng mang v tn s ly mu.
V d 15-1. iu ch v gii iu ch tn hiu x(t) = sin(2t) + sin(4t) dng phng php
iu ch pha.
% Thit lp cc thng s.
Fs = 100; % Tn s ly mu
t = [0:2*Fs+1]'/Fs; % Cc thi im ly mu
% Khi to mt tn hiu tng t l tng ca hai tn hiu sin.
x = sin(2*pi*t) + sin(4*pi*t);
Fc = 10; % Tn s sng mang
phasedev = pi/2; % di pha
y = pmmod(x,Fc,Fs,phasedev); % iu ch.
z = pmdemod(y,Fc,Fs,phasedev); % Gii iu ch.
Truyn dn baseband v passband

220
% V cc tn hiu
figure;
subplot(3,1,1); plot(t,x); % V tn hiu ban u.
title('Tin hieu goc');
subplot(3,1,2); plot(t,y); % V tn hiu sau khi iu ch.
title('Tin hieu sau khi dieu che');
subplot(3,1,3); plot(t,z); % V tn hiu sau khi gii iu ch.
title('Tin hieu sau khi giai dieu che');

Hnh 15.1.
Mc d v d trn ch minh ho phng php iu ch pha, nhng cc phng php iu
ch khc u c th thc hin theo cch hon ton ging nh trn. Bng sau y lit k cc
hm dng thc hin cc phng php iu ch tng t:
Truyn dn baseband v passband

221

Bng 15.1. Cc hm iu ch tng t
Tn hm v c php Chc nng Gii thch
ammod(x,fc,fs,phase,amp) iu ch AM phase,amp: pha v bin sng mang
amdemod(y,fc,fs,phase,amp,num,den) Gii iu ch AM num,den: b lc dng cho gii iu ch
ssbmod(x,fc,fs,phase,upper) iu ch SSB upper: chn bng trn (mc nh:
bng di)
ssbdemod(y,fc,fs,phase,num,den) Gii iu ch SSB num,den: b lc gii iu ch (mc
nh: butter(5,fc*2/fs))
fmmod(x,fc,fs,fdev,phase) iu ch FM fdev: di tn ca tn hiu sau iu ch
fmdemod(y,fc,fs,fdev,phase) Gii iu ch FM
pmmod(x,fc,fs,pdev,phase) iu ch PM pdev: di pha ca tn hiu sau iu
ch
pmdemod(y,fc,fs,pdev,phase) Gii iu ch PM
I5.2. 0I0 0h 50
Trc khi thc hin iu ch s, ta phi biu din ngun d liu (mt tp hp M k hiu
ri rc) thnh mt tn hiu m cc gi tr ca n l cc s nguyn t 0 n M-1. Chng hn,
nu thc hin iu ch da trn mt tp gm 8 k hiu, th ngun k hiu u vo phi c
biu din di dng mt vector ct gm cc s nguyn t 0 n 7:
>> s = [2 3 4 1 4 7 0 4 5 2];
Hoc di dng ma trn nu l tn hiu a knh:
>> s = [2 1;
3 5;
4 0;
2 1];
V d sau y s minh ho cc bc thc hin iu ch s cho mt tp k hiu cho trc.
V d 15-2. Thc hin iu ch 16-QAM vi ngun d liu l chui bit to trong v d
15-1. Sau thc hin gii iu ch 16-QAM
gii quyt bi ton trn, u tin ta phi biu din ngun d liu vo di dng mt vector
gm cc s nguyn t 0 n 15. Do ta phi tch chui bit nh phn to v d 15-1
thnh cc nhm 4 bit (gi l 4-tuple) ri chuyn mi nhm ny thnh mt s nguyn tng
ng trong khong t 0 n 15. Hm reshape cho php chuyn chui bit thnh mt ma trn 4
ct, nh vy mi hng ca ma trn ng vi 1 nhm 4 bit. Hm bi2de cho php chuyn cc s
nh phn thnh thp phn. on chng trnh sau s thc hin qu trnh x l ngun d liu
nu trn:
%% Chuyn i bit k hiu
% Chuyn chui bit trong vector x thnh cc k hiu k-bit (k=4)
k = 4; % Chuyn thnh cc 4-tuple
Truyn dn baseband v passband

222
xsym = bi2de(reshape(x,k,length(x)/k).','left-msb');
%% Gin xung
% V cc k hiu trn gin xung.
figure; % Khi to mt ca s ha mi.
stem(xsym(1:10)); % V gin xung
title('Random Symbols');
xlabel('Symbol Index'); ylabel('Integer Value');

Hnh 15.2.
Lc ny ta c th thc hin iu ch 16-QAM:
%% iu ch s 16-QAM
M = 16;
y = qammod(xsym,M);
Sau khi iu ch ta c mt vector phc y m mi phn t ca n l mt trong 16 im
trong mt phng phc. 16 im ny hnh thnh gin sao (constellation plot) ca phng
php iu ch QAM. Trong v d 15-4 chng ta s kho st cch v gin ny.
Cui cng l qu trnh gii iu ch. Sau khi gii iu ch ta phi chuyn chui k hiu nhn
c thnh chui bit nh phn bng cch dng hm de2bi v reshape.
%% Gii iu ch s dng phng php 16-QAM.
zsym = qamdemod(y,M);
%% Chuyn i ngc t cc k hiu thnh chui bit nh phn
z = de2bi(zsym,'left-msb'); % Chuyn cc s nguyn thnh cc s nh phn 4
bit .
% i ma trn z thnh mt vector
z = reshape(z.',prod(size(z)),1);
Truyn dn baseband v passband

223
Trong th d trn, chng ta thy rng hm qammod cng nh cc hm iu ch s khc
trong MATLAB u tr v vector phc, do ta cha th v c dng sng ca tn hiu sau
khi iu ch. S d nh vy l v MATLAB s dng phong php biu din tn hiu iu ch
bng tn hiu bng gc tng ng. Nu tn hiu iu ch c dng:
) t f 2 sin( ) t ( Y ) t f 2 cos( ) t ( Y y
c 2 c 1
+ + = (15.1)
trong
c
f l tn s v l pha ban u ca sng mang, th biu din bng gc tng ng
ca n s l:

+
j
2 1
e )] t ( jY ) t ( Y [ (15.2)
Cch biu din ny lm gim bt s lng cc php tnh cn thc hin khi m phng bi v
nu biu din bng tn hiu thc th phi thc hin ly mu tc cao hn tn s sng
mang.
Mun v dng sng tn hiu sau khi iu ch, ta phi chuyn i dng tn hiu bng gc thu
c sau khi dng cc hm iu ch s thnh tn hiu bng di thc. Cc thng s cn c
thc hin iu ny l tc bit v tn s ly mu. V d sau y minh ho qu trnh ny.
V d 15-3. V dng sng tn hiu sau khi iu ch v d 15-2, gi s tc k hiu bng
1Kbps, tn s sng mang bng 10KHz, tn s ly mu bng 100KHz.
% Thit lp cc thng s
fd = 1000; % Tc k hiu
fc = 10*fd; % Tn s sng mang
fs = 10*fc; % Tn s ly mu
len = length(y)*fs/fd; % S mu ca tn hiu y
Yreal = real(y);%Tn hiu Y1(t) l phn thc ca tn hiu iu ch bng gc
y
Yimag = imag(y);% Tn hiu Y2(t) l phn o ca tn hiu iu ch bng gc
y
% Khi to vector tn hiu
y1 = [];
y2 = [];
xtmp=[];
ztmp=[];
for k=1:length(y) % Xt tng chu k k hiu
sigx=xsym(k,1)*ones(1,100); % To 100 mu gi tr bng x
sig1=Yreal(k,1)*ones(1,100); % To 100 mu gi tr bng Yreal
sig2=Yimag(k,1)*ones(1,100); % To 100 mu gi tr bng Yimag
sigz=zsym(k,1)*ones(1,100); % To 100 mu gi tr bng z
y1=[y1 sig1];
y2=[y2 sig2];
xtmp = [xtmp sigx];
ztmp = [ztmp sigz];
end
time = 0:(1/fs):(len-1)/fs; % Vector thi gian
Truyn dn baseband v passband

224
ymod = y1.*cos(2*pi*fc*time)-y2.*sin(2*pi*fc*time); % Tn hiu sau iu ch
figure;
subplot(3,1,1); plot(time,xtmp); % V tn hiu trc khi iu ch.
title('Tin hieu goc');
subplot(3,1,2); plot(time,ymod); % V tn hiu sau khi iu ch.
title('Tin hieu sau khi dieu che');
subplot(3,1,3); plot(time,ztmp); % V tn hiu sau khi gii iu ch.
title('Tin hieu sau khi giai dieu che');
Kt qu thc thi chng trnh:

Hnh 15.3.
Ngoi phng php iu ch QAM c trnh by th d trn, MATLAB c sn cc
hm thc hin cc phng php iu ch s khc nh trnh by trong bng di y:
Truyn dn baseband v passband

225

Bng 15.2. Cc hm iu ch s ca MATLAB
Tn hm v c php Chc nng Gii thch
dpskmod(x,M,phaserot) iu ch DPSK M: s trng thi ca k hiu;
phaserot: xoay pha ca php iu ch
dpskdemod(x,M,phaserot) Gii iu ch DPSK
fskmod(x,M,fre_sep,N,Fs,cont) iu ch FSK fre_sep: khong cch gia cc tn s lin tip
N: s mu trn mt k hiu
Fs: tn s ly mu, mc nh 1
cont: tnh lin tc v pha gia hai k hiu
(cont:lin tc (mc nh),discont:gin on)
fskdemod(x,M,fre_sep,N,Fs) Gii iu ch FSK
genqammod(x,const) iu ch QAM theo
m Gray
const: vector chuyn i
X: chui cc s nguyn t 0 n length(const)-1
genqamdemod(y,const) Gii iu ch QAM
theo m Gray

mskmod(x,N,data_enc,phase) iu ch MSK data_enc: phng php m ho d liu (diff:
m ho vi sai (mc nh),nondiff: m ho
khng vi sai)
mskdemod(x,N,data_enc,phase) Gii iu ch MSK
oqpskmod(x,phase) iu ch OQPSK phase: offset pha ca tn hiu sau iu ch
oqpskdemod(x,phase) Gii iu ch
OQPSK

pammod(x,M,phase) iu ch PAM phase: pha ban u ca tn hiu sau iu ch
pamdemod(y,M,phase) Gii iu ch PAM
qammod(x,M,phase) iu ch QAM phase: offset pha ca tn hiu sau iu ch
qamdemod(y,M,phase) Gii iu ch QAM
pskmod(x,M,phase) iu ch PSK
pskdemod(y,M,phase) Gii iu ch PSK
modnorm(const,powtype,powval) Tnh h s t l
chun ho tn hiu
sau iu ch
const: vector constellation
powtype: avpow hoc peakpow: chun ho
theo cng sut trung bnh hay cng sut nh
powval: gi tr chun ho (tnh bng W)
Mi qu trnh iu ch s c m t bng mt th hnh sao (constellation plot). y l
mt th c v trn mt phng phc, gm tp hp cc im biu din pha v bin sng
Truyn dn baseband v passband

226
mang ng vi cc k hiu trong tp k hiu ngun. v th hnh sao ny, chng ta c th
s dng hm scatterplot ca MATLAB. Cc bc thc hin nh sau:
9 To vector tn hiu x = [0:M-1], trong M l s k hiu c th c ca tp ngun.
9 Thc hin php iu ch s vi d liu vo l x.
9 p dng hm scatterplot i vi tn hiu sau khi iu ch.
V d 15-4. V th phn b (constellation plot) cho qu trnh iu ch 32-QAM.
Di y l on m thc hin yu cu trn:
M = 32; % S k hiu iu ch
x = [0:M-1]; % To vector tn hiu [0:M-1]
y = qammod(x,M); % iu ch 32-QAM
scale = modnorm(y,'peakpow',1); % Chun ho cng sut nh bng 1W
y = scale*y; % Thay i t l v.
scatterplot(y); % V th
ch thch mi im trn th ng vi k hiu tng ng ca n, ta thm vo cc dng
sau:
% Ch thch bng cch nh s cc im.
hold on; % Ch thch trn cng th va v.
for jj=1:length(y)
text(real(y(jj)),imag(y(jj)),[' ' num2str(jj-1)]);
end
hold off;

Hnh 15.4.
Truyn dn baseband v passband

227
Nu xem k cc v d v iu ch QAM trn ta s thy rng cch b tr cc im biu
din cc k hiu trong tp ngun nh trn l khng tun theo m Gray (tc s nh phn ng
vi hai im k nhau trn th c th khc nhau nhiu hn mt bit). Mun thc hin iu
ch QAM ng quy lut m Gray, ta phi thc hin chuyn i (mapping) trc khi iu ch
v sau khi gii iu ch nh trong v d sau:
V d 15-5. Thc hin li qu trnh iu ch v d 15-2 nhng s dng m Gray.
gii quyt bi ton trn, ta they i on chng trnh chuyn i bit thnh cc k hiu
trc khi iu ch v on chng trnh chuyn i ngc t cc k hiu thnh chui bit sau
khi iu ch nh sau:
%% Chuyn i bit thnh k hiu
% i cc bit nh phn ca x thnh cc k hiu k bit s dng m ha Gray
% Bc 1. nh ngha vector chuyn i theo m Gray. Vector ny ph thuc
% cch sp xp 16 im trn th 16-QAM.
mapping = [0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10].';
% Bc 2. Thc hin chuyn i nh bnh thng.
xsym = bi2de(reshape(x,k,length(x)/k).','left-msb');
% Bc 3. Dng vector nh ngha bc 1 chuyn sang m Gray.
xsym = mapping(xsym+1);
%% Chuyn i cc k hiu thnh cc bit
% Thc hin qu trnh ngc vi qu trnh trn.
% Bc 1. nh ngha vector chuyn i ngc.
[dummy demapping] = sort(mapping);
% u tin, demapping c gi tr chy t 1 n M.
% Tr i 1 cc gi tr nm gia 0 v M-1.
demapping = demapping - 1;
% Bc 2. Chuyn i gia m Gray v m nh phn thng thng.
zsym = demapping(zsym+1);
% Bc 3. Thc hin chuyn i thp phn nh phn nh bnh thng.
z = de2bi(zsym,'left-msb');
% i ma trn z thnh mt vector.
z = reshape(z.',prod(size(z)),1);
Lu : trong v d trn cc vector mapping v demapping l ging nhau. Tuy nhin, mt cch
tng qut, i vi cc trng hp khc th hai vector ny s khc nhau.
# Bi tp 15-1.
To mt chui xung vung n cc c chu k l 1ms. Sau dng tn hiu ny iu ch
sng mang c tn s 50kHz, bin 1V, dng cc phng php sau:
a. AM
b. AM-DSC
c. AM-SSB
d. FM
Truyn dn baseband v passband

228
# Bi tp 15-2.
Thc hin php iu ch QPSK cho mt chui bit nh phn ngu nhin chiu di 1000 bit, tc
1000bps, tn s sng mang 40kHz, tn s ly mu 400kHz, bng hai phng php:
a. Dng hm c sn ca MATLAB
b. Trc tip t nh ngha
HD: biu din chui bit bng 2 tn hiu nh phn Q v I, sau dng cng thc:
) t f 2 sin( b ) t f 2 cos( b ) t ( y
c Q c I
=
# Bi tp 15-3.
V constellation plot cho cc qu trnh iu ch s sau:
a. 16-PSK
b. 8-QAM
c. 8-QAM theo m Gray
# Bi tp 15-4.
Thc hin php iu ch BPSK (dng nh ngha) cho mt chui bit nh phn ngu nhin
chiu di 1000 bit, tc 64Kbps, tn s sng mang 1,92 MHz, tn s ly mu 19,2MHz. Sau
thc hin gii iu ch. V dng sng cc tn hiu.
# Bi tp 15-5.
Kho st hiu ng offset pha my thu: thc hin li bi tp 15-4 trong hai trng hp:
(i) sng mang my thu ng b vi my pht v
(ii) c offset pha sng mang /18 my thu.
(iii) c offset pha sng mang /6 my thu.
V cc tn hiu v nhn xt.
Truyn dn baseband v passband

229
Danh sch cc hm c gii thiu trong chng 15
Cc hm iu ch v gii iu ch tng t
ammod iu ch bin (AM)
amdemod Gii iu ch bin (AM)
fmmod iu ch tn s (FM)
fmdemod Gii iu ch tn s (FM)
pmmod iu ch pha (PM)
pmdemod Gii iu ch pha (PM)
ssbmod iu ch AM n bin (SSB)
ssbdemod Gii iu ch AM n bin (SSB)
Cc hm bin i c s
bi2de i t h nh phn sang h thp phn
de2bi i t h thp phn sang h nh phn
Cc hm iu ch v gii iu ch s
dpskmod iu ch DPSK
dpskdemod Gii iu ch DPSK
fskmod iu ch FSK
fskdemod Gii iu ch FSK
genqammod iu ch QAM theo m Gray
genqamdemod Gii iu ch QAM theo m Gray
mskmod iu ch MSK
mskdemod Gii iu ch MSK
modnorm Tnh h s t l chun ho bin tn hiu iu ch
oqpskmod iu ch OQPSK
oqpskdemod Gii iu ch OQPSK
pammod iu ch bin xung PAM
pamdemod Gii iu ch bin xung PAM
qammod iu ch QAM
qamdemod Gii iu ch QAM
pskmod iu ch PSK
pskdemod Gii iu ch PSK
scatterplot V th phn b ca cc phng php iu ch s
Cc php ton c bn khc
reshape Sp xp li ma trn bng cch thay i s dng v ct
Truyn dn baseband v passband

230
real Tr v phn thc ca mt s phc
imag Tr v phn o ca mt s phc

Knh truyn v nh gi cht lng knh truyn

231
Chng 16
I8. kNN T80N 9a 0aNN 0Ia 0NaT L00N0 kNN T80N

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. Ngoi ra, vi cc cng c ton hc v cng phong ph ca MATLAB, ngi
s dng c th t to ra nhng knh truyn c nhng c trng ring theo mnh hoc kt
hp cc dng knh truyn c bn ni trn.
Mt vn quan trng khi m phng mt h thng thng tin l phn tch cc p ng ca n
trc cc yu t gy nhiu tn ti trong th gii thc, minh ho bng cc cng c ho v
nh gi xem cht lng ca n c p ng cc tiu chun c t ra i vi h thng
hay khng. Vn ny c th gii quyt tt bi cc cng c nh gi cht lng knh truyn
do MATLAB cung cp.
I6.I. KNh I80N 4w0N {400III whII 04055I4N N0I5)
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
x
e
2
1
) x ( p


= (16.1)
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 v mc nh l dBW, hoc c th dng n v W)
- T s SNR (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 t s cng sut tn hiu trn nhiu (tnh bng dB)
SigPower cho bit cng sut tn hiu vo (dBW), hoc nu SigPower =
measured th 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 v ca SNR v SigPower l n v decibel (dB) hay
n v tuyn tnh (linear)
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 0dBW v n v ca SNR l dB.
Knh truyn v nh gi cht lng knh truyn

232
Lu : Ngoi thng s SNR, nh gi mc nhiu ca knh truyn, ngi ta cng
thng s dng cc thng s
0
b
N
E
(nng lng bit trn mt cng sut nhiu) hoc
0
s
N
E

(nng lng k hiu trn mt cng sut nhiu). c gi cn lu cng thc chuyn i
gia cc thng s ny.
Quan h gia
0
b
N
E
v
0
s
N
E
:
k lg 10 ) dB ( N / E ) dB ( N / E
0 b 0 s
= = (16.2)
vi k l s bit thng tn cha trong mt k hiu.
Quan h gia
0
s
N
E
v SNR:
( )
samp sym 0 s
T / T lg 10 ) dB ( SNR ) dB ( N / E + = nu tn hiu pht l tn hiu phc
( )
samp sym 0 s
T / T 2 lg 10 ) dB ( SNR ) dB ( N / E + = nu tn hiu pht l tn hiu thc
trong
sym
T v
samp
T ln lt l chu k k hiu v chu k ly mu.
(16.3)
V d 16-1. Lm li v d 15-3 vi knh truyn c nhiu AWGN vi
0 b
N / E =10dB.
Trong th d 15-3 chng 15, ta to ra tn hiu iu ch bng gc l y. y l tn hiu
pht, tn hiu ny s c cng thm nhiu AWGN bng cch dng hm awgn vi cc thng
s nhp l y, SNR v chn SigPower l measured (ch cng nhiu m khng thay i
cng sut tn hiu pht).
%% Tn hiu pht
ytx = y;
%% Knh truyn
% Truyn tn hiu trn knh truyn AWGN.
EbNo = 10; % n v dB
snr = EbNo + 10*log10(k) - 10*log10(nsamp); % nsamp = Tsym/Tsamp
ynoisy = awgn(ytx,snr,'measured');
%% Tn hiu thu
yrx = ynoisy;
Nu mun thay i cng sut pht tn hiu ta cung cp gi tr cng sut cho thng s
SigPower. V d, cng sut pht bng 4W, ta vit nh sau:
snr = 10^(snr/10); % Chuyn sang n v tuyn tnh
ynoisy = awgn(ytx,snr,4,linear);
Nh cp chng 15, MATLAB biu din tn hiu iu ch s di dng tn hiu
bng gc tng ng v ni chung y l tn hiu phc. v tn hiu iu ch trong min
thi gian ta phi thc hin chuyn i t tn hiu bng gc phc sang tn hiu bng di thc.
Tuy nhin MATLAB cng cung cp cc hm to nhiu ngu nhin cho php ta vit li cc
hm iu ch to cc tn hiu iu ch thc (tn hiu bng di) v cng nhiu m phng
Knh truyn v nh gi cht lng knh truyn

233
knh truyn theo phng php thng thng (phng php bng di). V d sau y s minh
ho iu ny.
V d 16-2. Vit chng trnh iu ch 1 chui bit nh phn tc 8Kbps bng phng
php BPSK vi sng mang 100KHz v pht i trn knh truyn c nhiu AWGN vi
0 b
N / E =10dB, sau gii iu ch. V cc tn hiu pht v thu.
Chn tn s ly mu
s
f bng 1MHz.
Phng php thc hin tng t nh v d 15-3.
% Thit lp cc thng s
N = 10; % S bit
x = randint(N,1); % Chui bit ngu nhin N bit
M = 2; % S mc ca tn hiu
k = 1; %
Fb = 8000; % Tc bit
Fc = 40000; % Tn s sng mang
Fs = 400000; % Tn s ly mu
EbNo = 10; % n v dB
Nsamp = floor(Fs/Fb*N); % S mu
Time = [0:1/Fs:(Nsamp-1)/Fs]; % Vector thi gian
% Xy dng cc tn hiu
% Tn hiu tin tc
xmsg = zeros(1,Nsamp);
for i=1:Nsamp
xmsg(i) = x(floor((i-1)*Fb/Fs)+1);
end
% Sng mang
xcar = cos(2*pi*Fc*Time);
% Tn hiu iu ch BPSK
ytx = (2*xmsg-1).*xcar;
% Cng nhiu
snr = EbNo + 10*log10(k) - 10*log10(Nsamp);
ynoisy = awgn(ytx,snr,'measured');
% Gii iu ch
ytmp = ynoisy.*xcar; % Nhn vi sng mang
[num,den]=butter(2,Fc/(Fs/2));% B lc thp Butterworth bc 2, tn s ct
Fc
ztmp = filter(num,den,ytmp); % Lc b tn s cao
for i = 1:length(x) % Ly mu v quyt nh
if ztmp(floor(((i-1)/Fb+1/2/Fb)*Fs)) > 0 % Ly mu gia bit
z(i) = 1; % Ngng quyt nh l 0
else
Knh truyn v nh gi cht lng knh truyn

234
z(i) = 0;
end
end
xdemod = zeros(1,Nsamp);
for i=1:Nsamp
xdemod(i) = z(floor((i-1)*Fb/Fs)+1);
end
figure;
subplot(4,1,1); plot(Time,xmsg); % V tn hiu trc khi iu ch.
title('Tin hieu goc');
subplot(4,1,2); plot(Time,ytx); % V tn hiu sau khi iu ch.
title('Tin hieu sau khi dieu che');
subplot(4,1,3); plot(Time,ynoisy); % V tn hiu thu c.
title('Tin hieu den may thu');
subplot(4,1,4); plot(Time,xdemod); % V tn hiu sau khi gii iu ch.
title('Tin hieu sau khi giai dieu che');
Kt qu thc thi chng trnh:

Hnh 16.1.
Lu : ngoi hm awgn ra, MATLAB cn cung cp cc hm to tn hiu nhiu Gauss
cp thp hn cho php ngi s dng t to tn hiu nhiu theo cch ca mnh:
o Hm wgn(M,N,pow,imp,sigtype,powtype) to ra ma trn nhiu Gauss kch thc
MxN, cng sut l pow trn ti c tr khng imp. Sigtype cho bit tn hiu l thc (real)
Knh truyn v nh gi cht lng knh truyn

235
hay phc (complex), powtype cho bit n v l dBW (dBW), dBm (dBm) hay W
(linear). Gi tr mc nh l imp = 1, sigtype = real, powtype = dBW.
Hm randn(M,N) to ra mt ma trn ngu nhin kch thc MxN c phn b xc sut theo
hm Gauss vi trung bnh bng 0 v phng sai bng 1.
I6.2. KNh I80N F40IN0
Knh truyn fading Rayleigh hoc Rician l m hnh hu dng m t cc hin tng thc
trong thng tin khng dy (wireless communications). Cc hin tng ny bao gm hiu ng
tn x a ng, s phn tn thi gian, v hiu ng Doppler gy ra bi s dch chuyn tng
i gia my pht v my thu.
Hnh v di y minh ho knh truyn fading.

Hnh 16.2.
Trn ng dn chnh t my pht n my thu, cc phin bn khc nhau ca tn hiu (do s
tr hon thi gian) s tp hp my thu. Cc tn hiu pht i phn x trn cc vt chng ngi
khc nhau trn ng truyn s n my thu theo cc ng khc nhau. Tt c cc tn hiu
ni trn c kt hp li ti my thu gy ra hiu ng a ng. Thng thng, qu trnh
fading c c trng bi phn b Rayleigh nu ng truyn khng thng (non-line-of-
sight) v c c trng bng phn b Rician nu l knh truyn tm nhn thng (line-of-
sight).
S di chuyn tng i gia my pht v my thu gy ra hiu ng Doppler. S tn x trn cc
vt chng ngi lm cho dch chuyn Doppler thay i trn mt khong no , gi l ph
Doppler. dch chuyn Doppler cc i xy ra khi i tng kho st dch chuyn theo
hng ngc vi hng di chuyn ca mobile.
Trong Communication Toolbox ca MATLAB, knh truyn fading c m hnh ho
di dng mt b lc. Tn hiu truyn qua knh truyn fading c ngha l tn hiu c lc
bi b lc c bit ny. Qu trnh m phng knh truyn fading gm 3 bc:
o Bc 1: To mt i tng knh truyn (channel object) m t cc tnh cht ca knh
truyn m ta mun m phng. i tng knh truyn l mt dng bin trong MATLAB.
to mt i tng knh truyn fading ta c th s dng mt trong hai hm rayleighchan hoc
ricianchan. S dng ricianchan trong trng hp knh truyn c mt ng truyn thng
kt hp vi mt hoc nhiu ng phn x; cn trong trng hp ch c mt hoc vi ng
phn x (non light-of-sight), ta dng rayleighchan.
V d, to mt knh truyn fading Rayleigh tc ng ln mt tn hiu c ly mu tn
s 100000Hz, vi dch chuyn Doppler ti a l 130Hz, ta vit dng lnh sau:
>> c1 = rayleighchan(1/100000,130);
Mt cch khc to ra mt i tng knh truyn l copy li mt i tng c sn, sau
thay i cc thuc tnh ca n nh mong mun.
>> c2 = copy(c1);
Knh truyn v nh gi cht lng knh truyn

236
>> c2 = c1;
Trong hai cch nu trn, cch th nht s to ra mt i tng c cc thuc tnh c lp vi
i tng c1, trong khi cc thuc tnh ca i tng to ra theo cch th 2 s ph thuc
vo i tng c1.
o Bc 2: Hiu chnh cc thng s ca knh truyn theo nhu cu m phng.
Mi mt i tng knh truyn c mt s cc thuc tnh ring, chng hn: loi knh truyn,
tn s ly mu, dch chuyn Doppler cc i, ... xem cc thuc tnh ca mt i tng
knh truyn, ta ch cn g tn ca i tng trn ca s lnh ca MATLAB. truy xut n
mt thuc tnh c th ta vit tn ca i tng, sau l du chm, ri n tn ca thuc tnh
cn truy xut. Nh vy, hiu chnh i tng ta ch cn gn cho cc thuc tnh ca n cc
gi tr m ta mong mun. V d:
>> c1 = rayleighchan(1/100000,130); % Khi to mt i tng knh truyn
%fading
>> c1 % Xem cc thuc tnh ca c1
c1 =
ChannelType: 'Rayleigh'
InputSamplePeriod: 1.0000e-005
MaxDopplerShift: 130
PathDelays: 0
AvgPathGaindB: 0
NormalizePathGains: 1
PathGains: 0.2104- 0.6197i
ChannelFilterDelay: 0
ResetBeforeFiltering: 1
NumSamplesProcessed: 0
>> g = c1.PathGains % Ly gi tr thuc tnh PathGains ca c1.
g =
0.2104 - 0.6197i
Lu : - Mt s thuc tnh c tnh cht Read Only, ngha l ta khng th thay i gi tr ca
n. V d thuc tnh NumSamplesProcessed cho bit s mu x l t ln reset cui
cng.
- Mt s thuc tnh c tnh lin kt vi nhau, khi thuc tnh ny thay i th thuc tnh
kia cng thay i theo.
- Ngoi cc thuc tnh trn, i tng knh truyn fading Rician c thm mt thuc
tnh l Kfactor.
Sau y l ngha ca mt s thuc tnh quan trng:
PathDelays: Cc gi tr tr hon ca cc ng dn.
- Gi tr u tin thng chn l 0 ng vi ng tn hiu n my thu u tin.
- Vi mi trng trong nh (indoor), cc tr hon tip theo s c gi tr t 1 n 100ns.
- Vi mi trng bn ngoi (outdoor), cc tr hon tip theo s c gi tr t 100ns n
10s.
Knh truyn v nh gi cht lng knh truyn

237
AveragePathGains: Ch th li cng sut trung bnh cho mi ng fading.
- Trong m phng ta thng chn gi tr li trung bnh trong khong -20dB n 0dB.
Gi tr li theo dB s gim gn nh tuyn tnh theo thi gian tr hon, tuy nhin ng
cong c th s ph thuc vo mi trng truyn.
- bo m cng sut tng cng ca cc ng bng 1, ta phi chun ho cc li
bng thuc tnh NormalizePathGains.
MaxDopplerShift: dch chuyn Doppler cc i.
- Trong mt s ng dng wireless, chng hn trong h thng thng tin di ng, ngi
ta thng biu din thng s ny di dng tc di chuyn ca mobile. Nu mobile di
chuyn vi tc v (m/s), tn s sng mang l f (Hz), c l tc nh sng (m/s) th dch
chuyn Doppler cc i s l:
c
vf
f
d
= (16.4)
-
d
f = 0 ng vi knh truyn tnh
KFactor: H s K ca knh truyn fading Rician l t s cng sut phn x v khuch tn
trn ng truyn trc tip (line-of-sight), biu din dng tuyn tnh, khng theo dB.
- Gi tr tiu biu i vi knh Rician: K = 1 10.
- Gi tr K = 0 ng vi knh truyn Rayleigh.
ResetBeforeFiltering: L mt bin Boolean, nu bng 1: i tng s c reset trc
khi thc hin lc mt tn hiu. Trong trng hp tn hiu cn x l l mt chui cc vector th
ta s phi thc hin lc nhiu ln. Mun bo m tnh lin tc qua cc ln thc hin, ngha l
gi li cc thng tin trng thi ca i tng, ta phi set thuc tnh ny bng 0. Ngc li nu
khng mun lu cc thng tin trng thi cho ln lc k tip, ta set thuc tnh ny bng 1, hoc
dng lnh reset.
o Bc 3: a tn hiu qua knh truyn bng cch dng hm filter.
Ta thc hin hm filter vi cc thng s nhp l tn i tng knh truyn v tn hiu
pht i.
minh ho phng php m phng knh truyn fading trong MATLAB, chng ta kho st
mt s v d c th sau:
V d 16-3. V cng sut tn hiu b nhiu fading khi truyn qua knh truyn fading
Rayleigh c dch chuyn Doppler cc i bng 100Hz, tn s ly mu tn hiu l 100KHz.
c = rayleighchan(1/10000,100); % Khi to i tng knh truyn
sig = j*ones(2000,1); % Tn hiu pht
y = filter(c,sig); % a tn hiu qua knh truyn.
C % Xem cc thuc tnh ca knh truyn.
% V cng sut tn hiu nhiu theo s mu.
plot(20*log10(abs(y)))
Kt qu thc thi chng trnh:
c =
ChannelType: 'Rayleigh'
Knh truyn v nh gi cht lng knh truyn

238
InputSamplePeriod: 1.0000e-004
MaxDopplerShift: 100
PathDelays: 0
AvgPathGaindB: 0
NormalizePathGains: 1
PathGains: -1.1700+ 0.1288i
ChannelFilterDelay: 0
ResetBeforeFiltering: 1
NumSamplesProcessed: 2000

Hnh 16.3.
V d 16-4. M phng qu trnh truyn tn hiu iu ch DPSK qua knh truyn fading
Rayleigh nh v d 16-3 kt hp vi nhiu AWGN. Tnh v v t l bit li ng vi cc gi tr
SNR khc nhau.
im cn lu vi v d ny l ta phi thc hin hm filter trc khi thc hin hm awgn khi
m phng nh hng kt hp ca nhiu Gauss v fading. Sau y l chng trnh thc hin:
% To mt i tng m t knh truyn Rayleigh .
chan = rayleighchan(1/10000,100);
% To chui d liu pht
M = 2; % S mc ca iu ch DPSK
tx = randint(50000,1,M); % Chui bit ngu nhin
dpskSig = dpskmod(tx,M); % Tn hiu iu ch DPSK
fadedSig = filter(chan,dpskSig); % Truyn qua knh truyn fading
% Tnh BER ng vi cc gi tr khc nhau ca SNR.
Knh truyn v nh gi cht lng knh truyn

239
SNR = 0:2:20; % Khong gi tr SNR tnh theo dB.
for n = 1:length(SNR)
rxSig = awgn(fadedSig,SNR(n)); % Cng nhiu AWGN.
rx = dpskdemod(rxSig,M); % Gii iu ch.
% Tnh BER. B qua mu u tin ng vi iu kin u ca DPSK
[nErrors, BER(n)] = biterr(tx(2:end),rx(2:end));
end
% Tnh BER theo l thuyt.
BERtheory = berfading(SNR,'dpsk',M,1);
% V th kt qu.
semilogy(SNR,BERtheory,'b-',SNR,BER,'r*');
legend('BER ly thuyet','BER thuc nghiem');
xlabel('SNR (dB)'); ylabel('BER');
title(' Truyen tin hieu DPSK qua kenh truyen fading Rayleigh');
Kt qu m phng nh sau:

Hnh 16.4.
I6.3. KNh I80N 040 8II Nhj Fh4N
M hnh knh truyn o bit nh phn l mt m hnh dng m phng cc phng php m
ho sa sai. Cch tc ng ca knh truyn ny i vi mt tn hiu nh phn truyn qua n
l: thc hin o bit tn hiu theo mt xc sut cho trc.
MATLAB thc hin m phng loi knh truyn ny bng cch dng hm bsc vi cc thng
s nhp l tn hiu nh phn truyn qua v xc sut o bit p.
Knh truyn v nh gi cht lng knh truyn

240
Nu mun m phng knh truyn o bit nh phn vi cc tnh cht thng k lin quan n s
bit li trong mt t m, ta c th dng hm randerr. Hm ny to ra mt ma trn gm cc
phn t 0 hoc 1. Nu ta xem mi hng ca ma trn ng vi mt t m th s phn t 1 trong
mi hng s biu din s bit li trong mi t m. Ta c th quy nh s bit li trong mt t m
vi mt xc sut cho trc. V d to ma trn nh phn 5x4 (5 t m 4 bit) sao cho s
lng bit 1 trong mi hng s bng 1 vi xc sut bng 0.3 v bng 2 vi xc sut bng 0.7:
>> f=randerr(3,4,[1,2;0.3,0.7])
f =
f =
0 0 0 1
0 1 1 0
0 1 0 1
V d 16-5. Kho st m chp bng cch s dng m hnh knh truyn o bit nh phn
vi xc sut o bit l 0.01.
t = poly2trellis([4 3],[4 5 17;7 4 2]); % M ho Trellis
msg = ones(10000,1); % D liu m ha
code = convenc(ones(10000,1),t); % M ha bng m chp.
[ncode,err] = bsc(code,.01); % To cc lii bit.
numchanerrs = sum(sum(err)) % Tng s li ca knh truyn
dcode = vitdec(ncode,t,2,'trunc','hard'); % Gii m.
[numsyserrs,ber] = biterr(dcode,msg) % S li sau khi gii m
Kt qu:
numchanerrs =
144
numsyserrs =
28
ber =
0.0028
I6.4. 04Nh 0I4 0h4I L00N0 Ih0N0 q04 M0 Fh0N0 {Fh00N0 Fh4F M0NI
048L0)
Phng php c bn tnh t l li bit hoc t l li k hiu trong mt h thng thng tin s
l m phng vic truyn mt s lng ln cc bit hoc k hiu qua knh truyn, sau so
snh ton b d liu nhn c vi ton b d liu trc khi truyn. Trong l thuyt xc sut
thng k, phng php tnh xc sut da vo cc php th nh trn c gi l phng php
Monte Carlo.
Cc hm biterr v symerr trong MATLAB s so snh hai tp d liu cho trc v tr v s
bit li hoc s k hiu li. Mt s khc nhau gia hai phn t tng ng ca hai tp d liu
(c th l bit hoc k hiu) c tnh l mt li. Thng thng, hai tp d liu kho st l tp
d liu trc khi m ho my pht v tp d liu my thu sau khi gii m.
Kt qu m phng s cng chnh xc nu s lng d liu m phng cng nhiu. C th, ta
nn chn tp d liu ln sao cho c t nht 100 li xy ra.
Knh truyn v nh gi cht lng knh truyn

241
V d 16-6. X l mt chui d liu nh phn: iu ch bng phng php 16-QAM, sau
truyn qua knh truyn c nhiu AWGN vi t s Eb/No = 10dB. Thc hin gii iu ch
v tnh t s bit li ca chui bit thu c.
V d ny l s m rng ca v d 15-2, trong ta thm vo hm to nhiu Gauss awgn v
hm tnh t l li bit biterr.
%% nh ngha cc thng s.
M = 16;
k = log2(M);
n = 3e4;
nsamp = 1;
%% Ngun tn hiu
% To chui d liu nh phn ngu nhin di dng vector ct.
x = randint(n,1); % Chui bit nh phnngu nhin
%% Chuyn i cc bit thnh cc k hiu k bit.
xsym = bi2de(reshape(x,k,length(x)/k).','left-msb');
%% iu ch 16-QAM
y = qammod(xsym,M);
%% Tn hiu pht
ytx = y;
%% Knh truyn
% Truyn tn hiu qua knh truyn AWGN.
EbNo = 10; % n v dB
snr = EbNo + 10*log10(k) - 10*log10(nsamp);
ynoisy = awgn(ytx,snr,'measured');
%% Tn hiu thu
yrx = ynoisy;
%% Gii iu ch
zsym = qamdemod(yrx,M);
%% Chuyn i ngc t cc k hiu thnh chui bit nh phn.
z = de2bi(zsym,'left-msb');
z = reshape(z.',prod(size(z)),1);
%% Tnh BER
% So snh y v z m s bit li v tnh t l li bit
[number_of_errors,bit_error_rate] = biterr(x,z)
Kt qu thc hin on chng trnh trn:
number_of_errors =
80
bit_error_rate =
0.0027
Knh truyn v nh gi cht lng knh truyn

242
Trong v d trn hm biterr tr v s bit li v t l li bit khi so snh hai chui d liu x v
z. Mt cch tng qut, hm ny c th so snh hai ma trn s nguyn bt k c cng kch
thc. Ngoi hai thng s chnh l hai ma trn d liu, cn c thm hai thng s tu chn:
o [num,ratio] = biterr(...,K) so snh hai ma trn vi K l s bit biu din mt
phn t trong ma trn. K phi ln hn hoc bng s bit ti thiu biu din phn t ln nht
ca ma trn.
o [num,ratio] = biterr(...,flag) dng chui k t flag xc nh phng thc so
snh. Nu flag = column-wise th hm biterr s thc hin so snh theo tng ct v
xut kt qu di dng vector hng. Nu flag = row-wise th hm ny s thc hin so
snh theo tng ct v xut kt qu di dng vector ct. Nu flag = overall, hm s
thc hin so snh trn ton b ma trn v nh vy kt qu l mt v hng.
o [num,ratio,individual] = biterr(...) cho php tr v ma trn individual, trong
mi phn t ca n l s bit li gia hai phn t tng ng ca hai ma trn so snh.
V d:
>> A = [1 2 3; 1 2 2];
>> B = [1 2 0; 3 2 2];
>> [Num,Rat]=biterr(A,B,3)
Num =
3
Rat =
0.1667
>> [Num,Rat,Ind] = biterr(A,B,3,'column-wise')
Num =
1 0 2
Rat =
0.1667 0 0.3333
Ind =
0 0 2
1 0 0
Hm symerr tng t nh hm biterr ch khc ch so snh cc k hiu thay v cc bit.
V d sau y minh ho s khc nhau gia t l bit li v t l k hiu li.
>> a = [1 2 3]'; b = [1 4 4]';
>> format rat % Hin th dng t s.
>> [snum,srate] = symerr(a,b)
snum =
2
srate =
2/3
>> [bnum,brate] = biterr(a,b)
bnum =
5
Knh truyn v nh gi cht lng knh truyn

243
brate =
5/9
S bit ti thiu biu din phn t ln nht trong hai ma trn l 3 bit. Cc ma trn u c 3
phn t, do c 3 x 3 = 9 bit. S bit li l 5, gm hai bit li phn t th hai v 3 bit li
phn t th ba.
I6.5. INh I40 504I L0I I8N L Ih0I
Trong qu trnh m phng mt h thng vin thng, ta thng phi i chiu kt qu m
phng vi cc cng thc l thuyt. Trong mt s h thngtiu biu, nhiu cng trnh l thuyt
cung cp cc cng thc tnh t l bit li di dng tng minh. Cc cng thc ny c
xy dng thnh cc hm MATLAB cho php ngi s dng MATLAB c th kim tra li
mt cch nhanh chng chnh xc ca qu trnh m phng.
Bng 16.1. Cc hm tnh xc sut li theo l thuyt
Hm Chc nng
berawgn Xc sut li ca knh truyn AWGN khng m ho
bercoding Xc sut li ca knh truyn AWGN c m ho
berfading Xc sut li ca knh truyn fading Rayleigh khng m ho
bersync Xc sut li ca knh truyn AWGN khng m ho v ng b khng chnh xc
c gi c th tm hiu cch s dng cc hm ny bng cch g lnh help + tn hm ca s
lnh ca MATLAB. Cc thng s chnh cn nhp vo l t s Eb/No, phng php iu ch
cng vi cc thng s tng ng vi n. V d, tnh xc sut li trn knh truyn c Eb/No
= 10dB, phng php iu ch l FSK vi M = 2, gii iu ch ng b, ta g cc dng lnh
sau:
>> ebno = 10;
>> M = 4;
>> berawgn(ebno,fsk,M,coherent)
ans =
7.6892e-006
Sau y l mt v d minh ho cch s dng cc hm ni trn so snh kt qu m phng
vi l thuyt.
V d 16-7. Thc hin m phng knh truyn AWGN khng m ho nh gi t l bit li
cho trng hp iu ch 8-PAM tu theo cc gi tr ca Eb/No. V th BER v so snh vi
th BER l thuyt.
% 1. Tnh xc sut li theo l thuyt.
M = 8; EbNo = [0:13];
ser = berawgn(EbNo,'pam',M).*log2(M);
% V th SER theo l thuyt.
figure; semilogy(EbNo,ser,'r');
xlabel('E_b/N_0 (dB)'); ylabel('Symbol Error Rate');
grid on; drawnow;
% 2. Tnh xc sut li bng cch m phng.
Knh truyn v nh gi cht lng knh truyn

244
n = 10000; % Tng s k hiu c x l
k = log2(M); % S bit trn mt k hiu
snr = EbNo+3+10*log10(k); % i t Eb/No sang SNR
ynoisy=zeros(n,length(snr));
x = randint(n,1,M); % To tn hiu tin tc
y = pammod(x,M); % iu ch
% Truyn tn hiu qua knh truyn AWGN. Lp li vi cc gi tr khc nhau
% ca SNR
for jj = 1:length(snr)
ynoisy(:,jj) = awgn(real(y),snr(jj),'measured');
end
z = pamdemod(ynoisy,M); % Giai dieu che
% Tnh xc sut li k hiu.
[num,rt] = symerr(x,z);
% 3. V th SER m phng trn cng mt th.
hold on; semilogy(EbNo,rt,'b.');
legend('SER ly thuyet','SER mo phong');
title('So snh xc sut li l thuyt v thc nghim');
hold off;
Kt qu m phng nh sau:

Hnh 16.5.
Knh truyn v nh gi cht lng knh truyn

245
I6.6. M0I 50 00N0 00 h0 I80 0 00 Ihj 88
th BER l mt cng c trc quan nh gi cht lng ca mt h thng thng tin, n
biu din s thay i ca xc sut li bit hoc xc sut li k hiu theo cc thng s SNR
hoc Eb/No ca h thng. Thng thng, cc th BER c biu din trn h trc
logarithm, trong trc honh biu din gi tr Eb/No (hoc SNR) theo n v decibel, cn
trc tung biu din xc sut li theo thang logarithm (c s 10). Trong Communication
Toolbox ca MATLAB, ngoi cc cng c tnh xc sut li to ra ngun d liu cho th
BER, cn c cc cng c h tr hiu chnh th BER tng tnh trc quan ca th.
l cc cng c berfit v berconfint.
Cng c curve-fitting: berfit
y l cng c dng hiu chnh th, c s dng khi ta c mt tp hp cc s liu thc
nghim cha hon ho nhng cn phi v mt th BER tng i trn. Hm berfit cho
php ta:
o La chn tt c cc thng s ca qu trnh lm trn th, v d chn trc biu thc ni
suy dng hiu chnh th
o V cc im d liu thc nghim cng vi th hiu chnh
o Ni suy thm cc im trn th nm gia cc im d liu thc nghim lm ng
cong trn hn
o Ly nhng thng tin cn thit ca qu trnh hiu chnh, v d gi tr s ca cc im trn
ng cong hoc cc h s ca a thc ni suy biu din ng cong
Lu : hm berfit thc hin qu trnh ni suy, ch khng phi l ngoi suy. Php ngoi suy
to cc d liu BER nm ngoi khong gi tr thc nghim l khng ng tin cy.
Cng c xc nh khong tin cy ca d liu: berconfint
>> [ber,intv] = berconfint(Nerr,Ntrial,level)
Hm berconfint thc hin tnh ton xc sut li v khong tin cy ca d liu khi thc hin
phng php Monte Carlo vi Ntrial php th v c Nerr li. tin cy c xc nh bi
thng s level. Nu khng nhp thng s ny th gi tr mc nh l 0.95 (95%).
Trong v d di y, ta s thy c ng dng ca cc hm berfit v berconfint v th
BER. Cng trong v d ny, qu trnh m phng s dng khi s bit li t n mt gi tr cho
trc thay v dng khi truyn ht N bit nh cc th d trc.
V d 16-8. Thc hin m phng h thng thng tin DBPSK. ng dng cng c lm trn
th trong khi v th BER.
u tin, ta khi to cc thng s v cc tn hiu m phng cn thit. Hai thng s chnh l
khong gi tr kho st ca Eb/No v s bit li ti thiu phi c trc khi tnh gi tr BER i
vi Eb/No ang xt.
siglen = 1000; % S bit cho mi ln th
M = 2; % DBPSK
EbNomin = 0; EbNomax = 10; % Khong gi tr Eb/No theo dB
numerrmin = 5; % Tnh BER khi s bit li > 5
EbNovec = EbNomin:1:EbNomax;
numEbNos = length(EbNovec); % S gi tr Eb/No
% Cp pht trc cc vector cha cc d liu.
Knh truyn v nh gi cht lng knh truyn

246
ber = zeros(1,numEbNos); % Cc gi tr BER
intv = cell(1,numEbNos); % Dy cc khong tin cy
Tip theo, ta s dng vng lp thc hin nhiu ln qu trnh m phng cho cc gi tr khc
nhau ca Eb/No. Trong mi vng lp li c mt vng lp while bo m qu trnh m
phng vn tip tc cho n khi s bit li vt qu gi tr nh trc. Sau mi vng lp cc
vector ber v intv s c cp nht.
% Lp li vi cc gi tr khc nhau ca Eb/No.
for jj = 1:numEbNos
EbNo = EbNovec(jj);
snr = EbNo; % Dieu che BPSK
ntrials = 0; % S ln thc hin vng lp while bn di
numerr = 0; % S li ng vi gi tr Eb/No ang xt
% Lp li m phng cho n khi s bit li > numerrmin
while (numerr < numerrmin)
msg = randint(siglen, 1, M); % To chui tin tc.
txsig = dpskmod(msg,M); % iu ch
rxsig = awgn(txsig, snr, 'measured'); %Cng nhiu.
decodmsg = dpskdemod(rxsig,M); % Gii iu ch.
newerrs = biterr(msg,decodmsg); % S li trong ln th ny
numerr = numerr + newerrs; % Tng s li ng vi gi tr Eb/No ang xt
ntrials = ntrials + 1; % Cp nht s ln th.
end
% T l li v khong tin cy 98% cho gi tr Eb/No hin ti
[ber(jj), intv1] = berconfint(numerr,(ntrials * siglen),.98);
intv{jj} = intv1; % Lu li khong tin cy
disp(['EbNo = ' num2str(EbNo) ' dB, ' num2str(numerr) ...
' errors, BER = ' num2str(ber(jj))])
end
Sau mi vng lp, trn mn hnh s xut hin dng kt qu tng t nh sau:
EbNo = 7 dB, 9 errors, BER = 0.0045
Cui cng l qu trnh v th BER, trong c s dng hm berfit lm trn th.
% Dng hm berfit lm trn v v th BER.
fitEbNo = EbNomin:0.25:EbNomax; % Cc gi tr ni suy
berfit(EbNovec,ber,fitEbNo);
% V khong tin cy.
hold on;
for jj=1:numEbNos
semilogy([EbNovec(jj) EbNovec(jj)],intv{jj},'g-+');
end
hold off;
Knh truyn v nh gi cht lng knh truyn

247
Kt qu m phng nh sau:

Hnh 16.6.
Trong hnh v trn, hm berfit t to ra cc ch thch gm: Empirical BER (Gi tr BER
thc nghim) v Dbl Exp Plus Const Fit (cho bit loi hm ni suy c s dng).
I6.7. 0I4N 00 M4I { 0I4084M)
Gin mt l mt cng c rt n gin v thun tin kho st cc nh hng ca nhiu
giao thoa lin k t (ISI-Intersymbol Interference) v mt s yu t khc lm gim cht lng
knh truyn. Gin mt c xy dng bng cch v tn hiu thu theo thi gian trong
khong thi gian c nh (thng l mt chu k k hiu), sau khi ht khong thi gian ny,
trc thi gian li quay v im khi u. Nh vy s c nhiu ng cong chng ln ln nhau
trong khong thi gian nh sn ni trn.
Gin mt mang li nhiu thng tin hu ch v tnh cht ca knh truyn. V tr m gin
mt m rng nht s ng vi thi im thc hin ly mu v quyt nh khi phc li tn
hiu tin tc. Mt gin mt m rng c ngha l knh truyn t b nh hng bi nhiu,
ngha l BER thp. Ngc li, nu gin mt khp li th knh truyn b can nhiu ln v t
s BER c gi tr ln.
v gin mt trong MATLAB, ta dng hm eyediagram.
>> eyediagram(X,N,Period,Offset,Plotstring,H);
Trong :
X l tn hiu cn v gin mt, c th c mt trong cc dng format nh trong bng 16.2.
N : s mu tn hiu trong khong thi gian v gin mt
Period: khong thi gian v gin mt l t Period/2 n +Period/2. Gi tr mc
nh l 1.
Knh truyn v nh gi cht lng knh truyn

248
Offset: s th t ca mu nm trung tm ca khong thi gian v (0 < Offset < N).
Gi tr mc nh bng 0.
Plotstring: chui xc nh k hiu v mu sc dng v. Gi tr mc nh l b-.
H: xc nh di tng figure m ta mun v gin mt (mc nh l []).
Bng 16.2. Cc dng format ca tn hiu cn v gin mt
Dng tn hiu Thnh phn In-phase Thnh phn Quadrature
Ma trn thc c hai ct Ct th nht Ct th hai
Vector phc Phn thc Phn o
Vector thc Ni dung ca chnh vector tn hiu Lun lun bng 0
V d 16-9. V gin mt cho tn hiu thu sau khi truyn qua knh truyn c c tnh
raised-cosine, phng php iu ch l 16-QAM.
% nh ngha cc thng s
M = 16; Fd = 1; Fs = 10;
Pd = 100; % S im tnh ton
msg_d = randint(Pd,1,M); % Chui d liu ngu nhin M mc
msg_a = qammod(msg_d,M); % iu ch 16-QAM.
% Gi s knh truyn tng ng vi mt b lc raised cosine.
delay = 3; % Thi gian tr
rcv = rcosflt(msg_a,Fd,Fs,'fir/normal',.5,delay);
% Ct b phn ui ca tn hiu ra.
N = Fs/Fd;
propdelay = delay .* N + 1; % Tr hon truyn ca b lc
rcv1 = rcv(propdelay:end-(propdelay-1),:);
% V gin mt ca tn hiu thu vi offset bng 0
offset1 = 0;
h1 = eyediagram(rcv1,N,1/Fd,offset1);
set(h1,'Name','Gian do mat (offset=0)');
Gin mt thu c nh sau (hnh a):
Knh truyn v nh gi cht lng knh truyn

249

(a) (b)
Hnh 16.7.
Nu thay i gi tr offset bng 2, ta c th nh hnh b.
I6.8. 00 Ihj Fh4N 80 {504II8 FL0I)
th phn b (scatter plot) ca mt tn hiu biu din s phn b cc gi tr ca tn hiu
ti cc thi im quyt nh. Thi im ti u l thi im m gin mt m rng nht.
th phn b cng cho bit cc thng tin v knh truyn. Nu knh truyn khng nhiu, cc gi
tr ca tn hiu s tp trung ti cc im ng vi cc trng thi ca phng php iu ch.
Knh truyn c nhiu cng ln th s phn b ca cc im tn hiu thu cng rng.
v th phn b, ta dng hm scatterplot vi c php nh sau:
>> scatterplot(X,N,offset,plotstring,H)
ngha cc thng s tng t nh hm eyediagram.
V d 16-10. V th phn b cho tn hiu thu tng t v d 16-9.
Phng php thc hin tng t nh v d 16-9, ch cn thay hm eyediagram bng hm
scatterplot.
% nh ngha cc thng s.
M = 16; Fd = 1; Fs = 10; N = Fs/Fd;
Pd = 200; % S im tnh ton
msg_d = randint(Pd,1,M); % Chui d liu ngu nhin
msg_a = qammod(msg_d,M); % iu ch 16-QAM.
msg_a = rectpulse(msg_a,N); % Ly mu ln i vi tn hiu iu ch
Knh truyn v nh gi cht lng knh truyn

250
% Gi s c tnh knh truyn tng ng vi b lc raised-cosine
rcv = rcosflt(msg_a,Fd,Fs);
% V th phn b cho tn hiu thu, b qua 3 k hiu u v 4 k hiu
cui.
rcv_a = rcv(3*N+1:end-4*N,:);
h = scatterplot(rcv_a,N,0,'bx');

(a) (b)
Hnh 16.8.
Kt qu c trnh by hnh 16.8a trn. Trong trng hp offset c chn khng ti u,
v d trong ba dng lnh sau y, hai dng 1 v 2 ln lt minh ho cc trng hp offset
c chn qu tr hoc qu sm. Dng lnh th ba minh ho trng hp ti u. th phn
b c v li nh hnh 16.8b.
hold on;
scatterplot(rcv_a,N,N+1,'r+',h); % Plot +'s
scatterplot(rcv_a,N,N-1,'mx',h); % Plot x's
scatterplot(rcv_a,N,0,'b.',h); % Plot dots
I6.9. 04Nh 0I4 0h4I L00N0 00N0 K Ih04I 5MI4N4LII0 {84N Fh4N I0h)
Phng php nh gi cht lng knh truyn thng qua m phng l phng php thng
dng phn tch hu ht cc h thng vin thng. Tuy nhin, nu knh truyn c t l li bit
thp th nh gi chnh xc cn phi m phng trn mt tp d liu c kch thc kh ln.
iu ny i hi nhiu thi gian thc thi ton b chng trnh m phng. Trong nhng
trng hp ny ta c th s dng k thut bn phn tch (semianalytic) thay v ch dng m
phng. K thut ny cho php rt ra kt qu nhanh hn nhiu so vi phng php s dng m
phng hon ton.
Knh truyn v nh gi cht lng knh truyn

251
K thut bn phn tch l mt s kt hp gia m phng v phn tch nh ga t l bit li
ca mt h thng thng tin. Trong MATLAB, hm semianalytic s gip ngi s dng thc
hin k thut ny.
Tuy nhin, k thut bn phn tch ch thch hp vi cc h thng c cc tnh cht sau:
o Tt c cc hiu ng a ng, nhiu lng t hoc tnh phi tuyn ca mch phi c
kho st trc khi nh gi tc ng ca nhiu.
o My thu phi ng b hon ton vi sng mang t my pht. Cc dng nhiu pha v
timing jitter khng c xt n.
o Vi knh truyn khng nhiu th tn hiu thu khng b li.
o Nhiu trong h thng l nhiu Gauss.
Trnh t thc hin phng php ny nh sau:
o To mt tn hiu tin tc c t nht
L
M k hiu, trong M l s trng thi c th c ca
tn hiu iu ch v L l chiu di p ng xung ca knh truyn. Thng thng ta s dng
mt chui gi ngu nhin c chiu di
L
2
M ) M (log , trong xc sut xut hin bit 0 v 1 l
nh nhau.
o Dng tn hiu ny iu ch mt sng mang cao tn, s dng cc phong php iu ch
bng gc (xem chng 14)
o Lc tn hiu pht bng cc b lc raised cosine hoc Butterworth, Chebychev,... Lu li
tn hiu pht txsig.
o a tn hiu qua knh truyn khng nhiu. Knh truyn c th c cc yu t nh hiu ng
a ng, dch pha, mch phi tuyn, ... nhng khng c nhiu. Lu li kt qu : rxsig.
o Dng hm semianalytic thc hin vic nh gi knh truyn. Hm ny s thc hin lc
tn hiu thu v p dng phn b Gauss trn mi im tn hiu thu tm xc sut li k hiu,
sau chuyn thnh xc sut li bit.
V d 16-11. Dng k thut semianalytic thc hin m phng mt knh thng tin s s
dng iu ch 16-QAM. V th BER v so snh vi l thuyt.
Trong th d ny, ta s thy c trnh t m phng dng phng php bn phn tch. Kt qu
tnh BER s c so snh vi gi tr BER tnh theo cng thc l thuyt.
% Bc 1. To tn hiu tin tc c chiu di >= M^L.
M = 16; % S trng thi ca tn hiu iu ch
L = 1; % Chiu di p ng xung ca knh truyn
msg = [0:M-1 0]; % Thong diep M-ary chieu dai > M^L
% Bc 2. iu ch bng phng php 16-QAM (iu ch bng gc).
modsig = qammod(msg,M);
Nsamp = 16;
modsig = rectpulse(modsig,Nsamp); % nh dng xung vung.
% Bc 3. S dng b lc pht.
txsig = modsig; % Khng dng b lc trong v d ny
% Bc 4. a tn hiu pht qua knh truyn
rxsig = txsig*exp(j*pi/180); % Offset pha tnh
Knh truyn v nh gi cht lng knh truyn

252
% Bc 5. S dng hm semianalytic.
% Chn b lc thu bng cch nhp cc h s ca hm truyn s.
% Trong v d ny, s dng b tch phn l tng
num = ones(Nsamp,1)/Nsamp;
den = 1;
EbNo = [0:20]; % Khong gi tr kho st ca Eb/No
ber = semianalytic(txsig,rxsig,'qam',M,Nsamp,num,den,EbNo);
% Tnh BER theo l thuyt.
bertheory = berawgn(EbNo,'qam',M);
% V th BER theo phng php bn phn tch v theo l thuyt.
figure; semilogy(EbNo,ber,'k*');
hold on; semilogy(EbNo,bertheory,'ro');
title(' th BER theo phng php Semianalytic v theo l thuyt');
legend('Semianalytic','BER ly thuyet','Location','SouthWest');
hold off;

Hnh 16.9.
# Bi tp 16-1.
V th BER ng vi cc gi tr SNR khc nhau khi truyn tn hiu qua knh truyn AWGN
bng hai phng php iu ch QPSK v BPSK. Chui bit d liu c chiu di bng 1000.
# Bi tp 16-2.
Lm li bi tp trn nhng v thm dng sng cc tn hiu cc im khc nhau trong h
thng (ch v cho 10 bit u tin)
# Bi tp 16-3.
Knh truyn v nh gi cht lng knh truyn

253
Lm li v d 16-4 nhng c xt n tr hon knh truyn.
# Bi tp 16-4.
Xt v d 16-4. Vi SNR bng 5dB. Hy thc hin m phng v v dng sng cc tn hiu
trn knh truyn fading cho trong v d 16-4. Phng php iu ch l:
a. BPSK
b. FSK
# Bi tp 16-5.
Kho st phng php m ho BCH (7,4) bng cch s dng m hnh knh truyn o bit nh
phn vi s bit li trong mi t m bng 1 vi xc sut 0.6 v bng 2 vi xc sut 0.3, bng 3
vi xc sut 0.1.
# Bi tp 16-6.
Kho st mt h thng thng tin nh sau:

Lc pht
n
p
Cc k
hiu pht
k
A
Nhiu
n
z
n
x
n
y

Chui k hiu vo l chui 4-PAM vi tp ngun l {-3 -1 1 3}, chiu di 100 k hiu.
B lc sa dng xung l b lc Raised-cosine c p ng xung l:
( )
( )
2
cos /
sin( / )
( ) .
( / )
1 2 /
t T
t T
p t
t T
t T



=



Vi T l chu k k hiu, bng 8000 k hiu/s, tc ly mu 24000Hz, h s roll-off = 0.5.
Tm t l li bit nu nhiu l nhiu Gauss vi variance ln lt l:
a. 0.01 b. 0.1 c. 1
# Bi tp 16-7.
Lm li bi tp 15-5 nhng c kho st nh hng ca nhiu. Xt hai trng hp:
a. Ch c nhiu AWGN
b. Nhiu AWGN v fading Rayleigh (ty chn thng s c th).
# Bi tp 16-8.
V v so snh th BER ca knh truyn AWGN theo ba phong php: l thuyt, m phng
v bn phn tch. Cc gi tr SNR ln lt l 2, 4, 6, 8, 10 dB . Chui bit d liu c chiu di
bng 100000. Cc phng php iu ch c s dng l:
a. BPSK
b. QPSK
c. MSK
# Bi tp 16-9.
Knh truyn v nh gi cht lng knh truyn

254
M phng knh truyn AWGN vi s bit m phng l
6
10 nh gi t l bit li ca cc
phng php iu ch BPSK, QPSK, FSK, MSK, v 16QAM. Cng c nh gi l th
BER.
# Bi tp 16-10.
Lm li v d 16-4 nhng c xt n tr hon knh truyn
# Bi tp 16-11.
M phng knh truyn c nhiu AWGN vi cc gi tr Eb/No bng 0, 2, 4 dB v v gin
mt cho mi trng hp. Phng php iu ch l 16QAM.
# Bi tp 16-12.
V gin mt cho cc trng hp nhiu khc nhau vi h thng cho trong bi tp 16-6.
# Bi tp 16-13.
Vi Eb/No bng 2 dB, hy v th phn b cho cc phng php iu ch 8PSK v 8QAM.
Qu trnh m phng ch kt thc khi s bit li ln hn 100.
Knh truyn v nh gi cht lng knh truyn

255
Danh sch cc hm c gii thiu trong chng 16
Cc hm m phng knh truyn
awgn To nhiu AWGN v cng vo tn hiu pht
bsc M phng knh truyn o bit nh phn
copy Sao chp mt i tng knh truyn fading
randn To ma trn ngu nhin c trung bnh bng 0 v phng sai bng 1
rayleighchan To mt i tng m t knh truyn fading Rayleigh
reset Reset cc thuc tnh ca mt i tng knh truyn fading
ricianchan To mt i tng m t knh truyn fading Rician
wgn To ma trn nhiu ngu nhin
Cc hm nh gi cht lng knh truyn
berawgn Xc sut li ca knh truyn AWGN khng m ho (theo l thuyt)
bercoding Xc sut li ca knh truyn AWGN c m ho (theo l thuyt)
berconfint Tnh xc sut li vi tin cy cho trc
berfading Xc sut li ca knh truyn fading khng m ho (theo l thuyt)
berfit V v lm trn th BER t cc gi tr thc nghim th
bersync Xc sut li ca knh truyn AWGN khng m ho, ng b khng chnh xc
biterr Tnh xc sut li bit
eyediagram V gin mt
scatterplot V th phn b
semianalytic nh gi knh truyn theo phng php semianalytic v tr v xc sut li
symerr Tnh xc sut li k hiu

M ha knh truyn

256
Chng 17
I7. Na N0a kNN T80N
M ho sa sai l k thut pht hin cc li xut hin khi d liu c truyn t my pht n
my thu, ng thi c th sa cc li ny thng tin khng b sai lch. Ni dung c bn ca
cc k thut m ho l: bn cnh cc bit hay k hiu mang thng ip cn truyn i, b m
ho s pht thm mt hoc nhiu k hiu d tha c quan h vi cc k hiu mang tin. B
gii m s da vo cc k hiu d tha ny pht hin cc li trong chui k hiu nhn
c v c th sa cc li ny.
Cho n nay cc nh nghin cu tm ra rt nhiu k thut m ho sa sai khc nhau, nhng
nhn chung c hai nhm chnh l m khi v m chp.
I7.I. M4 Kh0I
M khi l mt trng hp c bit ca m ho sa sai. K thut m khi thc hin php nh
x t mt s lng c nh cc k hiu thng tin thnh mt s c nh cc k hiu ca t m
c m ho. B m ho s x l mi khi d liu mt cch c lp. N l mt thit b
khng nh.
Cc k thut m khi tuyn tnh c phn chia thnh cc loi theo s di y:

Hnh 17.1. Phn loi m khi
Di y l danh sch cc hm c MATLAB cung cp thc hin cc k thut m khi
tuyn tnh nu trn:
Bng 17.1. Cc hm MATLAB thc hin m khi tuyn tnh
K thut m ho Danh sch cc hm MATLAB
M khi tuyn tnh
encode, decode, gen2par, syndtable
M vng
encode, decode, cyclpoly, cyclgen, gen2par, syndtable
M BCH
bchenc, bchdec, bchgenpoly
M Hamming
encode, decode, hammgen, gen2par, syndtable
M Reed-Solomon
rsenc, rsdec, rsgenpoly, rsencof, rsdecof
Cc hm ny thc hin cc tc v sau:
o M ho v gii m mt thng ip dng mt trong cc k thut m ho nu trn.
M ha knh truyn

257
o Xc nh cc c trng ca k thut m ho tng ng, v d kh nng sa li hoc chiu
di hp l ca thng ip, ...
o Tnh ton cc yu t ca tng k thut m ho, bao gm bng gii m, a thc sinh, ma
trn kim tra, chuyn i gia a thc sinh v ma trn kim tra,...
Trong k thut m khi tuyn tnh, mi thng ip s c chia thnh cc khi nh gm k k
hiu, mi khi ny s c chn thm vo cc k hiu c mt t m chiu di n k hiu.
Ta gi k l chiu di phn thng ip, n l chiu di t m, v php m ho ny c k hiu
l m [n,k].
I7.I.I. 8I0 0IN M0I Fh4N I0 I80N0 I800N0 04L0I5
V l thuyt trng Galois l c s ca cc k thut m ho sa sai nn trc tin cn gii
thiu cch biu din mt phn t trong trng Galois khi s dng MATLAB.
Nhc li mt s thut ng c bn c lin quan:
Mt phn t nguyn (primitive element) ca trng GF(
m
2 ) l mt phn t sinh ca mt
nhm cyclic cc phn t khc khng trong GF(
m
2 ). Ni cch khc, mi phn t khc khng
ca trng GF(
m
2 ) u c th biu din di dng mt lu tha c s nguyn ca phn t
nguyn ni trn.
Mt a thc nguyn (primitive polynomial) ca trng GF(
m
2 ) l mt a thc ti tiu ca
mt phn t nguyn no trong GF(
m
2 ). l mt a thc vi cc h s nh phn c bc
nh nht (khc 0) nhn phn t nguyn lm nghim trong GF(
m
2 ). Mt h qu rt ra t nh
ngha ny, l: a thc nguyn s c bc bng m v l a thc ti gin.
Trong MATLAB, biu din mt dy Galois, ta c th dng hm gf. Hm ny to ra mt
bin m MATLAB xem nh l mt dy Galois, thay v l mt dy cc s nguyn bnh
thng. Do cc php ton m MATLAB thc hin trn dy ny l cc php ton trong
trng Galois. Hm gf cn c cung cp cc thng s nhp nh sau:
o D liu ca trng Galois, x, l mt dy cc s nguyn nm trong khong 0 n
m
2 -1.
o Mt s nguyn m cho bit x thuc trng GF(
m
2 ). Gi tr hp l ca m l t 1 n 16.
Thng s ny khng bt buc phi c, trong trng hp khng c th xem nh n nhn gi tr
bng 1 (trng GF(2)).
o Mt s nguyn dng cho bit ta s dng a thc nguyn no biu din x. Thng s
ny cng khng nht thit phi c.
V d 17-1. To mt dy Galois trong trng GF(16) bng 2 cch:
1. Dng a thc nguyn mc nh ca MATLAB
2. Dng a thc nguyn 1
3 4
+ + D D
>> x=[0:15];
>> a=gf(x,4) % To dy Galois 16 phn t trong trng GF(16)
% a thc nguyn mc nh
a = GF(2^4) array. Primitive polynomial = D^4+D+1 (19 decimal)
Array elements =
Columns 1 through 13
0 1 2 3 4 5 6 7 8 9 10 11 12
M ha knh truyn

258
Columns 14 through 16
13 14 15
>> b=gf(15,4); % To mt dy Galois 15 phn t trong GF(16)
>> c=gf(x,4,25) % To dy Galois 16 phn t trong GF(16)
% ... vi a thc nguyn D^4 + D^3 + 1 (25 = 11001)
c = GF(2^4) array. Primitive polynomial = D^4+D^3+1 (25 decimal)
Array elements =
Columns 1 through 13
0 1 2 3 4 5 6 7 8 9 10 11 12
Columns 14 through 16
13 14 15
I7.I.2. M4 80-50L0M0N
M Reed-Solomon s dng cc k hiu m bit thay v dng cc bit. Mt thng ip cn m
ho bi m Reed-Solomon [n,k] s c biu din bi mt dy Galois k ct trong trng
Galois GF(
m
2 ). Mi phn t ca dy l mt s nguyn trong khong t 0 n 1 2
m
. Nh
vy, t m tng ng vi thng ip ny s c biu din bng mt dy Galois n ct trong
trng Galois GF(
m
2 ). Chiu di n ca t m nm gia 3 v 1 2
m
.
V d:
>> n=7;k=3;
>> msg = gf([1 6 4; 0 4 3],3); % Thng ip l 1 dy Galois trong trng
GF(8).
Cc thng s ca m Reed-Solomon:
Gi tr cho php ca cc thng s cho m Reed-Solomon i vi MATLAB c m t trong
bng di y:
Bng 17.2. Gi tr cho php ca cc thng s m Reed-Solomon trong MATLAB
K hiu ngha Gi tr hoc phm vi bin thin
m S bit trn mt k hiu S nguyn t 3 n 16
n S k hiu ca mt t m
S nguyn t 3 n
m
2 -1
k S k hiu ca mt mu tin S nguyn dng nh hn n, sao cho n k l s chn
t Kh nng sa li ca b m (n k)/2
a thc sinh:
m ho mt thng ip, ta phi da trn mt a thc sinh cho trc. i vi m Reed-
Solomon, MATLAB cung cp sn cc a thc sinh mc nh tu theo gi tr [n,k]. Tuy nhin,
ngi s dng cng c th to mt a thc sinh theo mnh, hoc thc hin cc thao tc trn
cc a thc sinh bng cch dng hm rsgenpoly. Hm ny tr v mt vector hng lit k cc
h s ca a thc sinh theo th t s m gim dn. a thc sinh ny c dng
) )...( )( (
2 K N
A X A X A X

, trong A l mt nghim ca mt a thc nguyn mc nh
ca trng GF(N+1) (N =
M
2 -1). Ngoi ra, hm ny cn cho bit kh nng sa li T ca b
m. C php nh sau:
M ha knh truyn

259
>> [genpoly,T] = rsgenpoly(N,K,prim_poly,B)
Ngoi hai thng s c bn ca b m l N v K, ngi s dng c th cung cp thm hai
thng s (khng bt buc):
o prim_poly: xc nh a thc nguyn trong trng GF(N+1) nhn A l nghim thay v
dng a thc nguyn mc nh ca MATLAB. prim_poly l mt s nguyn m biu din
nh phn ca n chnh l cc h s ca a thc nguyn ni trn theo th t s m gim dn (v
d: prim_poly = 13 =
2
1101 s biu din a thc nguyn 1
2 3
+ + D D )
o B: nu cung cp thm thng s ny th hm rsgenpoly s tr v a thc
) )...( )( (
1 1 + +

K N B B B
A X A X A X (B l mt s nguyn).
V d:
>> r = rsgenpoly(15,13)
r = GF(2^4) array. Primitive polynomial = D^4+D+1 (19 decimal)
Array elements =
1 6 8
tr v a thc
3 2 2
) ( A X A A X + + + vi A l nghim ca a thc nguyn trong GF(16).
M ho v gii m Reed-Solomon:
m ho mt thng ip msg dng b m Reed-Solomon [n,k], ta s dng hm rsenc vi
c php sau:
>> code = rsenc(msg,n,k,genpoly,paritypos)
genpoly v paritypos l hai thng s khng bt buc; genpoly l mt vector hng gm
cc h s ca a thc sinh ca php m ho, paritypos cho bit v tr ca cc k hiu kim
tra thm vo thng ip l u (beginning) hay cui (end). Gi tr mc nh l
end.
Thng ip m ho s c gii m bng hm rsdec:
>> [decoded,cnumerr,ccode] = rsdec(code,n,k,genpoly,paritypos)
decoded l mt dy Galois biu din thng ip gii m. cnumerr l mt vector ct,
mi phn t ca n l s li c sa khi gii m hng tng ng trong thng ip m
ho. Nu s li ln hn (n-k)/2, b m khng c kh nng sa li. Khi , s li tr v l -1
v decoded s ly hng tng ng ca code v b i n-k k hiu cui. ccode c cng format
nh code, n biu din thng ip m ho chnh xc (tc l dy code sau khi sa nhng
ch sai). Nu b m khng sa li c hng no th trong dy ccode, hng s khng
thay i so vi dy code.
Sau y l mt s v d minh ho vn m ho v gii m Reed-Solomon:
V d 17-2. M ho mt thng ip gm 4 t bng m Reed-Solomon [7,3]. To li ngu
nhin v cng vo thng ip m ho. Gii m v so snh vi thng ip ban u.
Trong th d ny ta to cc li ngu nhin nhng tho mn iu kin tng s li trong mi
hng ng bng t = (n k)/2 = 2 li. Nh vy b m c kh nng sa tt c cc li sai.
m = 3; % S bit trn mt k hiu
n = 2^m-1; k = 3; % Chiu di t m v chiu di thng ip
t = (n-k)/2; % Kh nng sa li ca b m
M ha knh truyn

260
nw = 4; % Tng s t ca thng ip
msgw = gf(randint(nw,k,2^m),m); % To thng ip ngu nhin
genpoly = rsgenpoly(n,k); % To a thc sinh
c = rsenc(msgw,n,k,genpoly); % M ho d liu.
noise = (1+randint(nw,n,2^m-1)).*randerr(nw,n,t); % t li trn mi hng
cnoisy = c + noise; % Cng nhiu vo m.
[dc,nerrs,corrcode] = rsdec(cnoisy,n,k,genpoly); % Gii m.
% Kim tra xem b gii m c hot ng tt khng.
isequal(dc,msgw) & isequal(corrcode,c)
nerrs % S li c sa.
msgw % Thng ip ban u
cnoisy % Thng ip m ho b li
corrcode % Thng ip m ho ng
dc % Thng ip gii m
Kt qu xut hin trn ca s lnh ca MATLAB nh sau:
ans =
1
nerrs =
2
2
2
2
msgw = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
Array elements =
7 7 6
1 6 3
4 3 4
3 0 6
cnoisy = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
Array elements =
0 7 6 4 4 5 4
1 1 0 6 4 3 1
4 3 4 5 2 6 2
3 0 6 5 5 5 3
corrcode = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
Array elements =
7 7 6 4 6 5 4
1 6 3 6 4 3 1
4 3 4 5 3 2 2
3 0 6 0 5 6 3
M ha knh truyn

261
dc = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
Array elements =
7 7 6
1 6 3
4 3 4
3 0 6
V d sau minh ho trng hp b m khng c kh nng sa li:
V d 17-3. M ho mt thng ip gm 3 t bng m Reed-Solomon [7,3].To li sao cho
b m khng c kh nng sa li. Gii m v so snh vi thng ip ban u.
n=7; k=3; % Chiu di t m v thng ip
m=3; % S bit trn mt k hiu
msg = gf([7 4 3;6 2 2;3 0 5],m) % Thng ip gm 3 t
code = rsenc(msg,n,k); % M ho
% To 1 li t th 1, 2 li t th 2, 3 li t th 1
errors = gf([3 0 0 0 0 0 0;4 5 0 0 0 0 0;6 7 7 0 0 0 0],m);
codeNoi = code + errors
[dec,cnumerr,ccode] = rsdec(codeNoi,n,k) % Gii m sai: cnumerr(3)= -1
Kt qu thc hin chng trnh:
msg = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
Array elements =
7 4 3
6 2 2
3 0 5
codeNoi = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
Array elements =
4 4 3 7 0 0 4
2 7 2 7 6 7 3
5 7 2 5 6 0 6
dec = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
Array elements =
7 4 3
6 2 2
5 7 2
cnumerr =
1
2
-1
ccode = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
Array elements =
7 4 3 7 0 0 4
M ha knh truyn

262
6 2 2 7 6 7 3
5 7 2 5 6 0 6
Hng th 3 b sai: hng th 3 ca dec chnh l 3 phn t u ca hng th 3 ca code, hng
th 3 ca ccode cng l hng th 3 ca code.
I7.I.3. M4 80h
Biu din thng ip v t m i vi m BCH:
Mun m ho mt thng ip bng m BCH th trc ht thng ip phi c biu din
bng mt dy Galois nh phn (trng GF(2)) gm k ct. Tng ng vi thng ip ny l t
m c biu din bng mt dy Galois nh phn n ct. Mi mt dng ca dy Galois ny
ng vi mt t ca thng ip.
i vi m BCH, n phi l mt s nguyn c dng 1 2
m
, vi m l mt s nguyn ln hn 2;
k l mt s nguyn nh hn n, v vi mi n, k ch c th nhn mt vi gi tr. Cc gi tr cho
php ca k tu theo n c trnh by trong bng sau vi cc gi tr n < 1000.
Bng 17.3. Cc gi tr ca n v k i vi m BCH
Gi tr ca n Cc gi tr cho php ca k
7 4
15 5, 7, 11
31 6, 11, 16, 21, 26
63 7, 10, 16, 18, 24, 30, 36, 39, 45, 51, 57
127 8, 15, 22, 29, 36, 43, 50, 57, 64, 71, 78, 85, 92, 99
255 9, 13, 21, 29, 37, 45, 47, 55, 63, 71, 79, 87, 91, 99, 107, 115, 123, 131, 139, 147, 155, 163,
171, 179, 187
511
10, 19, 28, 31, 40, 49, 58, 67, 76, 85, 94, 103, 112, 121, 130, 139, 148, 157, 166, 175, 184,
193, 202, 211, 220, 229, 238, 241, 250, 259, 268, 277, 286, 295, 304, 313, 322, 331, 340,
349, 358, 367, 376, 385, 394, 403, 412, 421, 430, 439, 448, 457, 466, 475, 484, 493, 502
M ho v gii m BCH:
m ho v gii m thng ip dng m BCH ta s dng hai hm bchenc v bchdec vi c
php tng t nh cc hm m ho v gii m Reed-Solomon, ch khc ch cc thng ip
v t m l cc dy Galois trong trng GF(2) thay v GF(
m
2 ).
>> code = bchenc(msg,n,k)
>> [decoded,cnumerr,ccode] = bchdec(code,n,k,paritypos)
Hm bchgenpoly to ra a thc sinh cho m BCH [n,k] ng thi tr v kh nng sa li t
ca b m.
>> [genpoly,t] = bchgenpoly (n,k,prim_poly)
V d 17-4. Lm li v d 17-2 vi phng php m ho c s dng l BCH [15,5].
n = 15; k = 5; % Chiu di t m v thng ip
[gp,t] = bchgenpoly(n,k); % t l kh nng sa li.
nw = 4; % Tng s t ca thng ip
msgw = gf(randint(nw,k)) % To thng ip ngu nhin
M ha knh truyn

263
c = bchenc(msgw,n,k); % M ho d liu.
noise = randerr(nw,n,t); % Mi hng c t li, nhiu l ma trn nh phn
cnoisy = c + noise % Cng nhiu vo cc t m.
[dc,nerrs,corrcode] = bchdec(cnoisy,n,k) % Gii m thng ip.
% Kim tra hot ng ca b gii m.
chk2 = isequal(dc,msgw) & isequal(corrcode,c)
nerrs % S li c sa ng vi mi t ca thng ip.
Kt qu thc hin chng trnh nh sau (msgw: thng ip gc, cnoisy: thng ip m ho
b li, dc: thng ip sau khi gii m):
msgw = GF(2) array.
Array elements =
1 1 1 0 1
1 0 1 1 1
0 1 1 0 0
1 1 1 0 0
cnoisy = GF(2) array.
Array elements =
Columns 1 through 13
1 0 1 0 0 0 1 1 0 0 1 0 1
1 0 1 0 1 1 0 0 0 1 1 1 0
0 1 1 0 0 1 0 0 0 1 0 1 1
1 1 1 0 0 1 0 1 0 1 0 0 0
Columns 14 through 15
0 1
0 1
1 0
1 1
dc = GF(2) array.
Array elements =
1 1 1 0 1
1 0 1 1 1
0 1 1 0 0
1 1 1 0 0
nerrs =
3 3 3 3
corrcode = GF(2) array.
Array elements =
Columns 1 through 13
1 1 1 0 1 0 1 1 0 0 1 0 0
1 0 1 1 1 0 0 0 0 1 0 1 0
M ha knh truyn

264
0 1 1 0 0 1 0 0 0 1 1 1 1
1 1 1 0 0 0 0 1 0 1 0 0 1
Columns 14 through 15
0 1
0 1
0 1
1 0
chk2 =
1
nerrs =
3 3 3 3
I7.I.4. M4 Kh0I I0N INh
Ngoi m Reed-Solomon v m BCH, cc loi m khi tuyn tnh cn li, bao gm m vng,
m Hamming c cch biu din gn ging nhau trong MATLAB. Do trong phn ny
chng ta s kho st chung cc loi m ny.
Biu din m khi tuyn tnh: cc t m v thng ip c th c biu din bi mt trong
ba dng sau y:
o Dng vector nh phn: mt thng ip c th c biu din bng mt vector m cc phn
t ca n l cc bit 0 hoc 1. Vi php m ho [n,k], thng ip s c chia thnh cc vector
k phn t, mi vector ny c m ho to thnh mt vector t m gm n phn t. Cui
cng, thng ip m ho l vector nh phn c ghp bi cc vector t m ny.
o Dng ma trn nh phn: thng ip gc v thng ip m ho c t chc di dng ma
trn cc s nh phn. Mi hng ca ma trn ng vi mt t ca thng ip hoc t m tng
ng ca n. Nh vy, vi php m ho [n,k], thng ip gc s c biu din bng ma trn
nh phn gm k ct cn thng ip m ho c biu din bng ma trn nh phn n ct. Cc
bit parity nm cc v tr u ca mi hng.
o Dng vector thp phn: cc thng ip v t m cng c th biu din di dng mt
vector m mi phn t ca n l biu din thp phn ca cc bits trong mt t ca thng ip
hoc cc bits ca mt t m.
Lu : nu
n
2 hay
k
2 qu ln, ta nn dng dng vector nh phn thay v dng vector thp
phn, v v bn cht, cc hm m ho c thc hin trn cc bit nh phn, v ta c th gp
phi sai s khi chuyn i t mt s nh phn c nhiu bit thnh s thp phn.
Ngoi ra, cn lu l nu dng dng vector thp phn th hm m ho encode s coi bit tn
cng bn tri l bit c trng s thp nht.
Cc thng s ca m khi tuyn tnh: bao gm ma trn sinh, ma trn kim tra, bng gii m
v a thc sinh.
o Ma trn sinh: qu trnh m ho mt thng ip bng m khi tuyn tnh [n,k] c thc
hin nh mt ma trn sinh G c kch thc k x n. Mi t m l mt vector kch thc 1 x n,
kt qu ca php nhn vector kch thc 1x k biu din thng ip vi ma trn G. Nu G c
dng [
k
I P] hoc [P
k
I ], trong P l mt ma trn kch thc k x (n-k) cn
k
I l ma trn n
v cp k th G c gi l ma trn sinh dng chnh tc.
M ha knh truyn

265
o Ma trn kim tra: gii m mt thng ip c m ho bng m khi tuyn tnh [n,k],
ta da vo mt ma trn kch thc (n-k) x n, gi l ma trn kim tra H. Ma trn ny tho mn
phng trnh G.
T
H = 0 (mod 2), vi G l a thc sinh cn
T
H l ma trn chuyn v ca H.
Nu G = [
k
I P] th H = [-
T
P
k n
I

]; tng t, nu G = [P
k
I ] th H = [
k n
I

-
T
P ]. i vi m
nh phn th du tr trc
T
P khng c ngha v -1 = 1 (mod 2).
o a thc sinh (i vi m vng): m vng c mt tnh cht i s c bit, l: qu trnh
m ho c th c xc nh hon ton bi mt a thc trong trng GF(2), gi l a thc
sinh. l mt a thc bc n k v l c ca a thc
n
X - 1.
Trong MATLAB, hm cyclpoly c dng to ra cc a thc sinh cho m vng [n,k] :
>> pol = cyclpoly(n,k,opt)
Hm ny tr v mt vector nh phn gm cc h s ca a thc sinh lit k theo th t tng
dn. opt l mt thng s ph, c th nhn cc gi tr sau
Nu opt = min : to a thc sinh c trng s (tc s cc h s bng 1) nh nht.
Nu opt = max : to a thc sinh c trng s ln nht.
Nu opt = all : to tt c cc a thc sinh c th, mi a thc c biu din trn mt
hng.
Nu opt = L : to tt c a thc sinh c trng s bng L.
Nu khng c a thc no tho iu kin rng buc th pol = [].
V d:
>> genpoly=cyclpoly(7,3,'all')
genpoly =
1 0 1 1 1
1 1 1 0 1
Lnh trn to ra hai a thc sinh:
4 3 2
1 X X X + + + v
4 2
1 X X X + + + . Ta c cng kt qu
nu dng cyclpoly(7,3,4).
Ma trn sinh H v ma trn kim tra G c to bng cc hm hammgen (m Hamming) v
cyclgen (m vng):
>> [H, G, k] = cyclgen (n, p, opt)
vi p l a thc sinh ca m vng, opt l mt thng s khng bt buc cho bit ma trn kim
tra H c tnh h thng (tc l c th vit di dng [
T
P
k n
I

] hoc [
k n
I


T
P ])hay khng.
Nu opt = system (y l trng hp mc nh) th H c tnh h thng, ngc li nu
opt = nonsys th H khng c tnh h thng.
>> [H, G, n, k] = hammgen (m)
>> [H, G, n, k] = hammgen (m, p)
trong m l s nguyn 3 v n =
m
2 -1, k =
m
2 - m 1; p l mt a thc nguyn trong
GF(2).
V d:
>> [parmat,genmat] = hammgen(3)
parmat =
M ha knh truyn

266
1 0 0 1 0 1 1
0 1 0 1 1 1 0
0 0 1 0 1 1 1
genmat =
1 1 0 1 0 0 0
0 1 1 0 1 0 0
1 1 1 0 0 1 0
1 0 1 0 0 0 1
>> genpoly = cyclpoly(7,3);
>> [parmat,genmat] = cyclgen(7,genpoly)
parmat =
1 0 0 0 1 1 0
0 1 0 0 0 1 1
0 0 1 0 1 1 1
0 0 0 1 1 0 1
genmat =
1 0 1 1 1 0 0
1 1 1 0 0 1 0
0 1 1 1 0 0 1
Ta cng c th chuyn i gia ma trn sinh v ma trn kim tra bng cch dng hm
gen2par:
>> H = gen2par(G)
V d:
>> genmat = [1 0 0 1 0; 0 1 0 1 1; 0 0 1 0 1];
>> parmat = gen2par(genmat)
parmat =
1 1 0 1 0
0 1 1 0 1
>> genmat1=gen2par(parmat)
genmat1 =
1 0 0 1 0
0 1 0 1 1
0 0 1 0 1
o Bng m sa sai (syndrome): bng m sa sai c b gii m dng sa cc li c th
gp phi trong qu trnh truyn. Mi bng m l mt ma trn n ct v
k n
2 hng, mi hng l
mt vector sai ng vi mt t m nhn c. Vi m Hamming, s hng ca bng m l n +
1, cho php sa tt c cc li n trong mi t m.
Vi mt ma trn kim tra cho trc, c th to ra bng m sa sai tng ng bng cch dng
hm syndtable.
>> t = syndtable(h)
M ha knh truyn

267
V d 17-5. S dng bng syndrome kim tra v sa li khi gii m thng ip m ho
bng m Hamming [7,4].
Phng php sa li nh sau: gi s vector biu din thng ip nhn c l r. Ta tnh
vector syndrome tng ng bng cch nhn vector r vi chuyn v ca ma trn kim tra: s =
r.
T
H . i vector syndrome thnh s thp phn. N s cho bit v tr ca vector sai tng ng
trong bng syndrome. Cui cng, ly vector sai cng vi vector thu, chnh l thng ip
c sa li.
% S dng m Hamming [7,4].
m = 3; n = 2^m-1; k = n-m;
parmat = hammgen(m); % To ma trn kim tra.
trt = syndtable(parmat); % To bng gii m syndrome.
recd = [1 0 0 1 1 1 1] % Gi s y l vector nhn c.
syndrome = rem(recd * parmat',2); % Tnh syndrome
syndrome_de = bi2de(syndrome,'left-msb'); % i sang s thp phn.
disp(['Syndrome = ',num2str(syndrome_de),...
' (decimal), ',num2str(syndrome),' (binary)'])
corrvect = trt(1+syndrome_de,:) % Vector sai
% T m ng:
correctedcode = rem(corrvect+recd,2)
Kt qu:
recd =
1 0 0 1 1 1 1
Syndrome = 3 (decimal), 0 1 1 (binary)
corrvect =
0 0 0 0 1 0 0
correctedcode =
1 0 0 1 0 1 1
M ho v gii m vi cc loi m khi tuyn tnh:
Hm encode thc hin m ho cc loi m khi tuyn tnh, m vng v m Hamming. Vi m
khi tuyn tnh, cn cung cp ma trn sinh genmat; vi m Hamming c th (khng nht
thit) cung cp a thc nguyn p_poly tng ng; vi m vng, cn cung cp a thc sinh
cyc_poly cho b m.
>> [code, added] = encode(msg, n, k, linear, genmat)
>> [code, added] = encode(msg, n, k, linear/decimal, genmat)
>> [code, added] = encode(msg, n, k, hamming, p_poly)
>> [code, added] = encode(msg, n, k, hamming/decimal, p_poly)
>> [code, added] = encode(msg, n, k, cyclic, cyc_poly)
>> [code, added] = encode(msg, n, k, cyclic/decimal, cyc_poly)
added l s ct phi thm vo ma trn msg msg c kch thc va tin hnh m
ho.
M ha knh truyn

268
Hm decode thc hin gii m thng ip m ho bng cc m khi tuyn tnh ni trn.
Ngoi cc thng s ging nh i vi hm encode, c th a thm bng gii m syndrome
sa li cho thng ip. Nu khng c bng gii m, hm decode khng sa li nhng c
kh nng nh du cc v tr li pht hin c. V d:
>> [msg, err, ccode, cerr] = decode(code, n, k, cyclic, cyc_poly,
dec_table)
>> [msg, err, ccode, cerr] = decode(code, n, k, linear, genmat,
dec_table)
trong , err l tng s li pht hin c, ccode l t m c sa sai, cerr l ma
trn xc nh cc v tr li. Nu s li vt qu kh nng sa li ca b m th err s c gi tr
m.
V d 17-6. S dng m khi tuyn tnh [4,2] m ho v gii m mt thng ip c th.
Trong th d ny, ta to mt thng ip gm 3 t msg = [0 1; 0 0; 1 0], m ho, cng nhiu
ngu nhin v gii m. Kt qu di y cho thy thng ip b sai mt li t th 3 v b
gii m sa c li ny.
n = 4; k = 2;
genmat = [[1 1; 1 0], eye(2)]; % Ma trn sinh
msg = [0 1; 0 0; 1 0]; % Thng ip gm 3 t, mi t 2 bit
% To ba t m, mi t 4 bit.
code = encode(msg,n,k,'linear',genmat);
noisycode = rem(code + randerr(3,4,[0 1;.7 .3]),2); % Cng nhiu.
trt = syndtable(gen2par(genmat)); % To bng gii m syndrome
% Gii m, sa sai v nh du cc v tr b sai.
[newmsg,err,ccode,cerr] = decode(noisycode,n,k,'linear',genmat,trt)
err_words = find(err~=0) % Xc nh t b li.
Kt qu:
newmsg =
0 1
0 0
1 0
err =
0
0
1
ccode =
1 0 0 1
0 0 0 0
1 1 1 0
cerr =
0
0
M ha knh truyn

269
1
err_words =
3
V d 17-7. S dng m vng [4,2] m ho v gii m mt thng ip c th.Gi s
bng gii m l ma trn 0.
n = 4; k = 2;
genpoly = [1 0 1]; % a thc sinh 1 + x^2
msg = [0 1; 0 0; 1 0];
code = encode(msg,n,k,'cyclic',genpoly);
noisycode = rem(code + randerr(3,4,[0 1;.7 .3]),2);
trt = zeros(2^(n-k),n); % Khng sa li
[newmsg,err,ccode,cerr] = decode(noisycode,n,k,'cyclic',genpoly,trt)
err_words = find(err~=0) % Xc nh t b li.
Kt qu nh sau:
newmsg =
0 1
0 0
0 0
err =
0
0
-1
ccode =
0 1 0 1
0 0 0 0
0 0 1 0
cerr =
0
0
-1
err_words =
3
Trong trng hp ny, t th 3 c 2 li, vt qu kh nng sa li ca b m.
I7.2. M4 0h4F
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 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 ph thuc vo cc k hiu ca
cc thng ip c m ho trc .
M ha knh truyn

270
MATLAB cung cp y cc cng c thc hin m chp k c thun ln hi tip. M
chp c th c m t di dng cu trc li (trellis) hoc tp cc a thc sinh. Gii thut
m MATLAB s dng l gii thut Viterbi, c th gii m bng quyt nh cng (hard-
decision) hay quyt nh mm (thch nghi, soft-decision).
I7.2.I. 04N0 04 Ih00 004 80 M4 h04 0h4F
Dng a thc ca b m ho chp m t cc kt ni gia cc thanh ghi dch v cc b cng
modulo 2. V d, hnh v sau m t mt b m ho chp thun c mt ng vo, 2 ng ra v 2
thanh ghi dch.

Hnh 17.2. S m t b m ho dng a thc
Ni chung, m t b m ho chp di dng a thc c ngha l xc nh cc thnh phn ca
n, bao gm: cc chiu di gii hn, cc a thc sinh, v a thc hi tip (ch c b m ho
chp hi tip).
Cc chiu di gii hn: biu din bng mt vector c chiu di bng s ng vo, mi phn
t ca n cho bit s bit c cha trong mi thanh ghi dch, k c cc bit ng vo hin ti.
Chng hn trong hnh v trn, chiu di gii hn bng 3 (mt v hng) v ch c mt ng vo
v tng s bit cha trong thanh ghi dch bng 2 + 1 bit vo = 3 bit.
Cc a thc sinh: nu s m ho gm c k ng vo v n ng ra th ma trn sinh ca b
m s c kch thc k x n. Phn t nm hng th i v ct th j ca ma trn cho bit tc dng
ca ng vo th i i vi ng ra th j.
Vi cc bit h thmg ca b m ho hi tip c tnh h thng, cc phn t tng ng ca ma
trn sinh c ly t cc phn t tng ng ca vector hi tip.
Trong cc trng hp khc, phn t hng i ct j c xc nh nh sau:
o Xy dng mt biu din nh phn bng cch in 1 vo mi im trn thanh ghi dch m
t c mt ng kt ni n b cng, in 0 vo nhng im cn li trn thanh ghi dch.
Nh vy vi mi b cng c mt s nh phn vi bit tn cng bn phi l bit trng s thp
nht.
o Chuyn s nh phn ny thnh s bt phn.
V d, trong s trn, cc s nh phn tng ng vi cc b cng trn v di ln lt l
110 v 111. Nh vy, ma trn sinh s l [6 7].
a thc hi tip: khi biu din b m ho hi tip, cn phi xc nh vector hi tip. Chiu
di ca vector ny bng vi s ng vo. Cc phn t ca vector ny biu din cc kt ni hi
tip i vi mi ng vo, c xc nh bng cch xy dng s nh phn v chuyn sang h
bt phn nh cch xc nh ma trn sinh c cp phn trn. Nu b m ho c tnh h
M ha knh truyn

271
thng th cc phn t ca ma trn sinh v cc phn t ca vector hi tip ng vi cc bit h
thng phi c gi tr bng nhau.
V d: xt s m ho nh sau:

Hnh 17.3. V d v b m ho hi tip
B m ho c chiu di gii hn l 5, ma trn sinh l [37 33] v vector hi tip l 37. Bi v
ng ra th 1 l ng ra h thng nn phn t tng ng ca ma trn sinh cng bng phn t ca
vector hi tip.
MATLAB h tr dng m t a thc bng cch cung cp hm poly2trellis cho php chuyn
i dng a thc sang dng cu trc trellis c th s dng cc hm m ho v gii m.
>> trellis = poly2trellis(conslen, codegen, feedback)
trong conslen, codegen, feedback ln lt l cc chiu di gii hn, ma trn sinh v
vector hi tip. Tham s th ba ch xut hin trong trng hp b m ho l hi tip.
I7.2.2. 04N0 040 I800 I8LLI5 004 80 M4 h04 0h4F
Dng m t bng cu trc li (trellis) ca b m ho chp cho bit mi ng vo c nh
hng nh th no n ng ra v s chuyn trng thi ca b m. V d, hnh v di y l
m t bng cu trc trellis cho b m c gii thiu phn trc.

Hnh 17.4. M t b m ho bng cu trc trellis
B m ho c bn trng thi biu din bng 2 bit nh phn (t 00 n 11), c mt ng vo v
hai ng ra. Mi mi tn lin nt biu th s chuyn trng thi khi ng vo bng 0, mi mi tn
t nt biu th s chuyn trng thi khi ng vo bng 1. Trn mi mi tn l mt s bt phn
biu din ng ra hin ti ca b m. B m ny gi l b m t l (1 ng vo, 2 ng ra).
M ha knh truyn

272
Trong MATLAB Communication Toolbox, dng m t bng cu trc trellis c biu din
bng mt cu trc gm c 5 trng:
Bng 17.4. Cc trng ca mt cu trc trellis
Tn trng trong cu trc
t lli
S chiu ngha
numInputSymbols V hng S k hiu ng vo ca b m ho
k
numOutputsymbols
V hng
S k hiu ng ra ca b m ho
n
2
numStates V hng S trng thi trong b m ho
nextStates
Ma trn kch thc numStates x
k
2
Cc trng thi k ng vi cc t hp
ca trng thi hin ti v ng vo
hin ti
outputs
Ma trn kch thc numStates x
k
2
Cc ng ra ng vi cc t hp ca
trng thi hin ti v ng vo hin ti
Tn ca cu trc do ngi s dng t, nhng cc trng phi c cc tn nh trong bng trn.
Trong ma trn nextStates, mi phn t l mt s nguyn t 0 n numStates 1. Phn t
nm hng th i v ct th j ch th trng thi k khi trng thi hin ti l i 1 v cc bits ng
vo c biu din thp phn tng ng l j 1 (bit ng vo u tin l bit trng s ln nht
(MSB)).
Trong ma trn ng ra, phn t hng i v ct j l biu din thp phn ca cc bit ng ra khi
trng thi hin ti l i 1 v cc bits ng vo c biu din thp phn l j 1. Bit ng ra u
tin l bit c trng s ln nht.
nh ngha mt cu trc trellis trong MATLAB, c th dng mt trong cc cch sau:
o nh ngha ln lt tng trng trong s 5 trng ca cu trc trellis, s dng c php
tencautruc.tentruong. V d, nu s l tn cu trc, c th vit:
>> s.numInputSymbols = 2;
o Gn gi tr cho c 5 trng ca cu trc trellis bng cch dng lnh struct. V d:
s = struct('numInputSymbols',2,'numOutputSymbols',2,...
'numStates',2,'nextStates',[0 1;0 1],'outputs',[0 0;1 1]);
o Xut pht t m t dng a thc ca b m v s dng hm poly2trellis chuyn thnh
dng m t bng cu trc trellis (xem li phn m t dng a thc ca b m ho chp).
Ngi s dng c th kim tra mt cu trc no c phi l cu trc trellis hay khng bng
cch dng hm istrellis:
>> [isok, status] = istrellis(s)
Hm ny tr v mt bin boolean isok, bin ny bng 1 nu s l mt cu trc trellis. Nu s
khng phi cu trc trellis th isok bng 0, ng thi hm istrelis tr v chui status ch ra
l do ti sao s khng phi l cu trc trellis.
minh ho cch biu din mt cu trc trellis, ta tr li vi b m ho c gii thiu u
phn M chp. Dng cu trc trellis ca n c th hin hnh 17.4. B m ho ny c
m t trong MATLAB bng cu trc sau:
trellis = struct('numInputSymbols',2,'numOutputSymbols',4,...
'numStates',4,'nextStates',[0 2;0 2;1 3;1 3],...
M ha knh truyn

273
'outputs',[0 3;1 2;3 0;2 1]);
S k hiu ng vo ca b m bng 2 v b m ho c mt ng vo nhn 1 trong 2 gi tr 0
hoc 1. Tng t, s k hiu ng ra l
2
2 = 4 v b m c 2 ng ra. S trng thi ca b m
bng 4 v thanh ghi dch ca b m gm c hai khi tr. xc nh cc ma trn
nextStates v outputs, ta da vo s m t hnh 13.4. Cc ma trn ny c bn ct
ng vi bn trng thi ca b m v hai ct ng vi hai k hiu ng vo l 0 hoc 1. Cc phn
t ca ma trn nextStates l trng thi m mi tn tng ng ch n, cn cc phn t ca
ma trn outputs l gi tr ghi trn mi tn tng ng.
I7.2.3. M4 h04 4 0I4I M4 M4 0h4F
M ho m chp c thc hin bng lnh convenc. Hm ny tr v vector ng ra code
ng vi thng ip ng vo msg, vi trellis l cu trc m t b m ho.
>> [code final_state] = convenc (msg,trellis,init_state)
init_state l mt thng s ph, xc nh trng thi khi u ca thanh ghi dch, l mt
s nguyn trong khong t 0 n trellis.numStates 1. Gi tr mc nh l 0.
Hm ny cng tr v trng thi sau cng final_state ca b m ho sau khi x l xong
thng ip.
Gii m m chp: MATLAB s dng gii thut Viterbi gii m m chp. C hai phng
php gii m: phng php quyt nh cng v phng php quyt nh mm.
o Phng php quyt nh cng: thng ip m ho ng vo code c dng nh phn v
thng ip gii m ng ra decoded cng l mt vector nh phn, khng cn thc hin thm
cc x l khc.
>> decoded = vitdec(code,trellis,tblen,opmode,dectype)
opmode cho bit ch hot ng ca b gii m. C ba kh nng la chn:
trunc: b m ho c xem nh khi u t trng thi all-zero (ton bit 0). B gii m s
thc hin d t trng thi ng vi o tt nht.
term: b m ho c xem nh khi u v kt thc trng thi all-zero. B gii m tin
hnh d2 t trng thi all-zero.
cont: b m ho c xem nh khi u t trng thi all-zero. B gii m s thc hin d
t trng thi ng vi o tt nht. Trng hp ny c xt ti tr bng tblen k hiu.
dectype cho bit phng php gii m:
unquant: b gii m nhn vo tn hiu thc, c du. Gi tr +1 biu din mc logic 0 v
gi tr -1 biu din mc logic 1.
hard: phng php quyt nh cng, d liu vo c dng nh phn.
soft: phng php quyt nh mm, s c trnh by sau.
tblen l su d tm ca b gii m.
o Phng php quyt nh mm: cn xc nh s bit quyt nh mm nsdec, ng thi d
liu ng vo cng bao gm cc s nguyn t 0 n 2^nsdec-1.
>> decoded = vitdec(code,trellis,tblen,opmode,'soft',nsdec).
M ha knh truyn

274
Gi tr ng vo bng 0 biu th mc 0 vi tin cy cao nht, cn gi tr 2^nsdec-1 biu th
mc 1 vi tin cy cao nht. Cc gi tr khc biu th mc 0 hoc mc 1 vi tin cy km
hn. V d i vi trng hp s bit quyt nh mm bng 3, ta c bng m t nh sau:
Bng 17.5. ngha ca cc gi tr ng vo
Gi tr ng vo Biu th
0 Mc 0 vi tin cy cao nht (cp 1)
1 Mc 0 vi tin cy cp 2
2 Mc 0 vi tin cy cp 3
3 Mc 0 vi tin cy thp nht
4 Mc 1 vi tin cy thp nht
5 Mc 1 vi tin cy cp 3
6 Mc 1 vi tin cy cp 2
7 Mc 1 vi tin cy cao nht
o Ngoi cc thng s c bn nu trn, ngi s dng c th cung cp thm cc thng tin v
cc iu kin u ca b gii m nh cc o trng thi u, cc trng thi khi u v cc
ng vo ban u. ng thi, hm vitdec cng tr v cc o trng thi cui cng, cc trng
thi cui v cc gi tr ng vo sau cng.
>> decoded = vitdec(..., 'cont', ..., init_metric,init_states,init_inputs)
>> [decoded final_metric final_states final_inputs] = vitdec(..., 'cont',
...)
c gi c th tm thn cc thng tin v cc thng s ny bng cch g lnh help vitdec ca
s lnh ca MATLAB.
V d 17-8. Minh ho phng php gii m m chp bng quyt nh mm.
on chng trnh di y minh ho phng php gii m quyt nh mm vi s bit quyt
nh mm bng 3. u tin ta s dng hm convenc to mt thng ip m ho bng m
chp. Thng ip ny sau c cng vi nhiu Gauss to bng hm awgn m phng
thng ip b nhiu. Trc khi gii m, ta tin hnh lng t tn hiu thu vi s mc lng t
bng 8 chuyn d liu nhiu thnh cc s nguyn t 0 n 7. D liu gn bng 0 c gn
gi tr 0, d liu gn 1 c gn gi tr 7, cc d liu cch xa 0 v 1 hn s c gn cc gi
tr t 2 n 6 tu theo vic chng gn 0 v 1 nh th no. Cui cng, tin hnh gii m bng
hm vitdec v tnh t l li bit. Do s dng ch hot ng lin tc (cont) nn b gii
m s to ra mt khong thi gian tr bng vi tblen, v msg(1) s tng ng vi
decode(tblen+1).
msg = randint(4000,1,2,139); % D liu ngu nhin
t = poly2trellis(7,[171 133]); % nh ngha cu trc trellis.
code = convenc(msg,t); % M ho d liu.
ncode = awgn(code,6,'measured',244); % Cng nhiu.
% Lng t ho chun b gii m bng phng php ly ngng mm
qcode = quantiz(ncode,[0.001,.1,.3,.5,.7,.9,.999]);
tblen = 48; delay = tblen; % su d tm
M ha knh truyn

275
decoded = vitdec(qcode,t,tblen,'cont','soft',3); % Gii m.
% Tnh s li v t l bit li.
[number,ratio] = biterr(decoded(delay+1:end),msg(1:end-delay))
Di y l kt qu ca mt ln thc hin chng trnh:
number =
5
ratio =
0.0013
Cui cng chng ta kt thc phn ny vi mt v d mang tnh tng hp v k thut m chp.
V d 17-9. S dng b m ho m chp thun t l 2/3 c m t trong hnh v 17.5
m ho mt chui d liu ngu nhin. To nhiu Gauss v cng vo d liu. Sau thc hin
gii m bng hai phng php quyt nh cng (ch c hai mc lng t l 0 v 1) v quyt
nh mm vi s bit quyt nh bng 3. Tnh t l li bit v so snh kt qu.

Hnh 17.5. B m ho m chp thun t l 2/3
Trc ht cn xc nh cc thng s cho b m ho ny. Gii hn chiu di ca b m phi l
mt vector c chiu di bng 2 v b m ho c hai ng vo. Thanh ghi dch ng vi ng vo
1 c 4 nh (4 b delay), cng vi bit ng vo hin ti, vy chiu di gii hn ng vi ng
vo 1 l 5. Tng t, chiu di gii hn ng vi ng vo 2 l 4. Vy vector chiu di gii hn
l [5 4].
Ma trn sinh ca b m ho l ma trn 2 x 3 (2 ng vo, 3 ng ra). Phn t hng i ct j cho
bit nh hng ca ng vo th i ln ng ra th j. V d, xc nh phn t hng th 2 v
ct th 3, ta nhn xt thy phn t tn cng bn tri v hai phn t tn cng bn phi ca
thanh ghi dch th 2 c kt ni ti b cng ng ra 3. Vy, phn t hng th 2 ct 3 ca
ma trn sinh c biu din nh phn l 1011, tc l bng 13 trong h bt phn. Thc hin tng
t n cc v tr khc, ta c ma trn sinh nh sau: [23 35 0; 0 5 13].
thc hin qu trnh m ho v gii m, dng hm poly2trellis chuyn cc thng s trn
thnh mt cu trc trellis.
Di y l on chng trnh cho v d 17-9.
len = 1000;
M ha knh truyn

276
msg = randint(2*len,1); % Thng ip nh phn ngu nhin: 2 bit mi k hiu
trel = poly2trellis([5 4],[23 35 0;0 5 13]); % nh ngha cu trc trellis
code = convenc(msg,trel) % M ho thng ip.
ncode = awgn(code,7,'measured',244); % Cng nhiu.
% Gii m bng phng php ly ngng cng
hcode = (1+sign(ncode-0.5))/2; % Mc ngng bng 0.5
hdecoded = vitdec(hcode,trel,34,'cont','hard'); % Gii m.
disp('Phuong phap lay nguong cung')
[hnumber,hratio] = biterr(hdecoded(68+1:end),msg(1:end-68))
% Gii m bng phng php ly ngng mm
% Lng t ho trc khi gai m.
qcode = quantiz(ncode,[0.001,.1,.3,.5,.7,.9,.999]);
sdecoded = vitdec(qcode,trel,34,'cont','soft',3); % Gii m.
disp('Phuong phap lay nguong mem')
[snumber,sratio] = biterr(sdecoded(68+1:end),msg(1:end-68))
Kt qu thc hin chng trnh:
Phuong phap lay nguong cung
hnumber =
168
hratio =
0.0870
Phuong phap lay nguong mem
snumber =
43
sratio =
0.0223
# Bi tp 17-1.
To mt chui d liu ngu nhin chiu di N = 1000 bit. M ho chui d liu bng cc
phng php lit k di. Dng hm randerr to li ngu nhin v tc ng vo chui
d liu trn. Gii m chui d liu ny v so vi d liu gc. Tnh s li v t l li.
a. M BCH [15,11]
b. M vng [15,11] vi a thc sinh 1 + X + X
4

c. M Hamming [15,11]
d. M khi tuyn tnh [15,11]
e. M Reeds-Solomon [15,11]
# Bi tp 17-2.
Kho st m khi tuyn tnh [7,4] vi ma trn sinh sau y:
M ha knh truyn

277

=
1 0 0 0 0 1 1
0 1 0 0 1 1 0
0 0 1 0 1 0 1
0 0 0 1 1 1 1
G
a. Tm ma trn kim tra H bng cc hm ca MATLAB
b. Dng b m ho ny m ho thng ip Hello! Welcome to Ho Chi Minh
City ( c m ho bng m ASCII).
c. Gii m m khi tuyn tnh, tnh t l bit li. Khi phc li thng ip ban u
# Bi tp 17-3.
Xy dng cu trc trellis trong MATLAB m t b m ho m chp c s trng thi
nh sau:
a = 00
b = 10 c = 01
d = 11
00
10
11 11
01
01
00
10
Bit vo l 0
Bit vo l 1

Hnh 17.6.
# Bi tp 17-4.
Cho b m ho m chp c s khi nh sau:

Hnh 17.7.
M ha knh truyn

278
S dng b m ho ny m ho mt thng ip ngu nhin chiu di N = 1000. Thng ip
sau c truyn qua knh truyn c nhiu Gauss c SNR = 5dB. Gii m thng ip v so
snh vi thng ip gc. Tnh t l bit li. Dng hai phng php:
a. Quyt nh mm vi 3 bit lng t
b. Quyt nh cng
# Bi tp 17-5.
Thc hin mt h thng thng tin n gin: truyn mt thng ip ngu nhin gm 1000 k
hiu t my pht n my thu bao gm cc bc sau:
i. M ho thng ip bng m Huffman (t m nh phn)
ii. M ho sa sai dng m Hamming [7,4]
iii. iu ch bng phng php BPSK
iv. Pht i trn knh truyn c nhiu AWGN
v. Gii iu ch BPSK
vi. Gii m Hamming
vii. Gii m Huffman v thu li thng ip ban u
Ln lt kho st vi cc gi tr Eb/No bng 0, 2, 4, 6, 8 dB v so snh thng ip nhn c
vi thng ip pht. V th BER.
# Bi tp 17-6.
Lm li bi tp trn vi Eb/No bng 2dB nhng ln lt s dng cc phng php m ho
sau:
a. M Reed-Solomon [7,3]
b. M BCH [7,4]
c. M khi tuyn tnh [4,2]
d. M vng [4,2]
e. M trellis vi cu trc nh trong v d 17-9.
# Bi tp 17-7.
Kho st b m ho m chp hnh 17.8. To mt chui bit, kch thc 1x10. Cc chui bit
ng ra ca b m ho l g, nu a thc sinh l G(X) = [1+X^2 1+X+X^2].
D D
k
B
1 k
B

2 k
B

(1)
C
k
(2)
C
k

Hnh 17.8.
M ha knh truyn

279
Mt b m gi l c tnh h thng nu cc bit vo li xut hin phn u ca chui bit
m ho. Hi b m trn c tnh h thng khng?
# Bi tp 17-8.
Kho st b m ho m chp hnh 17.9. To hai chui bit b1 v b2, kch thc mi chui l
1x10. Cc chui bit ng ra ca b m ho l g, nu a thc sinh l G(X) = [1 0 1+X;0 1 X].
B m c tnh h thng khng?
D
D
(1)
k
B
(2)
k
B
(1)
C
k
(2)
C
k
(3)
C
k

Hnh 17.9.
M ha knh truyn

280
Danh sch cc hm c gii thiu trong chng 17
Cc hm thc hin cc loi m khi tuyn tnh
bchdec Gii m BCH
bchenc M ho BCH
bchgenpoly To a thc sinh cho BCH
cyclgen To ma trn kim tra cho m vng
cyclpoly To a thc sinh cho m vng
decode Gii m m khi tuyn tnh tng qut
encode M ho m khi tuyn tnh tng qut
gen2par Chuyn i gia ma trn kim tra v ma trn sinh
gf To mt bin dy Galois
hammgen To ma trn kim tra v ma trn sinh cho m Hamming
rsdec Gii m Reed-Solomon
rsdecof Gii m file ASCII dng m ho Reed-Solomon
rsenc Gii m Reed-Solomon
rsencof M ho file ASCII dng m ho Reed-Solomon
rsgenpoly To a thc sinh cho m Reed-Solomon
Cc hm thc hin cc loi m chp
convenc Thc hin m ho m chp
istrellis Kim tra xem mt cu trc no c phi l cu trc trellis khng
poly2trellis Chuyn m chp t dng m t bng a thc sang dng cu trc trellis
struct M t cc thuc tnh ca cu trc trellis
vitdec Gii m m chp bng gii thut Viterbi



Cc b cn bng

281
Chng 18
I8. 0a0 80 0aN 8aN0

Nhiu giao thoa lin k t l mt loi nhiu ph bin trong cc h thng vin thng. Nhiu
ny xut hin cc knh truyn phn tn theo thi gian. Chng hn trong mt mi trng tn
x a ng, mt k hiu c th c truyn theo cc ng khc nhau, n my thu cc
thi im khc nhau, do c th giao thoa vi cc k hiu khc. khc phc hin tng
nhiu ISI v ci thin cht lng h thng, c nhiu phng php khc nhau nhng phng
php c cp nhiu nht l s dng b cn bng b li c tnh tn x thi gian ca
knh truyn.
Cc b cn bng c th c phn loi thnh ba lp:
Cc b cn bng tuyn tnh
Cc b cn bng hi tip quyt nh
Cc b cn bng MLSE (Maximum Likelihood Sequence Estimation)
MATLAB Communication toolbox cung cp cc hm h tr c ba loi b cn bng ny. Cc
b cn bng MLSE s dng gii thut Viterbi, cn cc b cn bng tuyn tnh v cn bng hi
tip quyt nh l cc b cn bng thch nghi. C s hot ng ca n da trn cc gii thut
thch nghi, bao gm:
Gii thut bnh phng trung bnh cc tiu (LMS Least Mean Square)
Gii thut LMS c du (Signed LMS)
Gii thut LMS chun ho (Normalized LMS)
Gii thut LMS c kch thc bc nhy thay i (Variable step size LMS)
Gii thut bnh phng cc tiu quy (RLS Recursive Least Square)
Gii thut module khng i (CMA Constant Modulus Algorithm)
I8.I. 040 80 04N 84N0 Ih0h N0hI
Ni chung, cc b cn bng thch nghi bao gm ba loi chnh nh sau: b cn bng vi
khong cch mt k hiu, b cn bng khong cch t l v b cn bng hi tip quyt nh.
I8.I.I. 80 04N 84N0 Kh04N0 040h K hI0
B cn bng khong cch k hiu l b cn bng tuyn tnh cu to bi mt dy cc khi to
tr lu tr cc mu tn hiu vo. Sau mi mt chu k k hiu, b cn bng s tnh tng (c
trng s) ca cc mu d liu lu trong cc khi tr v xut kt qu ra ng ra, ng thi cp
nht cc trng s theo mt trong cc gii thut thch nghi cp phn u ca chng
ny chun b cho chu k k hiu k tip. B cn bng ny c gi l nh khong theo
k hiu v tc ca cc mu ng ra v ng vo bng nhau v da trn c s mt chu k
k hiu.
Hnh v 19.1 minh ho s nguyn l ca mt b cn bng nh khong theo k hiu gm
c L trng s v chu k k hiu l T.
Cc b cn bng

282

Hnh 18.1. B cn bng nh khong theo k hiu
Cc trng s ca b cn bng c cp nht bng cc gii thut thch nghi. Gi tr ca b
trng s cp nht s ph thuc vo gi tr ca b trng s hin ti, gi tr ng vo, gi tr ng
ra. Ngoi ra, ngoi tr cc b cn bng dng gii thut CMA, gi tr ca b trng s mi cn
ph thuc vo mt tn hiu tham chiu c tnh cht ph thuc vo ch hot ng ca b
cn bng.
Mi lin h gia tn hiu tham chiu v ch hot ng ca b cn bng c m t trong
bng 18.1.
Bng 18.1. Tn hiu tham chiu v cc ch hot ng ca b cn bng
Ch hot ng Tn hiu tham chiu
Ch hun luyn Chui pht xc nh trc
Ch quyt nh Tn hiu ra khi b quyt nh, k hiu
d
y trong hnh 18.1
Trong cc ng dng thng thng, b cn bng s khi u ch hun luyn thu thp
cc thng tin v tnh cht ca knh truyn, sau mt thi gian mi chuyn sang ch quyt
nh.
Qu trnh tnh ton li s to ra mt tn hiu sai s e xc nh bng biu thc sau:

=
CMA thuat giai vi
CMA c thuat kha giai cac vi
) (
2
y R y
y d
e (18.1)
trong R l mt hng s ch ph thuc vo dng tn hiu.
I8.I.2. 80 04N 84N0 0jNh Kh04N0 I L
B cn bng nh khong t l cng l b cn bng tuyn tnh vi cu to tng t nh b cn
bng nh khong theo k hiu c gii thiu trn. Tuy nhin, b cn bng nh khong
Cc b cn bng

283
t l ch xut d liu ra v cp nht trng s sau khi nhn c K mu d liu vo vi K l
mt s nguyn (thng ln hn 1). Nh vy tc d liu ra v tc cp nht trng s s
chm hn K ln so vi tc d liu vo. Thng chn K = 2. S nguyn l ca b cn
bng nh khong t l c minh ho hnh v 18.2.

Hnh 18.2. B cn bng nh khong t l
I8.I.3. 80 04N 84N0 h0I IIF q0I 0jNh

Hnh 18.3. B cn bng hi tip quyt nh - nh khong t l
B cn bng hi tip quyt nh l b cn bng phi tuyn, cu to bi mt b lc thun v mt
b lc hi tip. B lc thun c cu to tng t nh b cn bng tuyn tnh, cn b lc hi
tip cu to bi mt dy cc khi tr m ng vo ca n l cc quyt nh thc hin trn tn
Cc b cn bng

284
hiu ng ra b cn bng. Mc ch ca b cn bng hi tip quyt nh (DFE) l va trit
nhiu giao thoa lin k t ISI (mc ch chnh ca cc b cn bng) ng thi ti thiu ho s
tng cng nhiu ca b cn bng. i vi cc b cn bng tuyn tnh th vn tng cng
nhiu l mt nhc im ln.
S hnh 19.3 biu din mt b cn bng DFE nh khong t l c L trng s nhnh
thun v N L l s trng s ca b lc hi tip. B lc thun nm pha trn, cn pha di
l b lc hi tip. Nu K = 1 th b cn bng ny tr thnh b cn bng DFE nh khong theo
k hiu.
Sau mt chu k k hiu (ca ng ra), b cn bng s nhn vo K mu d liu vo b lc
thun, v mt mu quyt nh (hoc mt mu d liu hun luyn) b lc hi tip. B cn
bng s tnh tng c trng s ca tt c cc gi tr lu trong b lc thun v b lc hi tip,
ng thi cp nht cc trng s chun b cho chu k k hiu k tip. Gii thut cp nht
trng s phi ti u ho ng thi cc trng s thun v cc trng s hi tip. iu ny c
bit quan trng i vi gii thut bnh phng cc tiu hi quy RLS.
I8.2. 040 0I4I Ih04I 04N 84N0 Ih0h N0hI
Khu cp nht trng s l khu quan trng nht ca b cn bng. N quyt nh hiu qu ca
b cn bng. Cc b cn bng thch nghi s dng cc gii thut cp nht trng s thch nghi,
ngha l trng s mi s ph thuc vo trng s c v cc gi tr ng vo, ng ra v tn hiu
sai s gia ng vo v ng ra. Sau y l cc gii thut thch nghi c s dng trong
MATLAB.
I8.2.I. 0I4I Ih04I 8Nh Fh00N0 I80N0 8Nh 000 II0 {LM5 L45I M4N 5q048)
Gii thut LMS tm cch cp nht trng s sao cho gi tr trung bnh ca bnh phng sai s
gia gi tr ng ra ca b cn bng vi gi tr ng ra m ta mong mun t c. Gi s
k
I (k
= 1, 2, ..., N) l cc gi tr ng ra mong mun,
k
I

(k = 1, 2, ..., N) l cc gi tr ng ra thc t,
th mc ch ca gii thut LMS l ti thiu ho i lng:

=
=
N
k
k k
I I
N
J
1
2
)

(
1
(18.2)
Ngi ta tm c quy tc cp nht trng s ca gii thut ny nh sau:
e U k W k W
*
) ( ) 1 ( + = + (18.3)
trong :
W(k+1) v W(k) l vector cc trng s ca b cn bng bc th k + 1 v bc th k:
W = [ ]
L
w w w ,..., ,
2 1
(18.4)
U l vector d liu ng vo (du * biu th lin hip phc):
[ ]
L
u u u U ,..., ,
2 1
= (18.5)
e l tn hiu sai s.
l mt hng s thc trong khong [0,1] gi l h s r. i vi gii thut cp nht trng s
thng thng th = 1, cn gii thut cp nht trng s khng c nh th = 0.
l mt hng s gi l kch c bc (step size).
Cc b cn bng

285
I8.2.2. 0I4I Ih04I LM5 00 040 {5I0N LM5)
y l mt dng bin th ca gii thut LMS, bao gm ba loi vi quy tc cp nht trng s
tng ng cho mi loi c xc nh bi cc phng trnh di y:
Sign LMS: )) (Re( ) ( ) 1 (
*
e sign U k W k W + = + (18.6)
Signed regressor LMS: ) Re( )). (Re( ) ( ) 1 ( e U sign k W k W + = + (18.7)
Sign-sign LMS: )) (Re( )). (Re( . ) ( ) 1 ( e sign U sign k W k W + = + (18.8)
I8.2.3. 0I4I Ih04I LM5 0h04N h04 {N08M4LIZ0 LM5)
Gii thut ny s dng quy tc cp nht trng s sau y:
b U U
e U
k W k W
H
+
+ = +
*
) ( ) 1 ( (18.9)
trong b l mt tham s gi l tham s phn cc ca gii thut, b c gi tr nm gia 0 v 1.
Tham s ny c a vo khc phc nhc im ca gii thut LMS khi tn hiu vo c
gi tr nh. K hiu
H
U biu din ma trn chuyn v Hermit ca ma trn U.
I8.2.4. 0I4I Ih04I LM5 00 8000 Nh4 Ih4 00I {48I48L-5IF-5IZ LM5)
Gii thut ny s dng cc gi tr kch c bc khc nhau trong cc ln cp nht trng s. Cho
trc gia s v cc gii hn
min
v
max
, th gi tr ca s c cp nht theo quy lut
nh sau:
o u tin, tnh gi tr ) . Re( .
0 prev
G G + = , trong l gi tr hin ti ca kch c
bc, G = U.e* v
prev
G l gi tr trc ca .
o Nu
max 0
> th gi tr mi ca s l
max
, nu
min 0
< th gi tr mi ca s l
min
. Trong cc trng hp cn li, gi tr mi s l
0
.
Tp trng s mi c xc nh bng cng thc:
*
2 ) ( ) 1 ( G k W k W + = + (18.10)
I8.2.5. 0I4I Ih04I 8Nh Fh00N0 000 II0 h0I q0 {8L5 80085I L45I 5q048)
Gii thut ny c thc hin trn c s mt ma trn P gi l ma trn tng quan nghch o,
v mt hng s thc nm trong khong [0,1] gi l h s qun (forget factor), k hiu f.
trng thi khi u, P =
N
I c .
0
vi
0
c l mt hng s no cn
N
I l ma trn n v cp N (N
l s trng s ca b cn bng).
mi bc cp nht trng s, u tin gii thut ny s tin hnh xc nh mt vector K gi
l vector li Kalman. Nu gi P l ma trn tng quan nghch o hin ti, v u l vector
ng vo hin ti, th:
U P U f
U P
K
H
. .
.
+
= (18.11)
Sau , ma trn P s c cp nht theo quy lut di y:
) . . (
1
P U K P f P
H
new
=

(18.12)
Cc b cn bng

286
new
P l ma trn tng quan nghch o mi.
Cui cng, tp trng s mi s c xc nh bi:
e K k W k W
*
) ( ) 1 ( + = + (18.13)
I8.2.6. 0I4I Ih04I M000L05 h4N0 50 {00N5I4NI M000L05 4L008IIhM)
Gii thut ny s dng cng mt quy tc cp nht trng s nh gii thut LMS:
e U k W k W
*
) ( ) 1 ( + = + , ch khc ch tn hiu sai s c xc nh theo phng trnh:
) (
2
y R y e = (18.14)
trong R l mt hng s ch ph thuc vo dng tn hiu.
Gii thut ny ph thuc rt ln vo gi tr khi u ca tp trng s. Nn chn gi tr khi
u l mt vector khc 0. Thng thng, ngi ta chn, trng s trung tm bng 1, cn cc
trng s cn li bng 0.
I8.3. 50 00N0 040 80 04N 84N0 Ih0h N0hI I80N0 M4IL48
V c bn, s dng mt b cn bng thch nghi trong MATLAB, cn tin hnh theo cc
bc sau:
o Bc 1: Khi to mt i tng m t b cn bng, i tng ny s xc nh loi b cn
bng v gii thut thch nghi no c s dng cho b cn bng . i tng ny l mt
bin trong MATLAB cha cc thng tin lin quan n b cn bng, v d nh loi, gii thut
thch nghi, cc gi tr trng s, ...
o Bc 2: Thay i cc c tnh ca i tng m t b cn bng tu theo nhu cu s dng.
Chng hn, ta c th thay i s trng s ca b cn bng hoc thay i gi tr cc trng s, ...
o Bc 3: S dng i tng cn bng ny tc ng vo tn hiu m ta cn cn bng.
MATLAB cung cp hm equalize thc hin tc v ny.
Trong cc phn sau y, chng ta s ln lt tm hiu cc qu trnh xy dng b cn bng,
chn gii thut cn bng v s dng b cn bng khi lp trnh vi MATLAB.
I8.3.I. I40 0jNh 0I4I Ih04I Ih0h N0hI
Vic la chn gii thut thch nghi no l ph thuc vo tng tnh hung c th, sau y l
mt s quy tc chung khi la chn gii thut:
Gii thut LMS thc thi nhanh nhng tc hi t chm v phc tp tnh ton tng
tuyn tnh theo s lng trng s.
Gii thut RLS c tc hi t nhanh nhng phc tp tnh ton t l vi bnh phng
ca s trng s. Gii thut ny c th tr nn bt n khi s trng s ln.
Cc bin th ca gii thut LMS c du s lm n gin ha vn thc hin phn cng.
Gii thut LMS chun ho v gii thut LMS c kch c bc thay i rt hiu qu i vi
cc bin i ca cc i lng thng k ca tn hiu vo (th d cng sut).
Gii thut modulus hng s hu dng trong cc trng hp ta khng th c chui d liu
hun luyn, v c hiu qu tt nht i vi cc phng php iu ch module khng i (v
d nh PSK). Tuy nhin nu khng c cung cp mt s thng tin ph, gii thut ny c th
dn n s sai pha, v d gii thut CMA c th tnh ton cc trng s theo ng m hnh
Cc b cn bng

287
QPSK nhng cc trng thi pha c th l 90, 180, 270 thay v 45, 135, 225, 315.
khc phc nhc im ny, c th dng cc phng php iu ch vi sai.
Sau khi chn xong gii thut thch hp, ta s khi to mt i tng m t b cn bng vi
gii thut chn. Bng di y l m t cc hm MATLAB khi to cc i tng m
t gii thut thch nghi cho b cn bng.
Bng 18.2. Cc hm khi to i tng m t b cn bng
Hm khi to Gii thut thch nghi Cc c tnh ca i tng c khi to
lms(stepsize,leakag
efactor)
LMS
AlgType: 'LMS'
StepSize: Kch c bc (stepsize)
LeakageFactor: H s r (leakagefactor)
(mc nh 1)
signlms(stepsize,
algtype)
LMS c du
AlgType: 'Sign LMS', 'Signed Regressor
LMS' hoc 'Sign Sign LMS'
StepSize: Kch c bc (stepsize)
LeakageFactor: H s r (leakagefactor)
(mc nh 1)
normlms(stepsize,
bias)
LMS chun ho
AlgType: 'LMS'
StepSize: Kch c bc (stepsize)
LeakageFactor: H s r (leakagefactor)
(mc nh 1)
Bias: Thng s phn cc (bias) (mc nh 0)
varlms(initstep,
incstep, minstep,
maxstep)
LMS c kch c bc
thay i
AlgType: 'Variable Step Size LMS'
LeakageFactor: H s r (mc nh 1)
InitStep: tr khi u ca kch c bc
IncStep: gia s ca kch c bc MinStep:
tr cc tiu ca kch c bc
MaxStep: tr cc i ca kch c bc
rls(forgetfactor,
invcorrinit)
RLS AlgType: 'RLS'
ForgetFactor: H s qun (forgetfactor)
InvCorrInit: Tr khi u ca ma trn tng quan
nghch o
cma(stepsize,leakag
efactor)
CMA AlgType: 'Constant Modulus'
StepSize: Kch c bc (stepsize)
LeakageFactor: H s r (leakagefactor)
(mc nh 1)
truy xut mt c tnh ca i tng m t gii thut thch nghi c tn ALG (v d hiu
chnh gi tr ca c tnh), ta dng c php ALG.Prop trong Prop l tn ca c tnh
m ta mun truy xut. V d: ALG.LeakageFactor = 1;
Cc b cn bng

288
I8.3.2. I4 00N0 00I I00N0 M0 I4 80 04N 84N0 Ih0h N0hI
Trong MATLAB, cc i tng m t b cn bng thch nghi c khi to bng mt trong
hai hm lineareq (b cn bng thch nghi) v dfe (b cn bng hi tip quyt nh).
>> eqobj = lineareq(nweights, alg, sigconst)
Hm ny khi to mt i tng m t b cn bng nh khong theo k hiu c tn l
eqobj, s trng s l nweights v gii thut thch nghi c m t bi i tng alg.
Sigconst l mt vector m t dng tn hiu. Gi tr mc nh l [-1 1], tng ng vi tn
hiu BPSK.
>> eqobj = lineareq(nweights, alg, sigconst, nsamp)
Hm ny khi to mt i tng m t b cn bng nh khong t l, c cc trng s c
nh khong bng T/nsamp, trong nsamp l mt s nguyn dng cn T l chu k k
hiu. Nu nsamp = 1 ta c b cn bng nh khong theo k hiu.
V d: khi to mt i tng m t b cn bng nh khong k hiu c 10 trng s cp nht
bng gii thut RLS vi kch c bc bng 3, tc d liu ra bng tc d liu vo:
>> eqfrac = lineareq(10,rls(0.3),[-1 1],2);
Sau y l cc thuc tnh ca i tng to bi hm lineareq:
EqType: 'Linear Equalizer'
nWeights: S trng s
nSampPerSym: S mu d liu vo trn mt k t (bng nsamp)
RefTap: Ch s tham chiu ti cc tap ca ng dy tr (nm gia 1 v nWeights)
SigConst: Vector m t dng tn hiu
Weights: Vector trng s phc
WeightInputs: Vector cc d liu vo cc khi trng s
ResetBeforeFiltering: Reset trng thi b cn bng sau mi ln gi (nhn gi tr 0 hoc
1)
NumSamplesProcessed: S mu c x l
Ngoi ra cc c tnh ca i tng m t gii thut thch nghi cng l cc c tnh ca i
tng m t b cn bng.
>> eqobj = dfe(nfwdweights, nfbkweights, alg, sigconst, nsamp)
Hm ny khi to mt i tng m t b cn bng hi tip nh khong theo k hiu c tn
l eqobj, s trng s ca b lc thun l nfwdweights, ca b lc hi tip l
nfbkweights v gii thut thch nghi c m t bi i tng alg. Sigconst l mt
vector m t dng tn hiu. Gi tr mc nh l [-1 1], tng ng vi tn hiu BPSK. Cc trng
s b lc thun c nh khong bng T/nsamp vi T l chu k k hiu. Nu nsamp = 1
(hoc khng c a vo trong danh sch tham s ca hm) th b cn bng c to ra l
b cn bng DFE nh khong theo k hiu.
Cc c tnh ca i tng m t b cn bng DFE ni chung cng ging nh ca b cn
bng tuyn tnh, ch khc hai c tnh:
EqType: 'Decision Feedback Equalizer'
Cc b cn bng

289
nWeights: S cc trng s ca b lc thun v b lc hi tip, c biu din bi mt vector
hng gm 2 phn t [nfwdweights nfbkweights].
V d: khi to i tng m t b cn bng DFE nh khong theo k hiu, b lc thun c 3
tap, b lc hi tip c 2 tap, cp nht trng s bng gii thut RLS vi kch c bc bng 0.3:
>> eqdfe = dfe(3,2,rls(0.3));
C th to mt i tng m t b cn bng mi ging ht vi mt b cn bng c bng
cch dng lnh gn hoc lnh copy:
>> c2 = copy(c1) ; c1 v c2 l cc i tng m t b cn bng
>> c2 = c1;
Trong trng hp th nht, c1 v c2 c lp vi nhau, cn trong trng hp 2, hai b cn
bng lun c c tnh ging nhau.
I8.3.3. I80 I04I 4 hI0 0hNh 040 040 INh 004 80 04N 84N0 Ih0h N0hI
Trong qu trnh s dng b cn bng, ta c th phi tham kho hoc phi thay i mt s c
tnh ca n. Gi s b cn bng c m t bi i tng c tn l eqobj, mun truy xut
mt c tnh Prop no ca b cn bng, ta dng c php eqobj.Prop. Cc c tnh
thng c truy xut gm c:
Cc c tnh v cu trc b cn bng (v d s lng trng s)
Cc thng tin lin quan n gii thut cp nht trng s thch nghi c s dng. V d,
kch c bc,...
Thng tin v trng thi hin ti ca b cn bng (v d gi tr cc trng s)
Nhng ch dn v phng cch tc ng ln tn hiu (v d c reset hay khng trc khi
thc hin cn bng)
Lu : khi ta thay i mt thuc tnh ca b cn bng th c th c nhng thuc tnh lin
quan cng s thay i theo (v d: thay i s trng s th vector gi tr cc trng s cng b
thay i).
I8.3.4. 50 00N0 80 04N 84N0 Ih0h N0hI
Phn ny s trnh by cch s dng b cn bng tc ng ln mt tn hiu b nhiu trn
knh truyn. thc hin vic ny, u tin b cn bng phi c khi ng vi mt chui
d liu xc nh trc gi l chui d liu hun luyn. Ch ny gi l ch hun
luyn, y l qu trnh m b cn bng s thu thp cc thng tin v c tnh ca knh truyn
cp nht cc trng s mt cch ph hp. Sau bc ny b cn bng s tip tc hot ng
vi tn hiu vo l tn hiu cn phi cn bng, ch ny gi l ch hng quyt nh.
Trong ch ny, cc d liu ng ra b cn bng chnh l tn hiu c khc phc nhiu.
Hm equalize s thc hin nhim v cn bng mt tn hiu cho trc. Nu chng ta cung cp
vector chui hun luyn nh mt thng s nhp ca hm equalize, b cn bng u tin s
hot ng ch hun luyn, sau khi x l ht chui hun luyn, n s t ng chuyn
sang ch hng quyt nh. Nu khng a vo chui hun luyn, b cn bng s hot
ng ch hng quyt nh ngay lp tc. c bit, cc b cn bng s dng gii thut
CMA khng cn chui hun luyn nn ta khng a vo vector ny.
>> [y, yd, e] = equalize(eqobj, x, trainsig)
trong eqobj l bin i tng m t b cn bng, x l tn hiu cn x l, trainsig l
vector biu din chui hun luyn, y l tn hiu ng ra sau khi cn bng, yd l chui k hiu
Cc b cn bng

290
m b cn bng pht hin c, cn e l vector sai s gia y v tn hiu tham chiu (chui
hun luyn hoc chui d liu m b cn bng pht hin).
V d 18-1. S dng b cn bng tuyn tnh nh khong k hiu, c 8 trng s, cp nht
theo gii thut LMS vi kch c bc 0.01 cn bng mt tn hiu QPSK.
Trong v d ny, ta chn chui d liu hun luyn chnh l 500 mu u tin ca tn hiu pht.
Kt qu cn bng c minh ho bng th phn b ca cc tn hiu b nhiu, tn hiu sau
khi cn bng v tn hiu QPSK l tng.
% Thit lp cc thng s v tn hiu.
M = 4; % Kch thc tp k hiu iu ch
msg = randint(1500,1,M); % Thng ip ngu nhin
modmsg = pskmod(msg,M); % iu ch QPSK
trainlen = 500; % Chiu di chui hun luyn
chan = [.986; .845; .237; .123+.31i]; % Cc h s ca knh truyn
filtmsg = filter(chan,1,modmsg); % M phng mo knh truyn.
% Cn bng tn hiu thu.
eq1 = lineareq(8, lms(0.01)); % Khi to i tng m t b cn bng.
eq1.SigConst = pskmod([0:M-1],M); % Thit lp vector m t dng tn hiu.
[symbolest,yd] = equalize(eq1,filtmsg,modmsg(1:trainlen)); % Cn bng.
% V th phn b.
h = scatterplot(filtmsg,1,trainlen,'bx'); hold on;
scatterplot(symbolest,1,trainlen,'g.',h);
scatterplot(eq1.SigConst,1,0,'k*',h);
legend('Tin hieu bi meo','Tin hieu sau khi can bang',...
'Phan bo tin hieu ly tuong');
hold off;
% Tnh t l li khi c v khng c b cn bng.
demodmsg_noeq = pskdemod(filtmsg,M); % Gii iu ch tn hiu cha cn
bng.
demodmsg = pskdemod(yd,M); % Gii iu ch tn hiu pht hin bi b cn
bng.
[nnoeq,rnoeq] = symerr(demodmsg_noeq(trainlen+1:end),...
msg(trainlen+1:end));
[neq,req] = symerr(demodmsg(trainlen+1:end),...
msg(trainlen+1:end));
disp('Ty le loi ky hieu khi co va khong co bo can bang:')
disp([req rnoeq])
Kt qu thc thi chng trnh:
Ty le loi ky hieu khi co va khong co bo can bang:
0 0.3310
th phn b:
Cc b cn bng

291

Hnh 18.4.
Sau y l mt v d khc minh ho b cn bng thch nghi hot ng ch hng quyt
nh. Nu c tnh knh truyn khng thay i, ta c th s dng li b cn bng c
hun luyn trc cn bng cc tn hiu tip theo i vo b cn bng. Ch cn thit lp
thuc tnh ResetBeforeFiltering = 0 (khng reset sau mi ln thc hin cn bng).
V d:
% Cn bng tn hiu thu theo tng on.
eqlms.ResetBeforeFiltering = 0; % Khng reset trc khi cn bng
% 1. X l chui d liu hun luyn.
s1 = equalize(eqlms,filtmsg(1:trainlen),modmsg(1:trainlen));
% 2. X l phn d liu tip theo ch quyt nh.
s2 = equalize(eqlms,filtmsg(trainlen+1:800));
% 3. X l phn d liu cn li ch quyt nh.
s3 = equalize(eqlms,filtmsg(801:end));
s = [s1; s2; s3]; % Ton b ng ra ca b cn bng
Thi gian tr ca b cn bng: khi s dng cc b cn bng thch nghi ngoi tr cc b cn
bng dng gii thut CMA, ta cn thit lp ch s tham chiu RefTap sao cho n vt qu
tr tnh theo s k hiu gia ng ra b iu ch my pht vi ng vo ca b cn bng. Khi
iu kin ny c tho mn th tng thi gian tr gia ng ra b iu ch vi ng ra b cn
bng l: (RefTap 1)/nSampPerSym k hiu. Trong thc t, do ta khng bit chnh
xc tr ca knh truyn nn thng chn ch s tham chiu ng vi tap trung tm ca b
cn bng tuyn tnh, hoc tap trung tm ca b lc thun trong b cn bng DFE.
i vi cc b cn bng s dng gii thut CMA, biu thc trn khng c ngha v b cn
bng khng c ch s tham chiu. Mun xc nh tr ca knh truyn, ta da vo d liu
Cc b cn bng

292
thc nghim sau khi cc trng s ca b cn bng hi t. C th s dng hm xcorr xc
nh tng quan cho gia ng ra b iu ch v ng ra b cn bng (nh lnh help xcorr
ca s lnh xem chi tit v hm ny).
C hai cch a tr D vo qu trnh kho st: chn thm d liu hoc ct bt d liu.
o Thm vo tp d liu gc D k hiu on cui. Trc khi so snh d liu gc v d liu
thu, b i D k hiu phn u ca d liu thu. Theo cch ny, ton b d liu gc (khng
tnh phn thm vo) u c so snh vi d liu thu.
o Trc khi so snh, b i D k hiu cui ca d liu gc v D k hiu u tin ca d liu
thu. Theo cch ny, mt s k hiu gc s khng c so snh vi d liu thu.
V d 18-2. S dng b cn bng tuyn tnh nh khong k hiu, c 3 trng s, cp nht
theo gii thut LMS chun ho cn bng mt tn hiu BPSK, c xt n tr ca knh
truyn, dng phng php ct bt d liu.
M = 2; % S dng phng php iu ch BPSK.
msg = randint(1000,1,M); % D liu ngu nhin
modmsg = pskmod(msg,M); % iu ch.
trainlen = 100; % Chiu di ca chui hun luyn
trainsig = modmsg(1:trainlen); % Chui hun luyn
% nh ngha b cn bng.
eqlin = lineareq(3,normlms(.0005,.0001),pskmod(0:M-1,M));
eqlin.RefTap = 2; % Thit lp ch s tham chiu l tap trung tm.
[eqsig,detsym] = equalize(eqlin,modmsg,trainsig); % Cn bng.
detmsg = pskdemod(detsym,M); % Gii iu ch tin hiu pht hin.
% B li tr do thit lp ch s tham chiu.
D = (eqlin.RefTap -1)/eqlin.nSampPerSym;
trunc_detmsg = detmsg(D+1:end); % Loi b D k hiu u ca d liu cn
bng.
trunc_msg = msg(1:end-D); % B i D k hiu cui ca thng ip.
% Tnh t l li, khng xt chui hun luyn.
[numerrs,ber] = biterr(trunc_msg(trainlen+1:end),...
trunc_detmsg(trainlen+1:end))
Kt qu xut ra nh sau:
numerrs =
0
ber =
0
Trong trng hp d liu vo c chia thnh nhiu vector lin tip nhau (v d nh trong
cc qu trnh lp vng), ta phi s dng hm equalize nhiu ln, lu li trng thi ni ca b
cn bng chun b cho ln thc hin k tip. Ni cch khc, cc gi tr cui ca cc thuc
tnh WeightInputs v Weights sau mt vng lp cng chnh l gi tr khi u trong vng
lp k tip. C hai kh nng c th xy ra: s dng cng mt b cn bng trong cc vng lp
khc nhau, hoc thay i b cn bng sau mi vng lp. Sau y l quy trnh s dng b cn
bng trong cc vng lp ng vi hai kh nng nu trn:
Cc b cn bng

293
o S dng cng mt b cn bng trong cc vng lp:
1) Trc khi bt u cc vng lp, khi to b cn bng m ta cn s dng.
2) Thit lp thuc tnh ResetBeforeFiltering = 0 bo m tnh lin tc gia cc
ln lp.
3) Trong mi vng lp, s dng hm equalize thc hin cn bng.
o Thay i b cn bng trong cc vng lp:
1) Trc khi bt u cc vng lp, khi to cc i tng m t cc b cn bng khc
nhau m ta s s dng trong cc vng lp. V d: to i tng eqcma m t b cn
bng dng gii thut CMA v mt i tng eqlms m t b cn bng dng gii thut
LMS.
2) Vi mi i tng c to ra bc 1, thit lp thuc tnh
ResetBeforeFiltering bng 0.
3) To mt i tng m t b cn bng eq_current ch b cn bng c s dng
trong cc vng lp v gn cho n gi tr l i tng m t b cn bng cn s dng
trong vng lp ang xt. V d: trong vng lp u tin, gn eq_current = eqcma,
trong vng lp th hai, gn eq_current = eqlms, ...
4) Trong mi vng lp, thc hin cc bc sau:
a) S dng hm equalize vi i tng eq_current thc hin qu trnh cn bng
b) Copy gi tr ca cc thuc tnh WeightInputs v Weights t i tng
eq_current sang i tng m chng ta s s dng trong vng lp k. V d:
eqlms.WeightInputs = eq_current.WeightInputs;
eqlms.Weights = eq_current.Weights;
c) nh ngha li i tng eq_current ch n i tng m t b cn bng s s
dng trong vng lp k tip. Nh vy, eq_current s m t mt b cn bng mi
nhng vn duy tr cc trng thi c v cc trng s c.
V d 18-3. S dng b cn bng tuyn tnh cn bng mt tn hiu 16QAM, tn hiu vo
c tch thnh ba chui d liu ni tip nhau. u tin, s dng gii thut RLS, sau ln lp
th hai, chuyn sang gii thut LMS.
% Thit lp cc thng s.
M = 16; % Tp k hiu ca pp iu ch
sigconst = qammod(0:M-1,M); % Dng phn b ca tn hiu 16-QAM
chan = [1 0.45 0.3+0.2i]; % Cc h s ca knh truyn
% Thit lp cc b cn bng.
eqrls = lineareq(6, rls(0.99,0.1));% Khi to mt i tng m t b cn bng
RLS.
eqrls.SigConst = sigconst; % M t tn hiu.
eqrls.ResetBeforeFiltering = 0; % Duy tr s lin tc gia cc ln lp.
eqlms = lineareq(6, lms(0.003)); % Khi to mt i tng m t b cn bng
LMS.
eqlms.SigConst = sigconst; % M t tn hiu.
eqlms.ResetBeforeFiltering = 0; % Duy tr s lin tc gia cc ln lp.
Cc b cn bng

294
eq_current = eqrls; % S dng b cn bng RLS trong ln lp u tin.
% Vng lp chnh
for jj = 1:4
msg = randint(500,1,M); % Thng ip ngu nhin
modmsg = qammod(msg,M); % iu ch 16-QAM.
% Thit lp chui hun luyn cho ln lp u tin.
if jj == 1
ltr = 200; trainsig = modmsg(1:ltr);
else
% S dng ch quyt nh sau ln lp u tin.
ltr = 0; trainsig = [];
end
% M phng mo knh truyn
filtmsg = filter(chan,1,modmsg);
% Cn bng tn hiu thu.
s = equalize(eq_current,filtmsg,trainsig);
% V cc tn hiu.
h = scatterplot(filtmsg(ltr+1:end),1,0,'bx'); hold on;
scatterplot(s(ltr+1:end),1,0,'g.',h);
scatterplot(sigconst,1,0,'k*',h);
legend('Tin hieu thu','Tin hieu sau khi can bang','Dang phan bo tin hieu');
title(['Iteration #' num2str(jj) ' (' eq_current.AlgType ')']);
hold off;
% Chuyn t RLS sang LMS sau ln lp th hai.
if jj == 2
eqlms.WeightInputs = eq_current.WeightInputs; % Copy cc ng vo cui vng
lp.
eqlms.Weights = eq_current.Weights; % Copy cc trng s cui vng lp.
eq_current = eqlms; % S dng b cn bng LMS.
end
end
mi vng lp, chng trnh s thc hin v th phn b ca tn hiu thu, tn hiu sau khi
cn bng v phn b ca tn hiu 16QAM l tng. V d, hnh v di m t kt qu sau khi
thc hin vng lp th t:
Cc b cn bng

295

Hnh 18.5.
I8.4. 040 80 04N 84N0 ML5
Cc b cn bng MLSE s dng gii thut Viterbi cn bng cc tn hiu truyn qua cc
knh truyn phn tn thi gian. s dng b cn bng MLSE, dng hm mlseeq trong
MATLAB Communication Toolbox. Hm ny nhn vo tn hiu bng gc c iu ch
tuyn tnh v xut ra c lng chui xc sut cc i ca tn hiu, da vo c lng knh
truyn c m t di dng mt b lc p ng xung hu hn (FIR).
Gii thut gii m tn hiu thu m hm mlseeq s dng bao gm ba bc:
o Dng b lc FIR, tng ng vi c lng ca knh truyn tc ng ln cc k hiu
ng vo.
o S dng gii thut Viterbi tnh ton cc ng dn li v o trng thi, chnh l cc
s c gn cho cc k hiu mi bc ca gii thut Viterbi. Cc o da trn khng gian
Euclide.
o Xut ra c lng chui xc sut ln nht, l mt chui cc s phc tng ng vi cc
im phn b (constellation) ca tn hiu sau khi iu ch.
Theo l thuyt, b cn bng MLSE cho cht lng tt nht, nhng qu trnh tnh ton phc
tp.
C php tng qut ca hm mlseeq nh sau:
>> y = mlseeq(x,chcffs,const,tblen,opmode,nsamp)
trong :
x l vector tn hiu bng gc cn cn bng
chcffs l vector biu din c lng ca knh truyn
Cc b cn bng

296
const l vector nh ngha dng phn b ca tn hiu l tng (signal constellation)
tblen l mt s dng xc nh mc d (traceback depth). B cn bng thc hin d t
trng thi c o tt nht.
nsamp l s mu trn mt k hiu ng vo, cn gi l h s ly mu qu. Nu nsamp > 1 th
chcffs biu din mt knh truyn c ly mu qu.
opmode l mt chui cho bit ch hot ng ca b cn bng, c th nhn mt trong cc
gi tr sau:
rst: khng c delay:
>> y = mlseeq(...,'rst',nsamp,preamble,postamble)
Trong ch ny, c th thm vo cc vector vi cc phn t t 0 n M-1 (M: bc ca
phng php iu ch) vo trc v sau chui d liu. Cc vector ny c xc nh tng
ng bi cc thng s preamble v postamble.
cont: tn hiu ra b delay mt khong bng tblen k hiu.
>> [y final_metric final_states final_inputs] = mlseeq(...,'cont'
,nsamp,init_metric,init_states,init_inputs)
ch ny, ngi s dng c th cung cp thm cc thng tin v cc o trng thi khi
u v trng thi u ca b nh ca b cn bng,... ng thi nhn v cc thng tin tng
ng sau khi kt thc cn bng. Bng 18.3 ch ra kch thc v gi tr c th ca cc thng s
ny.
Bng 18.3. Cc thng s ph lin quan n hm mlseeq
Thng s M t Kch thc Phm vi gi tr
init_metric Cc o trng thi 1 x numStates S thc
init_states Cc trng thi traceback numStates x tblen
0 n numStates - 1
init_inputs Cc ng vo traceback numStates x tblen 0 n M - 1
numStates = M^(L-1) vi L l chiu di p ng xung ca knh truyn
Sau y l mt v d s dng c php c bn ca hm mlseeq thc hin cn bng. Kt
qu cng tt nu mc d cng ln, tuy nhin thi gian tnh ton lu hn.
V d 18-4. S dng b cn bng MLSE vi traceback depth bng 10 cn bng mt tn
hiu iu ch QPSK. Tnh thi gian thc thi v t l li k hiu. So snh vi trng hp
traceback depth bng 2.
M = 4; const = pskmod([0:M-1],M); % Dng iu ch 4-PSK
orgmsg = [1 2 2 0 3 1 3 3 2 1 0 2 3 0 1]';
msg = pskmod([1 2 2 0 3 1 3 3 2 1 0 2 3 0 1]',M); % Thng dip sau iu ch
chcoeffs = [.986; .845; .237; .12345+.31i]; % Cc h s knh truyn
filtmsg = filter(chcoeffs,1,msg); % M phng mo knh truyn.
tblen = 10; % Traceback depth
chanest = chcoeffs; % Gi s c tnh knh truyn bit trc.
tic
msgEq = mlseeq(filtmsg,chanest,const,tblen,'rst'); % Cn bng.
Cc b cn bng

297
rcvmsg = pskdemod(msgEq,M); % Gii iu ch
disp('Truong hop 1:')
[numerr1,SER1] = symerr(orgmsg,rcvmsg) % S k hiu li v t l k hiu
li
toc
tblen = 2; % Traceback depth
tic
msgEq = mlseeq(filtmsg,chanest,const,tblen,'rst'); % Cn bng.
rcvmsg = pskdemod(msgEq,M); % Gii iu ch
disp('Truong hop 2:')
[numerr2,SER2] = symerr(orgmsg,rcvmsg) % S k hiu li v t l k hiu
li
toc
Kt qu xut ra mn hnh:
Truong hop 1:
numerr1 =
0
SER1 =
0
Elapsed time is 0.010000 seconds.
Truong hop 2:
numerr2 =
0
SER2 =
0
Elapsed time is 0.050000 seconds.
Ch hot ng lin tc (continuos mode):
Trong trng hp d liu vo c phn hoch thnh nhiu vector ni tip nhau th cch thch
hp nht l s dng b cn bng MLSE ch lin tc. Trong ch ny, hm mlseeq s
lu li cc trng thi trong ca n sau mi ln thc hin v s dng cc gi tr lu tr ny lm
cc gi tr khi u trong ln thc hin tip theo. hot ng ch lin tc, ta chn
thng s opmode = cont. Qu trnh thc hin cn bng trong ch lin tc gm 2 bc
nh sau:
o Trc khi bt u vng lp, khi to ba ma trn rng sm, ts, ti lu cc o trng
thi, cc trng thi traceback v cc ng vo traceback.
o Trong mi vng lp, dng hm mlseeq nh sau:
[y,sm,ts,ti] = mlseeq(x,chcoeffs,const,tblen,'cont',nsamp,sm,ts,ti);
Dng cc thng s sm, ts, ti lm cc thng s khi u ca ln lp hin ti, ng thi sau
khi thc hin xong, hm mlseeq li cp nht cc gi tr cui ln lp vo trong cc ma trn
sm, ts, ti chun b cho ln lp k.
Cc b cn bng

298
Trong ch lin tc, nu ta c mc d (traceback depth) bng tblen th ng ra s b tr
i tblen k hiu. iu ny c ngha l tblen k hiu ng ra u tin s khng lin quan n
tn hiu vo, trong khi tblen k hiu cui cng ca ng vo cng khng lin quan n tn
hiu ng ra. Trong v d sau, hm mlseeq s dng mc traceback bng 3 v 3 k hiu u tin
ca ng ra khng lin quan n cc k hiu ng vo (l vector ones(1,10)).
>> y = mlseeq(ones(1,10),1,[-7:2:7],3,'cont')
y =
-7 -7 -7 1 1 1 1 1 1 1
Vn delay c ngha quan trng khi ta cn so snh chui d liu ng ra v ng vo, chng
hn tnh t l li k hiu, v.v....
V d 18-5. S dng b cn bng MLSE vi traceback depth bng 10 hot ng ch
lin tc cn bng mt tn hiu iu ch 4-PSK c phn hoch thnh nhiu chui d liu
ni tip. Tnh ton t l li k hiu v v th phn b cho cc tn hiu trc v sau khi cn
bng.
u tin, cn to ba ma trn sm, ts v ti lu cc thng s khi u cho hot ng ca b
cn bng trong mi vng lp, cc thng s ny s thay i sau mi ln lp. Trong mi vng
lp, tin hnh to thng ip ngu nhin, iu ch, lc v cn bng. ng thi, cui mi vng
lp, phi cp nht cc gi tr ca sm, ts v ti.
Cui cng, tin hnh tnh t l li k hiu tch lu qua ton b cc vng lp. Khi tnh ton, ta
lu rng do c hin tng delay ng ra, nn ta phi b i tblen k hiu u tin ca chui
thu c v tblen k hiu cui cng ca chui pht trc khi so snh. iu ny bo m cc
k hiu c so snh l cc k hiu tht s c ngha v c tnh tng ng vi nhau.
Di y l ton b chng trnh:
n = 200; % S k hiu trong mi ln lp
numiter = 25; % S ln lp
M = 4; % iu ch 4-PSK.
const = pskmod(0:M-1,M); % Dng tn hiu 4-PSK
chcoeffs = [1 ; 0.25]; % Cc h s ca knh truyn
chanest = chcoeffs; % c lng knh truyn
tblen = 10; % Mc traceback ca b cn bng
nsamp = 1; % S mu d liu vo trn mt k hiu
sm = []; ts = []; ti = []; % Khi to d liu cho b cn bng.
% Khi to cc d liu c tnh tch ly.
fullmodmsg = []; fullfiltmsg = []; fullrx = [];
for jj = 1:numiter
msg = randint(n,1,M); % Vector tn hiu ngu nhin
modmsg = pskmod(msg,M); % Tn hiu PSK
filtmsg = filter(chcoeffs,1,modmsg); % Tn hiu sau khi qua knh truyn
% Thc hin cn bng, s dng cc gi tr khi u l cc gi tr c c
khi
% kt thc ln lp trc, v lu li cc gi tr cui ln lp ny.
[rx sm ts ti] = mlseeq(filtmsg,chanest,const,tblen,...
Cc b cn bng

299
'cont',nsamp,sm,ts,ti);
% Cp nht cc vector bng cch tch lu thm kt qu mi.
fullmodmsg = [fullmodmsg; modmsg];
fullfiltmsg = [fullfiltmsg; filtmsg];
fullrx = [fullrx; rx];
end
% Tnh tng s k hiu li. Ch ti vn delay.
numsymerrs = symerr(fullrx(tblen+1:end),fullmodmsg(1:end-tblen))
% V cc tn hiu trc v sau khi cn bng.
h = scatterplot(fullfiltmsg); hold on;
scatterplot(fullrx,1,0,'r*',h);
legend('Filtered signal before equalization','Equalized signal',...
'Location','NorthOutside');
hold off;
Kt qu thc thi chng trnh nh sau:
numsymerrs =
0
th phn b:

Hnh 18.6.
Mt s h thng thng tin s dng cc chui k hiu bit trc chn thm vo u
hoc cui chui d liu pht. Cc chui thm vo ny c gi ln lt l preamble v
postamble. Hm mlseeq cng cho php ta thm vo cc vector ny, vi iu kin b cn bng
Cc b cn bng

300
hot ng trong ch khng c delay (opmode = rst). Khi gi hm mlseeq, ta cung
cp cho n cc vector m cc phn t ca n l mt ch s tham chiu ti vector phn b ca
tn hiu iu ch l tng. V d, vi phng php iu ch 4-PSK, vector phn b ca tn
hiu l [1 j -1 j], vector preamble bng [1 2 4] c ngha l tn hiu iu ch s bt u vi [1 j
j]. Nu h thng khng s dng preamble (hoc postamble), ta cung cp vector tng ng
bng [].
V d 18-6. M phng qu trnh cn bng mt tn hiu iu ch 4-PSK dng b cn bng
MLSE, h thng c s dng preamble v khng s dng postamble.
M = 4; % Use 4-PSK modulation.
const = pskmod(0:3,4); % PSK constellation
tblen = 16; % Traceback depth for equalizer
preamble = [3; 1]; % Expected preamble, as integers
msgIdx = randint(98,1,M); % Random symbols
msgIdx = [preamble; msgIdx]; % Include preamble at the beginning.
msg = pskmod(msgIdx,M); % Modulated message
chcoeffs = [.623; .489+.234i; .398i; .21]; % Channel coefficients
chanest = chcoeffs; % Channel estimate
filtmsg = filter(chcoeffs,1,msg); % Introduce channel distortion.
d = mlseeq(filtmsg,chanest,const,tblen,'rst',1,preamble,[]);
[nsymerrs ser] = symerr(msg,d) % Symbol error rate
Kt qu xut ra ca s lnh ca MATLAB:
nsymerrs =
0
ser =
0
# Bi tp 18-1.
Thc hin li v d 18-1 nhng thay i gii thut cp nht trng s. C th l dng cc gii
thut sau:
a. Gii thut LMS c du, kch c bc 0,01.
b. Gii thut LMS chun ho vi kch c bc 0,01.
c. Gii thut LMS c kch c bc thay i trong khong 0,005 n 0,015, gia s 0,001.
d. Gii thut RLS, kch c bc 0,01, forget factor = 0,99
e. Gii thut CMA, kch c bc 0,01
# Bi tp 18-2.
Lm li bi 18-1 nhng s dng b cn bng nh khong t l vi K = 2.
# Bi tp 18-3.
S dng b cn bng tuyn tnh cn bng mt tn hiu 16QAM, tn hiu vo c tch
thnh ba chui d liu ni tip nhau. u tin, s dng gii thut RLS, sau ln lp th hai,
chuyn sang gii thut CMA. c tnh knh truyn l chan = [1 0.45 0.3+0.2i].
# Bi tp 18-4.
Cc b cn bng

301
Xy dng mt b cn bng DFE nh khong t l vi K = 2, c 5 trng s nhnh thun v
3 trng s nhnh hi tip, s dng gii thut RLS vi kch c bc bng 0,2. Dng b cn
bng ny cn bng mt tn hiu ngu nhin iu ch bng phng php QPSK, truyn qua
knh truyn c h s [.623; .489+.234i; .398i; .21]. Xc nh t l li bit v thi gian thc thi.
Ln lt thay i gi tr kch c bc: 0,01; 0,05; 0,1; 0,5. Xc nh li t l li bit v thi
gian thc thi. Nhn xt kt qu.
# Bi tp 18-5.
Thay b cn bng DFE trong bi tp 18-4 bng mt b cn bng MLSE c traceback bng 2,
hot ng ch lin tc. So snh thi gian thc thi v t l bit li so vi bi tp 18-4. Sau
tng traceback ln cc gi tr 5, 10, 20 v nhn xt kt qu.
# Bi tp 18-6.
M phng qu trnh cn bng mt tn hiu iu ch 16-QAM dng b cn bng MLSE, h
thng c s dng preamble v postamble: preamble = [1; 3; 5; 6], postamble = [2; 1; 3; 4],
traceback = 10. Knh truyn c h s l [.986; .845; .237; .123+.31i]. Xc nh t l bit li.
V tn hiu trc v sau khi cn bng.
# *Bi tp 18-7.
Khng dng cc hm cn bng c sn ca MATLAB, hy vit chng trnh m phng qu
trnh cn bng tn hiu iu ch 16-QAM nh trong bi tp 18-6, s dng phng php
nghch o ma trn t tng quan. So snh kt qu vi bi tp 18-6.
Cc b cn bng

302
Danh sch cc hm c gii thiu trong chng 18
cma Khi to i tng cn bng theo gii thut module khng i
dfe To i tng m t b cn bng hi tip quyt nh
equalize Thc hin qu trnh cn bng mt tn hiu
lms Khi to i tng cn bng theo gii thut LMS
lineareq To i tng m t b cn bng thch nghi
mlseeq To i tng m t b cn bng MLSE
normlms Khi to i tng cn bng theo gii thut LMS chun ho
rls Khi to i tng cn bng theo gii thut RLS
signlms Khi to i tng cn bng theo gii thut LMS c du
varlms Khi to i tng cn bng theo gii thut LMS c kch c bc thay i
xcorr Hm tng quan cho gia hai tn hiu

Ph lc

303

N0 L00

4. 040 h4M 50 00N0 I80N0 540h Kh0N0 00 54N I80N0 M4IL48
Sau y l cc hm c cp trong sch nhng khng c MATLAB cung cp sn (hm
t vit):
1. btcode (Phn 13.1)
function [out] = btcode (infile,bx,by,outfile)
% BTCODE (infile,singvals,outfile)
% Image Compression Using Block Truncation Coding.
% Written by Luigi Rosa LAquila - Italia
% infile is input file name present in the current directory
% bx is a positive integer (x block size)
% by is a positive integer (y block size)
% outfile is output file name which will be created
%*****************************************************************
if (exist(infile)==2)
a = imread(infile);
figure('Name','Input image');
imshow(a);
else
warndlg('The file does not exist.',' Warning ');
out=[];
return
end
%------------------------------------------------------
if isgray(a)
dvalue = double(a);
dx=size(dvalue,1);
dy=size(dvalue,2);
% if input image size is not a multiple of block size image is resized
modx=mod(dx,bx);
mody=mod(dy,by);
dvalue=dvalue(1:dx-modx,1:dy-mody);
% the new input image dimensions (pixels)
dx=dx-modx;
dy=dy-mody;
% number of non overlapping blocks required to cover
% the entire input image
Ph lc

304
nbx=size(dvalue,1)/bx;
nby=size(dvalue,2)/by;
% the output compressed image
matrice=zeros(bx,by);
% the compressed data
m_u=zeros(nbx,nby);
m_l=zeros(nbx,nby);
mat_log=logical(zeros(bx,by));
posbx=1;
for ii=1:bx:dx
posby=1;
for jj=1:by:dy
% the current block
blocco=dvalue(ii:ii+bx-1,jj:jj+by-1);
% the average gray level of the current block
m=mean(mean(blocco));
% the logical matrix correspoending to the current block
blocco_binario=(blocco>=m);
% the number of pixel (of the current block) whose gray level
% is greater than the average gray level of the current block
K=sum(sum(double(blocco_binario)));
% the average gray level of pixels whose level is GREATER than
% the block average gray level
mu=sum(sum(double(blocco_binario).*blocco))/K;
% the average gray level of pixels whose level is SMALLER than
% the block average gray level
if K==bx*by
ml=0;
else
ml=sum(sum(double(~blocco_binario).*blocco))/(bx*by-K);
end
% the COMPRESSED DATA which correspond to the input image
m_u(posbx,posby)=mu; %---> the m_u matrix
m_l(posbx,posby)=ml; %---> the m_l matrix
mat_log(ii:ii+bx-1,jj:jj+by-1)=blocco_binario;
%--->logical matrix
% the compressed image
matrice(ii:ii+bx-1,jj:jj+by-
1)=(double(blocco_binario).*mu)+(double(~blocco_binario).*ml);
posby=posby+1;
Ph lc

305
end
posbx=posbx+1;
end
% display the logical matrix
figure('Name','Logical matrix');
imshow(mat_log);
if isa(a,'uint8')
out=uint8(matrice);
figure('Name','Compressed image');
imshow(out);
imwrite(out, outfile);
return
end
if isa(a,'uint16')
out=uint16(matrice);
figure('Name','Compressed image');
imshow(out);
imwrite(out, outfile);
return
end
if isa(a,'double')
out=(matrice);
figure('Name','Compressed image');
imshow(out);
imwrite(out, outfile);
return
end
end
%------------------------------------------------------
if isrgb(a)
double_a=double(a);
ax=size(a,1)-mod(size(a,1),bx);
ay=size(a,2)-mod(size(a,2),by);
out_rgb=zeros(ax,ay,3);
%-----------------------------------------------------------
%-----------------------------------------------------------
% ----------------------- RED component ------------------
dvalue=double_a(:,:,1);
dx=size(dvalue,1);
dy=size(dvalue,2);
Ph lc

306
% if input image size is not a multiple of block size image is resized
modx=mod(dx,bx);
mody=mod(dy,by);
dvalue=dvalue(1:dx-modx,1:dy-mody);
% the new input image dimensions (pixels)
dx=dx-modx;
dy=dy-mody;
% number of non overlapping blocks required to cover
% the entire input image
nbx=size(dvalue,1)/bx;
nby=size(dvalue,2)/by;
% the output compressed image
matrice=zeros(bx,by);
% the compressed data
m_u=zeros(nbx,nby);
m_l=zeros(nbx,nby);
mat_log=logical(zeros(bx,by));
posbx=1;
for ii=1:bx:dx
posby=1;
for jj=1:by:dy
% the current block
blocco=dvalue(ii:ii+bx-1,jj:jj+by-1);
% the average gray level of the current block
m=mean(mean(blocco));
% the logical matrix correspoending to the current block
blocco_binario=(blocco>=m);
% the number of pixel (of the current block) whose gray level
% is greater than the average gray level of the current block
K=sum(sum(double(blocco_binario)));
% the average gray level of pixels whose level is GREATER than
% the block average gray level
mu=sum(sum(double(blocco_binario).*blocco))/K;
% the average gray level of pixels whose level is SMALLER than
% the block average gray level
if K==bx*by
ml=0;
else
ml=sum(sum(double(~blocco_binario).*blocco))/(bx*by-K);
end
Ph lc

307
% the COMPRESSED DATA which correspond to the input image
m_u(posbx,posby)=mu; %---> the m_u matrix
m_l(posbx,posby)=ml; %---> the m_l matrix
mat_log(ii:ii+bx-1,jj:jj+by-1)=blocco_binario;
%---> the logical matrix
% the compressed image
matrice(ii:ii+bx-1,jj:jj+by- ...
1)=(double(blocco_binario).*mu)+(double(~blocco_binario).*ml);
posby=posby+1;
end
posbx=posbx+1;
end
out_rgb(:,:,1)=matrice;
% ----------------------- GREEN component ------------------
dvalue=double_a(:,:,2);
dx=size(dvalue,1);
dy=size(dvalue,2);
% if input image size is not a multiple of block size image is resized
modx=mod(dx,bx);
mody=mod(dy,by);
dvalue=dvalue(1:dx-modx,1:dy-mody);
% the new input image dimensions (pixels)
dx=dx-modx;
dy=dy-mody;
% number of non overlapping blocks required to cover
% the entire input image
nbx=size(dvalue,1)/bx;
nby=size(dvalue,2)/by;
% the output compressed image
matrice=zeros(bx,by);
% the compressed data
m_u=zeros(nbx,nby);
m_l=zeros(nbx,nby);
mat_log=logical(zeros(bx,by));
posbx=1;
for ii=1:bx:dx
posby=1;
for jj=1:by:dy
% the current block
blocco=dvalue(ii:ii+bx-1,jj:jj+by-1);
Ph lc

308
% the average gray level of the current block
m=mean(mean(blocco));
% the logical matrix correspoending to the current block
blocco_binario=(blocco>=m);
% the number of pixel (of the current block) whose gray level
% is greater than the average gray level of the current block
K=sum(sum(double(blocco_binario)));
% the average gray level of pixels whose level is GREATER than
% the block average gray level
mu=sum(sum(double(blocco_binario).*blocco))/K;
% the average gray level of pixels whose level is SMALLER than
% the block average gray level
if K==bx*by
ml=0;
else
ml=sum(sum(double(~blocco_binario).*blocco))/(bx*by-K);
end
% the COMPRESSED DATA which correspond to the input image
m_u(posbx,posby)=mu; %---> the m_u matrix
m_l(posbx,posby)=ml; %---> the m_l matrix
mat_log(ii:ii+bx-1,jj:jj+by-1)=blocco_binario;
%---> the logical matrix
% the compressed image
matrice(ii:ii+bx-1,jj:jj+by- ...
1)=(double(blocco_binario).*mu)+(double(~blocco_binario).*ml);
posby=posby+1;
end
posbx=posbx+1;
end
out_rgb(:,:,2)=matrice;
% ----------------------- BLUE component ------------------
dvalue=double_a(:,:,3);
dx=size(dvalue,1);
dy=size(dvalue,2);
% if input image size is not a multiple of block size image is resized
modx=mod(dx,bx);
mody=mod(dy,by);
dvalue=dvalue(1:dx-modx,1:dy-mody);
% the new input image dimensions (pixels)
dx=dx-modx;
Ph lc

309
dy=dy-mody;
% number of non overlapping blocks required to cover
% the entire input image
nbx=size(dvalue,1)/bx;
nby=size(dvalue,2)/by;
% the output compressed image
matrice=zeros(bx,by);
% the compressed data
m_u=zeros(nbx,nby);
m_l=zeros(nbx,nby);
mat_log=logical(zeros(bx,by));
posbx=1;
for ii=1:bx:dx
posby=1;
for jj=1:by:dy
% the current block
blocco=dvalue(ii:ii+bx-1,jj:jj+by-1);
% the average gray level of the current block
m=mean(mean(blocco));
% the logical matrix correspoending to the current block
blocco_binario=(blocco>=m);
% the number of pixel (of the current block) whose gray level
% is greater than the average gray level of the current block
K=sum(sum(double(blocco_binario)));
% the average gray level of pixels whose level is GREATER than
% the block average gray level
mu=sum(sum(double(blocco_binario).*blocco))/K;
% the average gray level of pixels whose level is SMALLER than
% the block average gray level
if K==bx*by
ml=0;
else
ml=sum(sum(double(~blocco_binario).*blocco))/(bx*by-K);
end
% the COMPRESSED DATA which correspond to the input image
m_u(posbx,posby)=mu; %---> the m_u matrix
m_l(posbx,posby)=ml; %---> the m_l matrix
mat_log(ii:ii+bx-1,jj:jj+by-1)=blocco_binario;
%--->logical matrix
% the compressed image
Ph lc

310
matrice(ii:ii+bx-1,jj:jj+by-...
1)=(double(blocco_binario).*mu)+(double(~blocco_binario).*ml);
posby=posby+1;
end
posbx=posbx+1;
end
out_rgb(:,:,3)=matrice;
%------------------------------------------ -----------------
if isa(a,'uint8')
out=uint8(out_rgb);
figure('Name','Compressed image');
imshow(out);
imwrite(out, outfile);
return
end
if isa(a,'uint16')
out=uint16(out_rgb);
figure('Name','Compressed image');
imshow(out);
imwrite(out, outfile);
return
end
if isa(a,'double')
out=(out_rgb);
figure('Name','Compressed image');
imshow(out);
imwrite(out, outfile);
return
end
end
%------------------------------------------------------
2. dctcompr (Mc 13.2 chng 13)
function [im] = dctcompr (infile,coeff,outfile)
% DCTCOMPR (infile,coeff,outfile)
% Image compression based on Discrete Cosine Transform.
% Written by Luigi Rosa LAquila - Italia
% infile is input file name present in the current directory
% coeff is the number of coefficients with the most energy
% outfile is output file name which will be created
%*****************************************************************
Ph lc

311
if (exist(infile)==2)
a = imread(infile);
figure('Name','Input image');
imshow(a);
else
warndlg('The file does not exist.',' Warning ');
im=[];
return
end
if isrgb(a)
if isa(a(:,:,1),'uint8')
red = double(a(:,:,1));
green = double(a(:,:,2));
blue = double(a(:,:,3));
red_dct=dct2(red);
green_dct=dct2(green);
blue_dct=dct2(blue);
red_pow = red_dct.^2;
green_pow = green_dct.^2;
blue_pow = blue_dct.^2;
red_pow=red_pow(:);
green_pow=green_pow(:);
blue_pow=blue_pow(:);
[B_r,index_r]=sort(red_pow);
[B_g,index_g]=sort(green_pow);
[B_b,index_b]=sort(blue_pow);
index_r=flipud(index_r);
index_g=flipud(index_g);
index_b=flipud(index_b);
im_dct_r=zeros(size(red));
im_dct_g=zeros(size(green));
im_dct_b=zeros(size(blue));
for ii=1:coeff
im_dct_r(index_r(ii))=red_dct(index_r(ii));
im_dct_g(index_g(ii))=green_dct(index_g(ii));
im_dct_b(index_b(ii))=blue_dct(index_b(ii));
end
im_r=idct2(im_dct_r);
im_g=idct2(im_dct_g);
im_b=idct2(im_dct_b);
Ph lc

312
im=zeros(size(red,1),size(red,2),3);
im(:,:,1)=im_r;
im(:,:,2)=im_g;
im(:,:,3)=im_b;
im=uint8(im);
imwrite(im, outfile);
figure('Name','Output image');
imshow(im);
return;
end
if isa(a(:,:,1),'uint16')
red = double(a(:,:,1));
green = double(a(:,:,2));
blue = double(a(:,:,3));
red_dct=dct2(red);
green_dct=dct2(green);
blue_dct=dct2(blue);
red_pow = red_dct.^2;
green_pow = green_dct.^2;
blue_pow = blue_dct.^2;
red_pow=red_pow(:);
green_pow=green_pow(:);
blue_pow=blue_pow(:);
[B_r,index_r]=sort(red_pow);
[B_g,index_g]=sort(green_pow);
[B_b,index_b]=sort(blue_pow);
index_r=flipud(index_r);
index_g=flipud(index_g);
index_b=flipud(index_b);
im_dct_r=zeros(size(red));
im_dct_g=zeros(size(green));
im_dct_b=zeros(size(blue));
for ii=1:coeff
im_dct_r(index_r(ii))=red_dct(index_r(ii));
im_dct_g(index_g(ii))=green_dct(index_g(ii));
im_dct_b(index_b(ii))=blue_dct(index_b(ii));
end
im_r=idct2(im_dct_r);
im_g=idct2(im_dct_g);
im_b=idct2(im_dct_b);
Ph lc

313
im=zeros(size(red,1),size(red,2),3);
im(:,:,1)=im_r;
im(:,:,2)=im_g;
im(:,:,3)=im_b;
im=uint16(im);
imwrite(im, outfile);
figure('Name','Output image');
imshow(im);
return;
end
if isa(a(:,:,1),'double')
red = double(a(:,:,1));
green = double(a(:,:,2));
blue = double(a(:,:,3));
red_dct=dct2(red);
green_dct=dct2(green);
blue_dct=dct2(blue);
red_pow = red_dct.^2;
green_pow = green_dct.^2;
blue_pow = blue_dct.^2;
red_pow=red_pow(:);
green_pow=green_pow(:);
blue_pow=blue_pow(:);
[B_r,index_r]=sort(red_pow);
[B_g,index_g]=sort(green_pow);
[B_b,index_b]=sort(blue_pow);
index_r=flipud(index_r);
index_g=flipud(index_g);
index_b=flipud(index_b);

im_dct_r=zeros(size(red));
im_dct_g=zeros(size(green));
im_dct_b=zeros(size(blue));
for ii=1:coeff
im_dct_r(index_r(ii))=red_dct(index_r(ii));
im_dct_g(index_g(ii))=green_dct(index_g(ii));
im_dct_b(index_b(ii))=blue_dct(index_b(ii));
end
im_r=idct2(im_dct_r);
im_g=idct2(im_dct_g);
Ph lc

314
im_b=idct2(im_dct_b);
im=zeros(size(red,1),size(red,2),3);
im(:,:,1)=im_r;
im(:,:,2)=im_g;
im(:,:,3)=im_b;
imwrite(im, outfile);
figure('Name','Output image');
imshow(im);
return;
end
end
if isgray(a)
dvalue=double(a);
if isa(a,'uint8')
img_dct=dct2(dvalue);
img_pow=(img_dct).^2;
img_pow=img_pow(:);
[B,index]=sort(img_pow);
B=flipud(B);
index=flipud(index);
compressed_dct=zeros(size(dvalue));
for ii=1:coeff
compressed_dct(index(ii))=img_dct(index(ii));
end
im=idct2(compressed_dct);
im=uint8(im);
end
if isa(a,'uint16')
img_dct=dct2(dvalue);
img_pow=(img_dct).^2;
img_pow=img_pow(:);
[B,index]=sort(img_pow);
B=flipud(B);
index=flipud(index);
compressed_dct=zeros(size(dvalue));
for ii=1:coeff
compressed_dct(index(ii))=img_dct(index(ii));
end
im=idct2(compressed_dct);
im=uint16(im);
Ph lc

315
end
if isa(a,'double')
img_dct=dct2(dvalue);
img_pow=(img_dct).^2;
img_pow=img_pow(:);
[B,index]=sort(img_pow);
B=flipud(B);
index=flipud(index);
compressed_dct=zeros(size(dvalue));
for ii=1:coeff
compressed_dct(index(ii))=img_dct(index(ii));
end
im=idct2(compressed_dct);
end
imwrite(im, outfile);
figure('Name','Output image');
imshow(im);
return;
end
3. svdcompr (Mc 13.3 chng 13)
function [im] = svdcompr (infile,singvals,outfile)
% IMCOMPR (infile,singvals,outfile)
% Image compression based on Singular Value Decomposition.
% Written by Luigi Rosa LAquila - Italia
% infile is input file name present in the current directory
% singvals is the number of largest singular values (positive integer)
% outfile is output file name which will be created
% Compression ratio is equal to k(n+m+k) / n*m
% where k is the number of singular values (singvals)
% and [n,m]=size(input_image)
%*****************************************************************
if (exist(infile)==2)
a = imread(infile);
figure('Name','Input image');
imshow(a);
else
warndlg('The file does not exist.',' Warning ');
im=[];
return
end
Ph lc

316
if isrgb(a)
if isa(a(:,:,1),'uint8')
red = double(a(:,:,1));
green = double(a(:,:,2));
blue = double(a(:,:,3));
[u,s,v] = svds(red, singvals);
imred = uint8(u * s * transpose(v));
[u,s,v] = svds(green, singvals);
imgreen = uint8(u * s * transpose(v));
[u,s,v] = svds(blue, singvals);
imblue = uint8(u * s * transpose(v));
im(:,:,1) = imred;
im(:,:,2) = imgreen;
im(:,:,3) = imblue;
imwrite(im, outfile);
figure('Name','Output image');
imshow(im);
return;
end
if isa(a(:,:,1),'uint16')
red = double(a(:,:,1));
green = double(a(:,:,2));
blue = double(a(:,:,3));
[u,s,v] = svds(red, singvals);
imred = uint16(u * s * transpose(v));
[u,s,v] = svds(green, singvals);
imgreen = uint16(u * s * transpose(v));
[u,s,v] = svds(blue, singvals);
imblue = uint16(u * s * transpose(v));
im(:,:,1) = imred;
im(:,:,2) = imgreen;
im(:,:,3) = imblue;
imwrite(im, outfile);
figure('Name','Output image');
imshow(im);
return;
end
if isa(a(:,:,1),'double')
red = double(a(:,:,1));
green = double(a(:,:,2));
Ph lc

317
blue = double(a(:,:,3));
[u,s,v] = svds(red, singvals);
imred = (u * s * transpose(v));
[u,s,v] = svds(green, singvals);
imgreen = (u * s * transpose(v));
[u,s,v] = svds(blue, singvals);
imblue = (u * s * transpose(v));
im(:,:,1) = imred;
im(:,:,2) = imgreen;
im(:,:,3) = imblue;
imwrite(im, outfile);
figure('Name','Output image');
imshow(im);
return;
end
end
if isgray(a)
dvalue=double(a);
[u,s,v] = svds(dvalue, singvals);
if isa(a,'uint8')
im = uint8(u * s * transpose(v));
end
if isa(a,'uint16')
im = uint16(u * s * transpose(v));
end
if isa(a,'double')
im = (u * s * transpose(v));
end
imwrite(im, outfile);
figure('Name','Output image');
imshow(im);
return;
end
Ph lc

318
8. M00 L00 I84 000 040 h4M M4IL48 50 00N0 I80N0 540h
abs 3,9,69,101 box 38 dctmtx 164, 203
adapthisteq 186 bsc 239 de2bi 222
addpath 6 btcode 201,207, 208, 303 decode 256, 268
all 49,50 buttap 118-119 det 21, 62
amdemod 221 butter 118,125,126,127, 221 dfe 288, 289
ammod 221 buttord 118, 125 diag 21
angle 101,102 ceil 9 diric 93
any 49,50 cfirpm 129,130,139,140 disp 53, 71
arithdeco 215 char 69 dither 150
arithenco 215 cheb1ap 118, 119 double 10, 89, 151
awgn 231, 232, 238, 241, 274 cheb1ord 118, 126 dpcmdeco 209
axes 77 cheb2ap 118, 119 dpcmenco 209
axis 35, 36 cheb2ord 118, 126 dpcmopt 210, 211
bar 37, 180 chebwin 132 dpskdemod 225
barh 37 cheby1 118, 126 dpskmod 225
barthannwin 131 cheby2 118, 126, 142 ellip 118, 126, 142
bartlett 131 chirp 92 ellipap 118, 119
bchdec 256, 262 clear 6,7,11,25,46 ellipord 118, 126
bchenc 256, 262 clf 38 encode 258,264,267,268
bchgenpoly 256,262 close 44 equalize 286,289,292,293
berawgn 243 cma 287 error 62
bercoding 243 colfilt 191,192,196 errorbar 37
berconfint 245 compand 211, 212 exit 3
berfading 239,243 contour 42 eye 21
berfit 245-247 conv 94, 112 eyediagram 247, 249
bersync 243 conv2 95 fanbeam 168, 169
besselap 118, 119 convenc 273, 274 feval 65
besself 118, 126 convmtx 107, 109 fft 109, 162
bi2de 221 copy 235, 289 fft2 111, 162
bilinear 118, 123, 124 cos 4, 5, 66 fftfilt 97, 99, 114
biterr 240-242 cp2tform 159, 160 fftshift 111, 162
blackman 131 cyclgen 256, 265 figure 32, 37, 85
blackmanharris 131 cyclpoly 256, 265 fill 37, 60
blkproc 203 dct2 163 filter 96-100,112,141,237
bohman 132 dctcompr 203,204,208,310 filtfilt 97-99,112,118
find 51, 52 grid 36, 38 imdivide 153
Ph lc

319
findstr 70, 71, 74 grpdelay 102 imfilter 187, 189-192
fir1 129,130,133,134 gtext 38 imhist 178,180,181,194
fir2 129,130,133,134 guide 79, 80 imfinfo 151, 152, 170
fircls 129,130,137,138 hammgen 265 imlincomb 153
fircls1 129,130,137 hamming 265 immultiply 153
firls 129,130,133-136,143 hann 265 imnoise 186
firpm 129,130,133-136,143 help 5 impinvar 123
firpmord 129 helpwin 5 imread 150, 151, 170
firrcos 129, 130 hilbert 136 imresize 156
flattopwin 132 hist 37 imrotate 157
floor 9 histeq 182,184,186,195 imshow 155
fmdemod 221 hold off 34 imsubstract 153
fmmod 221 hold on 34 imtransform 158
fopen 94 huffmandeco 214 imview 155
for ... end 46,56,58,170 huffmandict 213, 214 imwrite 151
format 5, 10, 72 huffmanenco 214 ind2gray 150
fprintf 71-74 idct2 163 ind2rgb 150
fread 94 if ... else ... end 53 input 155,158,171,173
freqs 101
if ... elseif ...
else end
53, 55 inv 5, 30
freqz 100-103, 113 if ... end 53 invfreqs 118
fscanf 94 ifanbeam 168, 169 invfreqz 118, 128, 129
fskdemod 225 ifft 109, 162 iradon 166
fskmod 225 ifft2 111, 162 isempty 58
fspecial 190-191 im2bw 150 istrellis 272
gauspuls 92 im2double 147, 152 kaiser 131
gausswin 132 im2uint16 152 kaiserord 129, 131
gen2par 256, 266 im2uint8 152 lact2tf 108
genqamdemod 225 imabsdiff 153 lactfilt 97
genqammod 225 imadd 153 legend 36-38
get 85 imadjust 176-180, 194 legend off 38
getframe 46 imag 230 length 14
gf 257 image 155 lineareq 288
global 64 imagesc 155 linspace 21
goertzel 111 imapprox 147, 152 lloyds 208
gray2ind 150 imcomplement 153 lms 287
grayslice 150 imcrop 158 load 7, 94
loglog 32 pie 37 roots 104, 109
Ph lc

320
logspace 21 plot 32,33,36,39,91,180,181 rotate3D 40
lookfor 5, 6 plot3 39 round 9
lp2bp 118, 121 pmdemod 221 rsdec 256, 259
lp2bs 118, 121 pmmod 221 rsdecof 256
lp2hp 118, 121 polar 37 rsenc 256, 259
lp2lp 118, 121 poly 104, 109 rsencof 256
lpc 118 poly2trellis 271, 272, 275 rsgenpoly 256, 258
maketform 159 prony 118 save 7
mat2gray 150 pskdemod 225 sawtooth 92
max 21,27,62,95,104 pskmod 225 scatterplot 226, 249
maxflat 118, 127 pulstran 92 semianalytic 251
medfilt2 192, 193 pwd 6 semilogx 32
mesh 41, 42 qamdemod 225 semilogy 32
meshgrid 40 qammod 222, 223, 225 set 84, 85
min 11,19,27,62,205 quantiz 206, 208, 212 shading 42
mlseeq 295-300 quit 3 signlms 287
modnorm 225 rand 21, 58 sin 3,32,91,96,109
movie 46 randint 203, 206 sinc 93, 113
moviein 46 randn 21, 50, 235 single 10
mskmod 225 randsrc 203 size 21
nlfilt 191 rank 21 sos2ss 109
norm 21 rayleighchan 235 sos2tf 109
normlms 287 real 110, 223, 230 sos2zp 109
nuttallwin 132 rectwin 130 sprintf 74
ones 21,30,130,159,184 rem 55 square 92
oqpskdemod 225 repmat 215 ss2sos 109
oqpskmod 225 reset 237 ss2tf 109
ordfilt2 192, 193 reshape 27, 221, 222 ss2zp 109
padarray 192 residuez 105, 109 ssbdemod 221
pamdemod 225 resample 136 ssbmod 221
pammod 225 return 61, 64 stem 37, 180, 181
parzenwin 132 rgb2gray 150 stmcb 118
path 6 rgb2ind 150 strcat 46
pcolor 42 ricianchan 235 stretchlim 178, 179
peaks 42 rls 287 struct 272
phasez 101 rmpath 6 subplot 36, 38
sum 17,19,21,26,27,58 tril 21 while ... end 56-58,246
Ph lc

321
surf 42 triu 21 who 6, 7, 11
svdcompr 206, 315 tukeywin 132 whos 6
switch ... case
end
55, 56 uicontextmenu 77 wiener2 194
symerr 240, 242 uicontrol 77,85-89,91,93,95 xcorr 292
text 38, 87 uimenu 77 xlabel 37, 38
tf2latc 107, 109 unwrap 101, 102 xor 49, 50
tf2ss 109 upfirdn 97, 98 ylabel 37, 38
tf2zp 104, 109 varlms 287 yulewalk 118,127,143
title 36-38 vitdec 274 zeros 21
trace 21 waterfall 41, 48 zp2sos 109
triang 131 Wgn 234 zp2ss 109
zp2tf 104, 109

Ph lc

322
0. 040 Ih04I N00 II I4I
2D Two Dimensions
3D Three Dimensions
AM Amplitude Modulation
AMBTC Absolute Moment Block Truncating Coding
AM-DSC Amplitude Modulation Double Sideband Suppressed Carrier
AM-SSB Amplitude Modulation Single Sideband
ARMA Autoregressive Moving-average
ASCII American Standard Code for Information Interchange
BCH Bose-Chaudhuri-Hocquenghem (Coding)
BER Bit Error Rate
BPSK Binary Phase Shift Keying
BTC Block Truncating Coding
CCD Charge coupled Device
CLAHE Contrast Limited Adaptive Histogram Equalization
CLS Constrained Least Square
CMA Constant Modulus Algorithm
DBPSK Differential Binary Phase Shift Keying
DCT Discrete Cosine Transform
DFE Decision Feedback Equalization
DFT Discrete Fourier Transform
DPCM Differential Pulse Code Modulation
DPSK Differential Phase Shift Keying
FIR Finite Impulse Response
FFT Fast Fourier Transform
FM Frequency Modulation
FSK Frequency Shift Keying
GF Galois Field
GIF Graphics Interchange Format
GUI Graphical User Interface
HBTC-VQ Hierachical Block Truncating Coding Vector Quantization
HDF Hierachical Data Format
IDFT Inverse Discrete Fourier Transform
IIR Infinite Impulse Response
Inf Infinite
Ph lc

323
ISI Intersymbol Interference
JPEG Joint Photographic Experts Group
LPC Linear Predictive Coding
LMS Least Mean Square
MLSE Maximum Likelihood Sequence Estimation
MPBTC Moment Preserving Block Truncating Coding
MSB Most Significant Bit
MSE Mean Square Error
MSK Minimum Shift Keying
NaN Not a Number
OQPSK Offset Quadrature Phase Shift Keying
PAM Pulse Amplitude Modulation
PCM Pulse Code Modulation
PM Phase Modulation
PSK Phase Shift Keying
QAM Quadrature Amplitude Modulation
QPSK Quadrature Phase Shift Keying
RGB Red Green Blue
RF Radio Frequency
RLC Run Length Coding
RLS Recursive Least Square
SNR Signal to Noise Ratio
SOS Second Order Sections
SSB Single Sideband
SVD Singular Value Decomposition
TIFF Tagged Image File Format








324

TaI LI0 TNaN kNa0
[1] Theodore Rappaport, Wireless Communications Principles and Practice, 2nd
Edition, Prentice Hall PTR, 2002.
[2] R. C. Gonzalez, R.E. Woods, S.L. Eddins, Digital Signal Processing Using MATLAB,
Prentice Hall PTR, ISBN 0-13-008519-7, 2004.
[3] V.K. Ingle, J.G. Proakis, Digital Signal Processing Using MATLAB v4.0, International
Thomson Publishing, ISBN 0-534-93805-1, 1997
[4] The Mathworks, Communication Toolbox for use with MATLAB, Version 3.0.1, 2004.
[5] The Mathworks, Signal Processing Toolbox for use with MATLAB, Version 6, 2004.
[6] The Mathworks, Image Processing Toolbox for use with MATLAB, Version 4, 2003.
[7] Pasi Franti, Image Compression, Lecture Notes, University of Joensuu, 2002.
[8] Website: http://www.mathworks.com/

You might also like