CLGT
Giải bài tập mô phỏng hệ thống truyền thông
GIẢI BÀI TẬP MÔ PHỎNG HỆ THỐNG TRUYỀN THÔNG
Bài 9:
% Bài 9
t = (0 :0.1: 10); %Tạo véc tơ thời gian t
disp ('gia tri cua tin hieu theo thoi gian la : ')
s = sin(2*pi*5*t).*sin(2*pi*3*t)+exp(-0.1*t) %Biểu diễn tín hiệu s
Bài 10:
% Bài 10
t = (0 :0.1: 10); %Tạo véc tơ thời gian t
disp ('gia tri cua tin hieu theo thoi gian la : ')
s = sin(2*pi*5*t).*sin(2*pi*3*t) %Biểu diễn tín hiệu s
Bài 11:
% Bài 11
t = (0:0.1:10); %Tạo véc tơ thời gian t
s = 20 *sin(2*pi*5*t); %Biểu diễn tín hiệu s
lamtron = round(s) %làm tròn giá trị s về giá trị số nguyên gần nhất
Bài 12:
% Bài 12
b = [1024 1000 100 2 1]; %Tạo véc tơ b
disp('Gia tri logarith co so 2 cua vecto b la : ')
logarith2 = log2(b)
%Lấy logarit cơ số 2 của vector b
disp('Gia tri logarith co so 10 cua vecto b la : ')
logarith10 = log10(b) %Lấy logarit cơ số 10 của vector b
Bài 13:
% Bài 13
w = (0.01:0.01:5);% Véc tơ tần số, đơn vị là rad/s
H1 = 1./(j*w); %Hàm truyền của một bộ tích phân
H2 = 1./ (1 + j*w); %Hàm truyền của một phần tử trễ thời gian bậc 1
plot(w, abs(H1)); % Vẽ đồ thị biên độ hàm truyền H1
title('Do thi bien do qua bo tich phan');
figure
plot(w,abs(H2)); % Vẽ đồ thị biên độ hàm truyền H2 sang một hình khác
title('Do thi bien do cua phan tu tre thoi gian');
figure
plot(w, abs(H1)); % Vẽ đồ thị biên độ H1 theo hàm semilogx – biểu diễn
trục x theo logarit còn trục y giữ nguyên
title('Do thi bien do qua bo tich phan');
figure
semilogy(w,abs(H1)); % Vẽ đồ thị biên độ H1 theo hàm semilogy – biểu
diễn trục y theo logarit còn trục x giữ nguyên
figure
loglog(w,abs(H1)); % Vẽ đồ thị biên độ H1 theo hàm loglog – biểu diễn cả
2 trục x&y theo logarit.
title('Do
D09VT1
thi bien do cua phan tu tre thoi gian');
1
CLGT
Giải bài tập mô phỏng hệ thống truyền thông
Bài 14:
% Bài 14
w = (0.01:0.01:5);% Véc tơ tần số, đơn vị là rad/s
H1 = 1./(j*w); %Hàm truyền của một bộ tích phân
H2 = 1./ (1 + j*w); %Hàm truyền của một phần tử trễ thời gian bậc 1
subplot(2,2,1)
plot(w, abs(H1)); % Vẽ đồ thị biên độ hàm truyền H1
title('Do thi bien do qua bo tich phan');
subplot(2,2,2)
plot(w, angle(H1)); % Vẽ đồ thị pha hàm truyền H1
title('Do thi pha qua bo tich phan');
subplot(2,2,3)
plot(w,abs(H2)); % Vẽ đồ thị biên độ hàm truyền H2
title('Do thi bien do cua phan tu tre thoi gian');
subplot(2,2,4)
plot(w,angle(H2)); % Vẽ đồ thị pha hàm truyền H2
title('Do thi pha cua phan tu tre thoi gian');
Bài 15:
% Bài 15
x = (-2:0.2:2); % Khởi tạo véc tơ x
y = (-1:0.1:1); % Khởi tạo véc tơ y
[X,Y] = meshgrid(x,y); % Tạo lưới tọa độ (X,Y)
F = X.^2 + Y.^2; % Biểu diễn hàm F theo X và Y
surf(X, Y , F); % Vẽ đồ thị của F theo X và Y
xlabel('X');
ylabel(' Y ');
zlabel('F');
Bài 16:
% Bài 16
t=0:10:360; % Véc tơ t
p=0:10:360; % Véc tơ p
R=3; % Bán kính
[T,P]=meshgrid(t,p); % Tạo lưới tọa độ (T,P)
Z = R*sin(pi*T./180); % Biểu diễn Z trong hệ tọa độ cầu
X = R*sqrt(R^2-Z.^2).*cos(pi*P./180); % Biểu diễn X trong hệ tọa độ cầu
Y = R*sqrt(R^2-Z.^2).*sin(pi*P./180); % Biểu diễn Y trong hệ tọa độ cầu
surf(X,Y,Z); % Vẽ đường tròn
xlabel('x-axis');
ylabel('y-axis');
zlabel('F');
D09VT1
2
CLGT
Giải bài tập mô phỏng hệ thống truyền thông
Bài 17:
% Bài 17
y =(1:0.5:5); % Tạo véc tơ y
L=length(y); % Chiều dài của véc tơ y
k=0;
disp('vecto yr la : ')
for i=1:L
yr(i)= y(L-i+1); % Đảo ngược vec tơ y ta được véc tơ yr
end;
yr
for i=1:L
if (rem(y(i),1)==0)
k = k+1;
z(k)= y(i);
end
end
disp('vecto chua cac so nguyen trong y : ')
z
Bài 19:
% Bài 19
r = 3; % Bán kính
theta = linspace(-2*pi,2*pi,180); % Biểu diễn góc trong tọa độ cực
x = r*cos(theta); % Biểu diễn x trong tọa độ cực
y = r*sin(theta); % Biểu diễn y trong tọa độ cực
plot(x,y);
axis equal
sprintf('dien tich hinh tron la:')
dt = pi*r^2
sprintf('chu vi hinh tron la:')
chuvi=2*pi*r
Bài 20:
% Bài 20
r = 3; % Bán kính
theta = linspace(-2*pi,2*pi,180); % Biểu diễn góc trong tọa độ cực
x = r*cos(theta); % Biểu diễn x trong tọa độ cực
y = r*sin(theta); % Biểu diễn y trong tọa độ cực
plot(x,y);
axis equal % Chia 2 trục tọa độ tỉ lệ đều để hiển thị hình tròn tốt hơn
dt = pi*r^2;
sprintf('dien tich hinh tron la: %0.5f',dt)
chuvi=2*pi*r;
sprintf('chu vi hinh tron la: %0.5f', chuvi)
D09VT1
3
CLGT
Giải bài tập mô phỏng hệ thống truyền thông
Bài 21:
% Bài 21
a = input('a='); % Nhập vào giá trị của a
b = input('b='); % Nhập vào giá trị của b
fa =-inf; % gán fa bằng âm vô cùng
fb = inf; % gán fb bằng dương vô cùng
while (b-a)> eps*b
x = (a+b)/2;
fx = x^3/3 + 4*x^2 + x - 6;
if sign(fx)==sign(fa)
a=x;
fa=fx;
else
b=x;
fb=fx;
end;
end
disp('Nghiem cua phuong trinh la : ')
x
Bài 22:
% Bài 22
a=-1.5; %Điểm cận dưới
b=1.5; %Điểm cận trên
N=100; %Số điểm tính tích phân
h = (b-a)/N;
tp=0;
for k=1:N
x = a+(k-1/2)*h;
F = 4*x^3*2*exp(x)*cos(x);
tp = tp +F;
end
tp = tp*h;
disp('Gia trị tich phan tinh theo phuong phap mid point la: ')
tp
Bài 23:
% Bài 23 – cách 1
x0=2;
x1=1.5;
while abs(x0-x1)> 0.0001
x0 = x1;
x1 = (x0^2+2)/(2*x0)
end;
disp('Gia trị can bac 2 cua a tinh theo pp gan dung la: ')
x1
====================================================================
% Bài 23 – cách 2 của thầy giáo
x0 = 2;
errs = 0.0001;
diffx = 1;
x = x0;
while diffx > errs
xn = (x^2+2)/(2*x)
diffx = abs(xn - x);
x = xn;
end
disp('Gia trị can bac 2 cua a tinh theo pp gan dung la: ')
x
D09VT1
4
CLGT
Giải bài tập mô phỏng hệ thống truyền thông
Bài 24:
% Bài 24
a=1;r=1;
t0=0;
y0=0; % Điều kiện ban đầu
tf=2;
t = [0:0.01:tf];
yt=1-exp(-a*t); % Nghiệm đúng của PTVT đã cho
plot(t,yt,'k'), hold on
h = 1/4;
klast = (tf-t0)/h;
y(1) = y0;
for k = 1:klast
yp = (1 - a*h)*y(k) +h*r; % Euler's formula
y(k + 1) = (1 - a*h/2)*y(k) + (2*r-a*yp)*h/2;
% Công thức Euler biến đổi
plot([k - 1 k]*h,[y(k) y(k+1)],'b', k*h,y(k+1),'ro')
pause;
end
Bài 25:
% Bài 25
a=1;r=1;
t0=0;
y0=0; % Điều kiện ban đầu
tf=2;
t = [0:0.01:tf];
yt=1-exp(-a*t); % nghiệm của PTVT
plot(t,yt,'k'), hold on
h = 1/4; % cỡ bước
klast = (tf-t0)/h;
y(1) = y0;
tvec(1) = t0;
for k = 1:klast
k1 = fun1(y(k),tvec(k));
k2 = fun1(y(k)+2*h*k1/3,tvec(k)+2*h/3);
k3 = fun1(y(k)+2*h*k2/3,tvec(k)+2*h/3);
y(k + 1) = y(k) + h*((2/8)*k1 + (3/8)*k2 + (3/8)*k3);%Công thức RK-3
tvec(k+1) = tvec(k) + h;
plot([k - 1 k]*h,[y(k) y(k+1)],'b', k*h,y(k+1),'ro')
pause;
end
=========================================================
%”fun1” function
function yf = fun1(y,t)
a = 1; r = 1;
yf = r-a*y;
D09VT1
5
CLGT
Giải bài tập mô phỏng hệ thống truyền thông
Bài 26:
% Bài 26
clear, clf
a=1;r=1;
t0=0;
y0=0; % Điều kiện ban đầu
tf=2;
t = [0:0.01:tf];
yt=1-exp(-a*t); % nghiệm của PTVT
plot(t,yt,'k'), hold on
h = 1/4;
klast = (tf-t0)/h;
y(1) = y0;
tvec(1) = t0;
for k = 1:klast
k1 = feval(@fun1,y(k),tvec(k));
k2 = feval(@fun1,y(k)+h*k1/2,tvec(k)+h/2);
k3 = feval(@fun1,y(k)+h*k2/2,tvec(k)+h/2);
k4 = feval(@fun1,y(k)+h*k3,tvec(k)+h);
y(k + 1) = y(k) + h*(k1 + 2*k2 + 2*k3 + k4)/6; %Công thức RK-4
tvec(k+1) = tvec(k) + h;
plot([k - 1 k]*h,[y(k) y(k+1)],'b', k*h,y(k+1),'ro')
pause;
end
======================================================
%”fun1” function
function yf = fun1(y,t)
a = 1; r = 1;
yf = r-a*y;
Bài 27:
% Bài 27
[t,solution] = ode45(@solRCLP, [0, 3], 0);
[t2,solution2] = ode23(@solRCLP, [0, 3], 0);
plot(t,solution(:,1),'r-',t2, solution2(:,1),'b-')
xlabel('time / s')
ylabel('Amplitude / V')
=========================================================
%”solRCLP” function
function [udot]= solRCLP(t,u)
R = 10000; % Điện trở R
C = 4.7*10e-6; %
f = 1;
udot = 0;
udot = -(1/(R*C))*u + (1/(R*C))*ustep(t);
=========================================================
function u = ustep(t)
if t >=0
u = 1;
else
u = 0;
end
D09VT1
6
CLGT
Giải bài tập mô phỏng hệ thống truyền thông
Bài 31:
% Bài 31
x = randint(1,128); % Tạo véc tơ x g?m 128 bít ngẫu nhiên phân bố đều
id=1;
%Chuyển véc tơ x thành ma trận y (32x4)
for i=1:32
for j=1:4
y(i,j) = x(id);
id = id+1;
end;
end;
disp('Ma tran y la: ')
y
%Chuyển véc tơ y từ nhị phân thành thập phân
z = bi2de(y,'left-msb') %Lấy trọng số từ trái sang
Bài 32:
% Bài 32
function [y,amax] = alaw(x,A)
if abs(x) < 1/A
y = sign(x)*A*abs(x)/(1+log(A));
else if abs(x)>= 1/A & abs(x) <= 1
y = sign(x)*(1+log(A*abs(x)))/(1+log(A));
end
end
amax = max(abs(x))
end
========================================================
function x = invalaw(y,A)
if abs(y) < 1/(1+log(A))
x = sign(y)*(abs(y)*(1+log(A)))/A;
else if abs(y) >= 1/(1+log(A)) & abs(y) < 1
x = sign(y)*exp(abs(y)*(1+log(A))-1)/A;
end
end
end
Bài 33: Các bạn xem lại ví dụ về luật Muy (slide trang 123+124) để
làm tương tự.
% Bonus thêm cái luật Muy nhé
function [y,a] = mulaw(x,mu)
% x - input sequence
% mu - mu constant
% y - compressed output
% a - maximum amplitute
a = max(abs(x));
y = sign(x).*log(1+mu*abs(x/a))/log(1+mu);
========================================================
function x = invmulaw(y,mu)
% mu - mu constant
% y - compressed input
% x - expanded output
x = sign(y).*((1+mu).^abs(y)-1)/mu;
D09VT1
7
CLGT
Giải bài tập mô phỏng hệ thống truyền thông
Bài 34:
% Bài 34
function [t,y,code] = rzcode(d,R,Ns)
% Chương trình ví dụ về mã đường truyền R
% d
chuỗi dữ liệu đầu vào
% R
tốc độ dữ liệu
% Ns
số lượng mẫu
% t
vectơ thời gian
% y
vectơ mẫu tín hiệu
Tb = 1/R; % chu kì bit
Nb = length(d); % độ dài chuỗi bit
Timewindow = Nb*Tb; % thời gian cửa sổ
ts = Timewindow/(Ns-1); % thời gian lấy mẫu
t = 0:ts:Timewindow; % vectơ thời gian
y = zeros(size(t)); % tạo vectơ y toàn số 0
code = [];% khởi tạo vectơ mã
for k = 1:Ns
n = fix(t(k)/Tb)+1; % lấy phần nguyên của t(k)/Tb cộng thêm 1
if n >= Nb
n = Nb;
end;
if mod(t(k),Tb)<=Tb/2 % lấy phần dư của t(k)/Tb so sánh với Tb/2
y(k) = d(n);
code(n) = d(n);
else
y(k) = 0;
end;
end;
Bài 35:
% Bài 35
k=4;
for i=1:2^4
for j=k:-1:1
if rem(i-1,2^(-j+k+1))>=2^(-j+k) % lấy phần dư có dấu của i-1
chia cho 2^(-j+k+1) so sánh với 2^(-j+k)
u(i,j)=1
else
u(i,j)=0
end
end
end
% tạo ma trận sinh
g=[1 0 0 0 1 1 1;
0 1 0 0 1 1 0;
0 0 1 0 1 0 1;
0 0 0 1 0 0 1];
% xác định các từ mã đầu ra của bộ mã khối có tốc độ 4/7
c=mod(u*g,2) % lấy phần dư của u*g chia cho 2
D09VT1
8
CLGT
Giải bài tập mô phỏng hệ thống truyền thông
Bài 36:
% Bài 36
function tg = tamgiac(Tp,n)
% n là số chu kì muỗn vẽ
% Tp là chu kì xung
Tw=Tp/2;
for i=0:n-1
x=[i*Tp:0.0001:(i+1)*Tp]; % tạo vectơ thời gian
fx=1-abs(((x-i*Tp)-Tw)/Tw); % tính giá trị hàm tại từng thời điểm
plot(x,fx)
hold on
end
Bài 37:
%Bài 37
Fc = 300; %Tần số sóng mang
Fs=1000; % Tần số lấy mẫu Fs>2Fc
t = [0:1/Fs:0.5];
st=2*cos(20*pi*t+pi/4)+cos(30*pi*t);
subplot(3,1,1)
plot(t,st) %Vẽ dạng tín hiệu gốc
subplot(3,1,2)
am = ammod(st,Fc,Fs); %Điều chế biên độ
plot(t,am,'r') %Vẽ dạng tín hiệu sau khi điều chế biên độ
subplot(3,1,3)
adm = amdemod(am,Fc,Fs); %Giải điều chế biên độ
plot(t,adm) %Vẽ tín hiệu sau khi giải điều chế
D09VT1
9