CÁC GIẢI THUẬT TÍNH TOÁN BẰNG PHƯƠNG PHÁP SỐ TRONG MATLAB...21 1.. Tạo và biểu diễn dạng sóng của tín hiệuxem phần 8, điều chế tín hiệu tương tự và điều chế số...29 2.. Tạo và biểu diễn
Trang 1ĐỀ CƯƠNG ÔN TẬP MÔ
PHỎNG HT TRUYỀN THÔNG
I CÁC HOẠT ĐỘNG PHÉP TÍNH TRONG MATLAB: 3
1 Lý thuyết: 3
a Phép tính vectơ và ma trận: tạo ma trận, xóa hàng xóa cột trong ma trận, tạo vector từ ma trận, thay đổi giá trị trong ma trận 3
b Phép tính toán học: các phép tính cộng ma trận, trừ ma trận, nhân ma trận, nhân phần tử trong ma trận, chia trái và chia phải ma trận 3
c Phép tính logic: các phép cơ bản: AND (&&), OR(||), NOT (~), XOR và phép so sánh COMP 3
2 Giải bài tập giáo trình 6
II CÁCH VẼ ĐỒ THỊ 2D TRONG MATLAB 8
1 Lí thuyết: 8
2 Một số chương trình vẽ đơn giản 10
3 Giải bài tập giáo trình: 15
III CÁCH VIẾT MỘT CHƯƠNG TRÌNH MATLAB 18
1 Các thủ tục: 18
2 Một vài chương trình đơn giản như sau: 18
3 Giải bài tập giáo trình 18
IV CÁCH VIẾT MỘT FUNCTION TRONG MATLAB 20
V CÁC GIẢI THUẬT TÍNH TOÁN BẰNG PHƯƠNG PHÁP SỐ TRONG MATLAB 21
1 Tìm nghiệm bằng phương pháp chia nửa (bisection) 21
2 Tính tích phân bằng phương pháp điểm giữa 23
3 Giải phương trình vi phân bậc 1, sử dụng phương pháp Euler24 1 Lý thuyết: 27
2 Các ví dụ về tạo chuỗi xung: 27
VI CÁCH TẠO VÀ BIỂU DIỄN DẠNG SÓNG VÀ PHỔ TRONG MATLAB 29
1 Tạo và biểu diễn dạng sóng của tín hiệu(xem phần 8, điều chế tín hiệu tương tự và điều chế số) 29
2 Tạo và biểu diễn dạng phổ (tính toán PSD của một tín hiệu) 29 VII CÁCH ĐIỀU CHẾ TÍN HIỆU SỬ DỤNG MATLAB 30
Trang 21 Điều chế tín hiệu tương tự(điều chế AM, PM, FM là chủ yếu).31
2 Điều chế tín hiệu số (Điều chế ASK, PSK, QAM, FSK) 33
VIII KÊNH AWGN: TẠO NHIỄU VÀ CỘNG VÀO TÍN HIỆU (THỰC HOẶC PHỨC) 36
1 Lý thuyết: 36
PHỤ LỤC A: GIẢI ĐỀ THI D09 37
PHỤ LỤC B: CHỮA BÀI THỰC HÀNH 43
2 Bài thực hành 2: 46
Trang 3CÁC HOẠT ĐỘNG PHÉP TÍNH TRONG MATLAB:
1 Lý thuyết:
a Phép tính vectơ và ma trận: tạo ma trận, xóa hàng xóa cột
trong ma trận, tạo vector từ ma trận, thay đổi giá trị trong matrận
Ví dụ đoạn chương trình đơn giản như sau:
% bai tap 1, 2 chuong 2(slide 33)
M=[1 0 0;0 j 1;j j+1 -3]; % tao ma tran M
V=[M M;M M]; %tao ma tran V tu ma tran M
V(:,3)=[];% xóa c?t 3 cua ma tran
V(2,:)=[];% xoa hang 2 cua ma tran
Y=V';% ma tran Y la ma tran chuyen vi cua ma tran V
Z=V(4,:); % tao vecto Z tu hang 4 cua ma tran V
V(4,2)=j+5; % doi gia tri V(4,2) thanh j+5
Tong=M+N; % thuc hien cong hai ma tran cung cap
Hieu=M-N;% thuc hien tru hai ma tran cung cap
P=M*N'; % thuc hien nhan ma tran M voi nghich dao cua N
Q=M.*N; % nhan tung phan tu tuong ung cua M voi N
M(3,:)=[1 2 3]; % tao hang 3 cua ma tran M
N(3,:)=[2 -1 1]; % tao hang 3 cua ma tran N
Trang 4AND=x&y; %Hop cua x và y
OR=x|y; % phep OR
NOT=~x;% phep NOT, dao cua x
% phep so sanh
comp1=x>y; %So sanh x lon hon y
comp2=x<y; %So sanh x nho hon y
comp3=x==y; %So sanh x bang y
z=x(comp3);% loc gia tri cua x thoa man phep logic comp3
Một số hàm và phép toán thường sử dụng với ma trận
Trang 6Các lệnh và hàm:
Det Định thức của ma trận
Diag Tạo ma trận đường chéo
Eye Ma trận đơn vị
Inv Nghịch đảo của 1 ma trận
Length Chiều dài của vector
chuẩnSize Kích thước của ma trận
Rank Hạng của ma trận
Sum Hàm tính tổng
Zeros Ma trận toàn zero
2 Giải bài tập giáo trình
% bai tap 3 chuong 2(slide 38)
% tinh tich 2 ma tran
A=[-1 3.5 2; 0 1 -1.3; 1.1 2 1.9];% tao ma tran A
B=[1 0 -1; -1.5 1.5 -3;1 1 1]; % tao ma tran B
Trang 7C=A*B;% thuc hien nhan 2 ma tran A*B
D=B*A;% thuc hien nhan 2 ma tran B*A
E=A.*B;% thuc hien nhan tung phan tu
% trong hai ma tran A va B
% bai tap 4, chuong 2, trang 38
A=[-1 3.5 2;0 1 -1.3;1.1 2 1.9];%tao ma tran A
I=eye(3,3); %tao ma tran don vi kich thuoc 3x3C=A.*I %bien doi ma tran A thanh ma tran C
%chua cac gia tri duong cheo cua A,
%cac gia tri con lai bang 0
% bai tap 5, chuong 2, trang 38
M=[1 1 1;1 0 1;-1 0 0] % tao ma tran M
I=eye(3,3); %tao ma tran don vi kich thuoc 3x3
InvM=I/M; % ma tran nghich dao cua ma tran M
% bai tap 6, chuong 2, trang 42
A=[-1 3.5 2; 0 1 -1.3; 1.1 2 1.9];% tao ma tran A
B=[1 0 -1; -1.5 1.5 -3;1 1 1]; % tao ma tran
AND=and(A,B) % ma tran ma neu gia tri tuong ung
% cua A va B deu khac 0 thi hien gia tri 1
OR=or(A,B); % ma tran ma neu hoac gia tri tuong ung
% cua A hoac cua B khac 0 thi hien gia tri 1
% bai tap 7, chuong 2, trang 42
x=[1 -3 3 14 -10 12];% tao vector x
y=[12 6 0 -1 -10 2]; % tao vector y
AND=and (x,y); % quan he x&&y, tra ve gia tri 0,1
OR=or(x,y); % quan he x|y, tra ve gia tri 0,1
COMPARE1=x>y; % quan he x>y, tra ve gia tri 1 neu x>yCOMPARE2=x<y; % quan he x<y, tra ve gia tri 1 neu x<yCOMPARE3=x==y;% quan he x=y, tra ve gia tri 1 neu x=yx(COMPARE3); % loc ra gia tri trong x thoa man COMPARE3
% bai tap 8, chuong 2, trang 42
C=[1 2 3 4 10;-22 1 11 -12 4;8 1 6 -11 5;18 1 11 6 4]; % ma tran C
D=(C<=10)&(C>=-10); % ma tran logic ma neu gia tri tuong
Trang 8% cua C<=10 va >=-10 thi no bang 1
E=C.*D; % cac gia tri >10,<-10 cua C bang 0
I CÁCH VẼ ĐỒ THỊ 2D TRONG MATLAB
1 Lí thuyết:
Sử dụng help graph2d, help graphics
a Các lệnh vẽ cơ bản trong MATLAB
Plot: vẽ tuyến tính: khi tạo ra phân bố trục x, matlab
tính toán các giá trị trục y tương ứng với các giá trị rờirạc đó, sau đó nối chúng lại với nhau bằng đường thẳng
=> x càng được chia nhỏ thì càng sát với đồ thị đúng
- Loglog: tương tự như plot nhưng cả trục x và y được tính
theo logarithm cơ số 10
Scatter:để vẽ biểu đồ chòm sao
Stem: vẽ đồ thị lấy mẫu
y yellow - Vẽ bằng đường nét liền
m Magenta Vẽ bằng đường nét đứt dài
c Cyan : Vẽ bằng đường nét đứt ngắn
k Black - Vẽ bằng đường nét đứt chấm
gạch
Trang 10c Một số lệnh thao tác với đồ thị:
Grid on Hiển thị lưới ô vuông
Grid off Không hiển thị lưới ô vuông
Axis[xmin xmax ymin
ymax] Giới hạn trục x, y cho đồ thị
Box off Xóa đường viền khung đồ thị
Box on Hiển thị đường viền khung đồ thị
Xlabel(‘text’) Nhãn của trục x
Ylabel(‘text’) Nhãn của trục y
Title(‘text’) Tựa đề trên đồ thị
Text (x,y,’text’) Cộng dòng kí tự vào điểm (x,y)
Gtext(‘text) Cộng dòng kí tự vào vị trí xác định bởi
chuộtLegend(‘fun1’,’fun2’) Cộng vào tên của các hàm
Legend off Xóa tên của các hàm
clf Xóa cửa sổ hình hiện tại
sublot Tạo cửa sổ hình con
2 Một số chương trình vẽ đơn giản
xlabel('time/s') % ten truc x
ylabel('Amplitude') % ten truc y
title('vi du ve 2D bang lenh plot') % tieu de cua hinh ve
axis([0, 2, -2.5, 2.5]) % gioi han truc x va truc y
% ve tren 3 truc toa do khac nhau
figure(2)
% ve do thi ham sinfct
subplot(311)
Trang 11xlabel('time/s')
ylabel('Amplitude')
title('do thi ham sinfct')
% ve do thi ham cosfctsubplot(312)
plot(t,cosfct)
xlabel('time/s')
ylabel('Amplitude')
title('do thi ham cosfct')
% ve do thi ham expfctsubplot(313)
Trang 12Chạy chương trình ta thu được figure(1) và figure(2) như sau:
Trang 13Chạy chương trình ta được hình vẽ sau:
Trang 14% ve do thi 2D voi lenh scatterplot, eyediagram
% chuong trinh dieu che QPSK don gian
M=4; % dieu che 4 muc
x=randint(2000,1,M); % tao 2000 ki hieu ngau nhien
y=pskmod(x,M);% dieu che PSK chuoi ki hieu
ynoisy=awgn(y,20);% truyen tin hieu qua kenh Gauss, SNR=20
% ve bieu do chom sao
title('bieu do mau mat dieu che QPSK')
Chạy chương trình, ta được hình vẽ sau:
Figure1
Trang 153 Giải bài tập giáo trình:
% bai tap 13, trang 53, chuong 2
% written by Vu Thi Thu
w=(0.01:0.01:5); % vector tan so [rad/s]
H1=1./(j*w); % ham truyen dat cua bo tich phan
H2=1./(1+j*w); % ham truyen dat cua phan tu tre
title('su dung lenh plot de ve')
legend('bien do cua ham truyen H1')
xlabel('tan so goc w[rad/s]')
ylabel('bien do ham truyen H1')
subplot(212)
plot(w,abs(H2))% ve H2
legend('bien do cua ham truyen H2')
xlabel('tan so goc w[rad/s]')
Trang 16ylabel('bien do ham truyen H2')
title('su dung lenh semilogx de ve')
legend('bien do cua ham truyen H1')
title('su dung lenh semilogy de ve')
legend('bien do cua ham truyen H1')
Trang 17title('su dung lenh loglog de ve')
legend('bien do cua ham truyen H1')
ylabel('bien do ham truyen H2')
% bai tap 14, trang 53, chuong 2
% written by Vu Thi Thu
w=(0.01:0.01:5); % vector tan so [rad/s]
H1=1./(j*w); % ham truyen dat cua bo tich phan
H2=1./(1+j*w); % ham truyen dat cua phan tu tre
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%
%ve hinh bang lenh plot
% ve bien do va pha cua H1
figure(1)
subplot(211)
plot(w,abs(H1))% ve bien do H1
title('bien do va pha cua H1')
legend('bien do cua ham truyen H1')
xlabel('tan so goc w[rad/s]')
ylabel('bien do ham truyen H1')
subplot(212)
plot(w,angle(H1))% ve pha cua H1
legend('pha cua ham truyen H1')
xlabel('tan so goc w[rad/s]')
ylabel('pha ham truyen H1')
% ve bien do va pha cua H2
figure(2)
subplot(211)
plot(w,abs(H2))% ve bien do H2
title('bien do va pha cua H2')
legend('bien do cua ham truyen H2')
xlabel('tan so goc w[rad/s]')
Trang 18ylabel('bien do ham truyen H2')
subplot(212)
plot(w,angle(H2))% ve pha cua H2
legend('pha cua ham truyen H2')
xlabel('tan so goc w[rad/s]')
ylabel('pha ham truyen H2')
II CÁCH VIẾT MỘT CHƯƠNG TRÌNH MATLAB
1 Các thủ tục:
- Cung cấp các tập lệnh được thực hiện trong cửa sổ lệnh
bằng một lệnh đơn giản
- Các chuỗi lệnh được viết bằng Editor và được lưu trong một
m-file với tên sẽ được sử dụng để chạy trong cửa sổ lệnh
- Sử dụng lệnh help để kiểm tra sự tồn tại của hàm
2 Một vài chương trình đơn giản như sau:
% vi du don gian ve viet mot chuong trinh Matlab
% written by Nguyen Duc Nhan
title('do thi cua 3 tin hieu')
3 Giải bài tập giáo trình
% bai tap 19, chuong 2, trang 65
% written by Vu Thi Thu
r=3;% ban kinh duong tron
anpha=linspace(-2*pi,2*pi,360);% vecto anpha co 360 diem
Trang 19title('duong tron ban kinh bang 3')
axis([-3.5,3.5,-3.5,3.5])
grid on% tao luoi do thi
% tinh chu vi hinh tron
disp('chu vi hinh tron la:')
P=2*pi*r
% tinh dien tich hinh tron
disp('dien tich hinh tron la:')
S=pi*r^2
Chạy chương trình ta thu được kết quá hiển thị và hình vẽ sau:
Hình: vẽ đường tròn bán kính bằng 3
% Bài 20, chuong 2, trang 65
% written by Vu Thi Thu
r = 3; % Bán kính hinh tron
Trang 20anpha = linspace(-2*pi,2*pi,3600);%bieu dien trong toa do cuc
x = r*cos(anpha); % Bi?u di?n x trong t?a ?? c?c
y = r*sin(anpha); % Bi?u di?n y trong t?a ?? c?c
plot(x,y)
title('duong tron ban kinh bang 3')
box on% hien thi duong vien khung
grid on% hien thi luoi do thi
axis equal
%tinh dien tich, de sau dau phay 5 chu so
dt = pi*r^2;
sprintf('dien tich hinh tron la: %0.5f',dt)
%tinh chu vi, de sau dau phay 5 chu so
chuvi=2*pi*r;
sprintf('chu vi hinh tron la: %0.5f', chuvi)
III CÁCH VIẾT MỘT FUNCTION TRONG MATLAB
1 Cấu trúc:
Function [out1, out2, ]=funname(in1, in2,…)
- Out1, out2: các tham số đầu ra
- In1, in2: các tham số đầu vào
- Funname: tên hàm
Note: tên hàm phải trùng với tên m-file chứa hàm
2 Một vài chương trình cơ bản như sau:
function [sinfct, cosfct, expfct]= vidu2(f1, f2, damp)
% Function vidu2
% written by Nguyen Duc Nhan
% call: [sinfct, cosfct, expfct] = vidu2(f1, f2, damp)
% or vidu2(f1, f2, damp)
t=(0:0.01:2);% Tao ra vecto thoi gian
% Tinh toan cac ham
sinfct=sin(2*pi*f1*t); % Tinh cac gia tri ham sin
cosfct=2*cos(2*pi*f2*t); % Tinh cac gia tri ham cos
expfct=exp(-damp*t); % Tinh cac gia tri ham exp
plot(t,[sinfct;cosfct; expfct])
xlabel ('time / s')
Trang 21title('three gorgeous signals')
IV CÁC GIẢI THUẬT TÍNH TOÁN BẰNG PHƯƠNG PHÁP
SỐ TRONG MATLAB
1 Tìm nghiệm bằng phương pháp chia nửa (bisection)
a Lý thuyết:Sử dụng câu lệnh while tạo vòng lặp để đoán
nghiệm
b Giải bài tập giáo trình
% bai 21 chuong 2, trang 72
% written by Vu Thi Thu
a=input('a='); % nhap vao gia tri a ung v?i x bac 3
b=input('b='); % nhap vao gia tri b ung v?i x bac 2
c=input('c='); % nhap vao gia tri c ung v?i x bac 1
d=input('d='); % nhap vao gia tri d ung voi x bac 0
x1=input('x1='); % nhap khoang du doan x1:x2
x2=input('x2='); % nhap khoang du doan x1:x2
fx1=-inf; % dat gia tri fx1 la am vo cung
fx2=inf; % dat gia tri fx2 la duong vo cung
% hoac co the tinh gia tri fx1, fx2
% sau dong tinh gia tri fx nhu sau:
Trang 22Chú ý:
Nếu điều kiện đúng:
Nếu điều kiện sai:
Kết thúc Print x x2-x1>sai số ɛ
Nhập khoảng chứa nghiệm
x1:x2
fx1.fx>0 x=(x1+x2)/2;
;
Trang 232 Tính tích phân bằng phương pháp điểm giữa
a Lí thuyết: Chia nhỏ khoảng tính tích phân thành N khoảng
bằng nhau, độ rộng h Cộng giá trị diện tích các phần nhỏ đó lại với nhau Diện tích mỗi phần Si được xác định bằng
h*Fi(average), ở đ ây, Fi(average) là giá trị hàm F tính ở điểm chính giữa khoảng nhỏ đó
Lưu đồ thuật toán
Bắt đầu
i<=N
Nhập a,b,N h=(b-a)/N
i=0;
Sum=0;
i=i+1
1/2)*h;
Trang 24% tinh tich phan bang pp midpoint (diem giua)
% vi du tinh tich phan su dung function
% written by Nguyen Duc Nhan
% fixed by Vu Thi Thu
function[integral]=midpoint(a,b,F,N)
h=(b-a)/N; % do rong cua tung doan nho
Sum=F(a+h/2); % tao gia tri ban dau cho Sum
b Giải bài tập giáo trình:
% bai 22, chuong 2, trang 72
% tinh tich phan bang pp midpoint (diem giua)
% written by Vu Thi Thu
intergral=h*Sum;% gia tri tich phan
disp('gia tri tich phan tinh theo pp midpoint la:')
intergral
3 Giải phương trình vi phân bậc 1, sử dụng phương pháp Euler
Trang 25a Lí thuyết
Trang 26b Giải bài tập giáo trình:
% bai 24, chuong 2, trang 85
% giai phuong trinh vi phan bang Euler
% written by Vu Thi Thu
Trang 27CÁCH TẠO CÁC TÍN HIỆU KHÁC NHAU TRONG MATLAB
1 Lý thuyết:
a Tín hiệu tương tự
b Tín hiệu số
c Tín hiệu ngẫu nhiên: Các nguồn tin trong thực tế là hoàn
toàn ngẫu nhiên
- Rand(x,y): Tạo nguồn tín hiệu ngẫu nhiên x hàng, y cột,
phân bố đều trong khoảng [0,1]
- Randn(x,y): Tạo nguồn tín hiệu ngẫu nhiên x hàng, y cột,
phân bố chuẩn, có trung bình bằn 0, độ lệch chuẩn bằng 1
- Randint(m,n): Tạo ma trận m hàng, n cột với các giá trị
ngẫu nhiên 0,1 có xác suất bằng nhau
- Randint(m,n,[0,k] hoặc randint(m,n,k+1): Tạo ma trận kích
thước m.n có các giá trị trong dải [0,k] phân bố đều
Randsrc(m,n): Tạo ma trận kích thước m.n có các kí hiệu
-1, 1 ngẫu nhiên phân bố đều
- Randsrc(m,n,[x1 x2…xk]): Tạo ma trận kích thước m.n
ngẫu nhiên, có các kí hiệu phân bố đều trong tập {x1, x2,
…,xk}
- Randerr: tương tự randsrc, nhưng randerr để tạo nguồn lỗi
ngẫu nhiên
2 Các ví dụ về tạo chuỗi xung:
% vi du ve tao chuoi xung vuong
% written by Nguyen Duc Nhan
% fixed by Vu Thi Thu
function[t,y]=rectpulse(Tw,Rp,Ns,Np)
% t-vecto thoi gian
% y-vecto tin hieu dau ra
% Tw-do rong xung (<Tp) [s/xung]
% Rp-toc do xung [xung/s]
% Ns-so mau [mau]
% Np-so xung quan sat [xung]
Tp=1/Rp; % chu ki xung [s/xung]
t0=0; % thoi gian bat dau [s]
tf=Np*Tp; % thoi gian ket thuc [s]
ts=(tf-t0)/(Ns-1); % thoi gian lay mau
t=t0:ts:tf;
Trang 28ylabel('Amplitude')
end
end
Trang 29% bai tap 36, chuong 4, trang 160
% vi du ve tao chuoi xung tam giac
% written by Vu Thi Thu
function[t,y]=xungtg(Tw,Rp,Ns,Np)
% t-vecto thoi gian
% y-vecto tin hieu dau ra
% Tw-do rong xung
% Rp-toc do xung di vao
% Ns-so mau lay trong khoang thoi gian qsat
% Np-so xung quan sat
Tp=1/Rp; % chu ki xung
t0=0; % thoi gian bat dau qsat
tf=Tp*Np; % thoi gian ket thuc qsat
ts=(tf-t0)/(Ns-1); % thoi gian lay mau
box off% bo duong vien do thi
title('Tao chuoi xung tam giac')
1 Tạo và biểu diễn dạng sóng của tín hiệu(xem phần 8,
điều chế tín hiệu tương tự và điều chế số)
Trang 302 Tạo và biểu diễn dạng phổ (tính toán PSD của một tín
- Bằng việc lựa chọn cẩn thận H(f) ->tăng cường hoặc khử
các thành phần phổ chọn lọc của tín hiệu vào
- Khi Sx(f) và H(f) xác định -> xác định đc Sy(f) và ngược lại
function[t,Pf]=spectrocal(t,x)
% vi du ve chuong trinh tinh toan spectrum
% t-vecto thoi gian
% x-tin hieu dau vao
% f- vecto tan so
% Pf-tinh toan PSD cua x
% written by Nguyen Duc Nhant
Ns=lenghth(x); % Ns bang kich thuoc cua x
% ham bo loc butterworth
% B- bang thong bo loc
% Ts- thoi gian lay mau
% n-filter order
% y- dau ra cua bo loc
% written by Nguyen Duc Nhan