You are on page 1of 22

111Equation Chapter 1 Section 1PHẦN BÀI TẬP THỰC HÀNH

Họ và tên sinh viên: Phạm Phương Nam

Nhóm: 2 Tổ:1

Lớp: D18CQVT01-N

Điểm Nhận xét

PHẦN CÁC KIẾN THỨC LỆNH LẬP TRÌNH CƠ BẢN

Bài 1: Viết chương trình nhập một số và trả về số bằng chữ. Ví dụ nhập N  111 trả về
một trăm mười một.
clc
clear all
close all
A=input('Nhap so duoi dang chu:');
B=words2num(A);
disp(B)

Bài 2: Viết chương trình nhập vào số bằng chữ và trả về số bằng số.
%Cầntảithêmthưviện words2num
clc
clear all
close all
%PHAMPHUONGNAM_N18DCVT045
A=input('Nhap so duoi dang chu:');
B=words2num(A);
disp(B)
Bài 3: Cho một cell array lưu trữ họ và tên các sinh viên, ví dụ fullname={‘Nguyen Van
Tí’, ‘Tran Van Tho’, ‘Nguyen Canh Chan’, ‘ Tran Luu Nam’, ‘ Tan Hiep Phap’}. Hãy lập
trình trả về danh sách xếp theo thứ tự abc theo tên.
clc
clear all
close all
fullname = {'Nguyen Van Ti''Tran Van Tho''Nguyen Canh Chan''Tran Luu Nam''Tan
HiepPhap'};
%test = sortrows(strvcat(reverse(strtok(reverse(fullname)))));
[ho, ten_lot] = strtok(fullname); %tach chuoidaukhi gap dau space
str_ho = strvcat(ho); %chuyen cell thanh str
[lot, ten] = strtok(ten_lot);
str_ten = strvcat(ten);
str_lot = strvcat(ho);
str_nguoc = strcat(str_ten," ", str_lot," ", str_ho); %noichuoi
str_nguoc = sortrows(str_nguoc); %sap xep chu caidauchuoitheoabc
[ten, lot_ho] = strtok(str_nguoc);
[lot, ho] = strtok(lot_ho);
danh_sach = strcat(ho, " ",lot, " ", ten)
danh_sach =

5×1 string array

" Nguyen Nguyen Chan"


" Tran Tran Nam"
" Tan TanPhap"
" Tran TranTho"
" Nguyen NguyenTi"
Bài 4: Hãy khai báo một cấu trúc thông tin của sinh viên gồm 3 thành phần gồm họ và
tên, năm sinh, giới tính. Kiểm tra có phải là cấu trúc không?
a. Liệt kê ra các trường của cấu trúc
b. Kiểm tra ‘Gioi_Tinh’ có phải là 1 trường trong cấu trúc sinh viên không?
c. Xếp thứ tự các trường
d. Thêm một trường ‘Noi_Sinh’
e. Kiểm tra tên trường “Ho_va_Ten” có hợp lệ không?
f. Tạo ra một mảng cấu trúc với sinh viên thứ 2.
i. Lấy năm sinh của hai sinh viên
%Chúng ta b?t??uv?ihàmstruct().

isstruct(SV)

fieldnames(SV)

isfield(SV.'GioiTinh")

SV = orderfields(SV) SV.NoiSinh ='KhanhHoa

SV = rmfield(SV,NoiSinh) SV(2).Ho_va Ten = "Tran Thi B' SV(2).Nam_Sinh = 1991


SV(2).GioiTinh=Nu SV.NamSinh

SV =

struct withfields:

Ho vaTen:TranVanA' GioiT?nh: Nam

Nam Sinh:1990

ans =

logical

ans =

3x1 cell array

('Ho_va_Ten'}

{Nam Sinh'} {'Gioi_Tinh"}

ans =

logical
1

SV=

struct withfields:

GioiTinh:NamHovaTen:TranVanA' Nam Sinh: 1990

SV =

struct withfields:

GioiTinh:NamHovaTen:TranVanA'

Nam Sinh:1990N?iSinh:'KhanhHoa'

SV =

struct withfields:

GioiTinh:NamHovaTen:'Tran Van A'NamSinh:1990

SV=

PHẦN THỰC HÀNH VỀ MẢNG CHUỖI

Bài 5: Cho vector chứa một chuỗi số, hãy trả về một chuỗi số khác đếm các phần tử có
trong chuỗi số. Ví dụ x  5,5, 2,1,1,1,1,3 trả về y  2,5,1, 2, 4,1,1,3 .
clc
clear all
close all
%PHAMPHUONGNAM_N18DCVT045
x =[5 5 2 1 1 1 1 3];
element = unique(x, 'stable');
count = sum(bsxfun(@eq, element,x(:)));
matrix = [count, element];
A = matrix (:, 1);
A1 = transpose(A);
B = matrix (:, 2);
B1 = transpose(B);
C = matrix (:, 3);
C1 = transpose(C);
D = matrix (:, 4);
D1 = transpose(D);
result = [A1 B1 C1 D1]; 
disp(result);

>>
2 1 4 1

Bài 6: Cho ma trận n hàng và 2 cột, chứa tọa độ xOy của n điểm. Hãy tìm hai điểm có
khoảng cách xa nhất và trả về chỉ số hàng của hai điểm đó.
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
x   1 1 2 3 3
Bài 7: Cho một chuỗi số, trả về chuỗi các số không trùng lặp. Ví dụ
y   1 2 3
trả về .
clc
clear all
close all
%PHAMPHUONGNAM_N18DCVT045
A=input('Nhapchuoi so: ');
A=unique(A,'stable')

Bài 8: Tạo một ma trận ngẫu nhiên A có kích thước m,n nhập từ bàn phím. Ma trận B có
kích thước n,k với k nhập từ bàn phím
a) Thực hiện thao tác xóa hàng i và cột j của ma trận ngẫu nhiên vừa tạo. Với i =
(n+m)mod n và j=(n+m) mod m
b) Thêm hàng i+1 và cột j+1 vào ma trận A.
c) Xóa phần tử A[i,j]
d) Đưa ra các phần tử đường chéo của ma trận A
e) Đưa ra ma trận chuyển vị và ma trận nghịch đảo của ma trận A
f) Tính ma trận A*B.
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................

PHẦN THỰC HÀNH KIỂM CHỨNG CÁC LÝ THUYẾT XÁC SUẤT

Bài 9: Giả sử X 1 , X 2 ,..., X n là các biến ngẫu nhiên độc lập có phân bố đều từ 0 đến 1.
Yn  n 1  max  X 1 , X 2 ,..., X n  
Dùng mô phỏng chứng minh sẽ hội tụ theo phân bố đều có
tham số 1.
clc
clear all
close all
N=10^6;
n=20;
U = rand(n,N);
maxX = max(U);
U2=ones(1,N);
fori=1:N
    U2(i)= n.*(1-maxX(i));
end
h=histogram(U2)% theocongthuc de cho
 
pdf_e = h.Values./(N*h.BinWidth);
axis_x = (h.BinEdges(1:end-1) + h.BinEdges(2:end))/2;% truchoanh
tm=max(axis_x);%lay max truchoanh
t=0:0.2:tm;
F=exp(-t);
plot(axis_x,pdf_e,t,F,'o');
hold on;

Bài 10: Cho X và Y là hai biến phân bố hàm mũ độc lập và đồng nhất. Sử dụng mô
phỏng để kiểm chứng max( X , Y ) có phải là một hàm mũ không? Kiểm chứng với lý
thuyết.
clc
clear all;
close all;
N=10^6;
Lx=1/5;
Ly=1/4;
%phanphoi mu cua Z thuchanh.
X=exprnd((1/Lx),1,N); % t?o ra m?tm?ngcác s? ng?unhiên t? phânph?ihàm m?
Y=exprnd((1/Ly),1,N);
Z_th=min(X,Y); % gá tr? min c?a 2 m?ngng?unhiên X,Y
%phanphoi mu Z lythuyet.
n=0:0.5:20;
Lz=Lx+Ly;
Z_lt=Lz*exp(-Lz*n);
%sosanh do thi.
h=histogram(Z_th,100); 
pdf_e=h.Values./(N*h.BinWidth);
axis_x=(h.BinEdges(1:end-1)+h.BinEdges(2:end))/2;
plot(axis_x,pdf_e);
hold on
stem(n,Z_lt,'o','Linewidth',0.25);
legend('Thuchanh','Ly thuyet');
set(gcf,'color','y');
grid on;

Bài 11: Cho biến ngẫu nhiên X có phân phối đều trên đoạn   có hàm mật độ xác
a, b
1
f  x 
suất b  a tìm

a) Hàm phân phối xác suất của biến ngẫu nhiên X (hàm tích lũy xác suất CDF)
E X  VX
b) Tìm kỳ vọng và phương sai .
E X  ,V  X 
c) Mô phỏng kiểm chứng các hàm CDF, của biến ngẫu nhiên X so với
lý thuyết.
d) clc

clear all

close all

aa=1;

bb=2;

xx=(0:0.05:8);

trial_num=10^5; % so mauthu

CDF = zeros(1,length(xx));

fortt = 1 : length(xx)

for num = 1 :trial_num


RV = aa + (bb-aa)*rand; %bien ngaunhien co phan phoideutrongdoanaa,bb
bang mophongmontecato

if (RV < xx(tt))

CDF(tt) = CDF(tt) + 1; % tang so CDF len 1 khi RV roivaokhoang aa den x(tt)

end

end

end

CDF = CDF/trial_num; %ham tichluy phan phoixacsuat

plot(xx,CDF);
Bài 12: Biến ngẫu nhiên X có phân phối Gauss trong đoạn   với hàm mật độ xác
a, b

1   x  2 
f  x  exp   
 2  2 2

suất   với  2 là phương sai,  là kỳ vọng của biến
ngẫu nhiên X . Tìm
a) Hàm phân phối xác suất của X
b) Mô phỏng kiểm chứng bằng matlab hàm CDF của biến ngẫu nhiên X
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................

Bài 13: Cho hai biến ngẫu nhiên X , Y độc lập có phân phối Gauss với giá trị trung bình
bằng 0 và phương sai  .
2

Chứng minh rằng biến ngẫu nhiên Z  X  Y có phân phối Rayleigh.


2 2
a)
b) Tìm hàm CDF của biến ngẫu nhiên Z .
c) Mô phỏng kiểm chứng bằng matlab
d) clc
clear all;
close all;
ps=4; % phuongsai
x=(0:0.01:16); %gia tri can mophong
num_trial=10^6; %so mauthutrong tung gia tri cua x
CDF=zeros(1,length(x)); %tao 1 vecto CDF co chieudai bang chieudaicua x
fori=1:length(x)
for j=1:num_trial
xx=sqrt(ps)*randn(1,1); %bien ngaunhien co phan phoichuanquanh do lech
chuan sqrt(ps)
yy=sqrt(ps)*randn(1,1); %bien ngaunhien co phan phoichuanquanh do lech chuan
Rv=sqrt(xx^2+yy^2); %bien ngaunhien co phan borayleigh
if (Rv< x(i))
CDF(i)=CDF(i)+1;
end
end
end
CDF = CDF / num_trial; %ham tichluy phan boxacsuat
plot(x,CDF) %ve do thibieudienquan he giua x va CDF

e)
PHẦN THỰC HÀNH CÁC LỆNH MÃ HÓA ĐIỀU CHẾ TÍN HIỆU VÀ GIẢI
ĐIỀU CHẾ TÍN HIỆU

Bài 14: Hãy lập trình so sánh mã hóa nguồn A law và  law cho tín hiệu sin trong 2 chu
kỳ.
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................

Bài 15: Hãy lập trình cho hàm   và hàmpammod pamdemod   . So sánh tốc độ thực
thi hàm giữa hàm tự lập trình và hàm của Matlab.
% Trườnghợp 1: Khôngchuẩnhóacôngsuất ra saubộđiềuchế
M = 4;
s = randi([0 M-1],1,100);
% Điềuchế PAM
Tx = pammod(s,M);
% Côngsuấttrungbìnhcủatínhiệu ra
Average_Pow = mean(abs(Tx).^2)

Average_Pow =

4.8400
% Giảsửtínhiệuthubằngtínhiệunhận
Rx = Tx;
% Giảiđiềuchế
s_ = qamdemod(Rx,M);
% So sánhchuỗiphátvànhận
isequal(s,s_)

ans =

logical

0
% Trườnghợp 2: Cóchuẩnhóa
input = 0:M-1;
const = pammod(input,M);
% Hệsốchuẩnhóa Scale
Scale = modnorm(const,'avpow',1);
s = randi([0 M-1],1,100);
% Điềuchếvàchuẩnhóacôngsuấtphátvớihệsố Scale
Tx = Scale * pammod(s,M);
% Tínhlạicôngsuấtphátxemđãchuẩnhóachưa?
Average_Pow = mean(abs(Tx).^2)

Average_Pow =

1.0000
% Tínhiệunhận: lưu ý chia lạivớihệsố Scale
Rx = Tx/Scale;
% Giảiđiềuchế
Rx = pamdemod(Rx,M);
% So sánhchuỗiphátvànhận
isequal(s,Rx)

ans =

logical

Bài 16: Hãy lập trình cho hàm


qamod  và hàmqamdemod   . So sánh tốc độ thực thi
hàm giữa hàm tự lập trình và hàm của Matlab.
% Tạodữliệuvào
M = 16;
data = randi([0 M-1],1000,1);
SNR_dB = 20;

%% Trườnghợp 1: Khôngchuẩnhóacôngsuất
% Điềuchếtínhiệu 16-QAM
txSig = qammod(data,M);
% Cộngnhiễuvàotínhiệu -3dB
rxSig = awgn(txSig,SNR_dB);
scatterplot(rxSig)
set(gcf,'color','w');
% Trường hợp 2: Chuẩn hóa công suất
txSig_N =qammod(data,16,'UnitAveragePower', true);
rxSig_N = awgn(txSig_N,SNR_dB);
scatterplot(rxSig_N)
set(gcf,'color','w');
Bài 17: Vẽ đồ thị tỷ lệ lỗi bit của điều chế BPSK với mã BCH trên kênh truyền nhiễu
trắng. So sánh độ lợi mã trước và sau mã hóa
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
Bài 18: Vẽ đồ thị tỷ lệ lỗi bit của điều chế MQAM với mã xoắn trên kênh truyền nhiễu
trắng. So sánh độ lợi mã trước và sau khi mã hóa.
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
Bài 19: Mô phỏng kênh truyền nhiễu trắng với điều chế MPSK, DPSK MQAM và kiểm
chứng với lý thuyết.
* ĐIỀU CHẾ MPSK
clc
clear all
close all
EbNo = 0:1:10;
SNR = 10.^(EbNo/10);
M = [4 8 16];
foridx = 1:length(M)
   BER_t(idx,:)=(2./log2(M(idx))).*qfunc(sqrt(2.*SNR*log2(M(idx)))*sin(pi/M(idx))); 
end
 
BER_t
 
N = 10^6;
BER_s = zeros(size(BER_t));
for x = 1:length(M)
    foridx = 1:length(SNR)
        Ps = SNR(idx)*log2(M(x));
        Pn= 1;
        m = randi([0 1],1 ,N);
        Tx = pskmod(m, M(x),0,'gray');
        n = sqrt(Pn/2).*(randn(1,N)  + 1i*randn(1,N));
        Rx = sqrt(Ps).*Tx + n;
        m_ = pskdemod(Rx/sqrt(Ps), M(x), 0, 'gray');
        BER_s(x,idx) = BER_s(x,idx) + sum(m~=m_)/(log2(M(x))*N);
    end
end
BER_s 
semilogy(EbNo,BER_t,'-', EbNo, BER_s,'o','linewidth',1.2);
xlabel('Ty so tin hieutrennhieutheo dB');
ylabel('BER');
set(gcf,'color','white');
grid on
* ĐIỀU CHẾ DSPK
clc
clear all
close all
EbNo = 0:1:10;
SNR = 10.^(EbNo/10);
BER_t = 1./(2.*SNR); %congthuclythuyet bi sai
BER_s = zeros(size(BER_t));
N = 10^6;
foridx = 1:length(SNR)
   Ps = SNR(idx)*log2(2);
   Pn= 1;
   m = randi([0 1],1 ,N);
   Tx = dpskmod(m, 2,pi/4,'gray');
   n = sqrt(Pn/2).*(randn(1,N)  + 1i*randn(1,N));
   Rx = sqrt(Ps).*Tx + n;
   m_ = dpskdemod(Rx/sqrt(Ps), 2, pi/4, 'gray');
   BER_s(idx) = BER_s(idx) + sum(m~=m_)/(log2(2)*N);
end
semilogy(EbNo,BER_t,'-', EbNo, BER_s,'o','linewidth',1.2);
xlabel('Ty so tin hieutrennhieutheo dB');
ylabel('BER');
set(gcf,'color','white');
grid on

* ĐIỀU CHẾ MQAM


clc 
clear all 
close all 
EbNo = 0:1:10;
SNR = 10.^(EbNo/10);
M = [4 8 16];
foridx = 1:length(M)
% BER_t(idx,:)=(2./log2(M(idx))).*qfunc(sqrt(2.*SNR*log2(M(idx)))*sin(pi/M(idx)));
BER_t(idx,:)=(4./log2(M(idx))).*qfunc(sqrt((3.*SNR*log2(M(idx)))./(M(idx)-1)));
end
BER_t
N = 10^6;
BER_s = zeros(size(BER_t));
for x = 1:length(M)
    foridx = 1:length(SNR)
        Ps = SNR(idx)*log2(M(x));
        Pn= 1;
        m = randi([0 M(x)-1],1 ,N);
        Tx = qammod(m, M(x),'gray');
        n = sqrt(Pn/2).*(randn(1,N)  + 1i*randn(1,N));
        Rx = sqrt(Ps).*Tx + n;
        m_ = qamdemod(Rx/sqrt(Ps), M(x), 'gray');
        BER_s(x,idx) = BER_s(x,idx) + sum(m~=m_)/(log2(M(x))*N);
    end
end
BER_s 
semilogy(EbNo,BER_t,'-', EbNo, BER_s,'o','linewidth',1.2);
xlabel('Ty so tin hieutrennhieutheo dB');
ylabel('BER');
set(gcf,'color','white');
grid on

Bài 20: Mô phỏng kênh truyền Rayleigh với điều chế MPSK, QMAM và so sánh với lý
thuyết.
* ĐIỀU CHẾ MPSK
clc
clear all
close all
%
EbNo = 0:3:30;
SNR = 10.^(EbNo/10);
M = [4 8 16];
foridx = 1:length(M)
BER_t(idx,:)=(2./log2(M(idx))).*qfunc(sqrt(2.*SNR*log2(M(idx)))*sin(pi/M(idx)));
end

BER_t
N = 10^6;
BER_s = zeros(size(BER_t));
for x = 1:length(M)
foridx = 1:length(SNR)
Ps = SNR(idx)*log2(M(x));
Pn= 1;
m = randi([0 1],1 ,N);
Tx = pskmod(m, M(x),0,'gray');
n = sqrt(Pn/2).*(randn(1,N) + 1i*randn(1,N));
Rx = sqrt(Ps).*Tx + n;
m_ = pskdemod(Rx/sqrt(Ps), M(x), 0, 'gray');
BER_s(x,idx) = BER_s(x,idx) + sum(m~=m_)/(log2(M(x))*N);
end
end
BER_s
semilogy(EbNo,BER_t,'-', EbNo, BER_s,'o','linewidth',1.2);
xlabel('Ty so tin hieutrennhieutheo dB');
ylabel('BER');
set(gcf,'color','white');
grid on

BER_t =

Columns 1 through 9

0.0786 0.0229 0.0024 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000


0.1162 0.0618 0.0205 0.0027 0.0001 0.0000 0.0000 0.0000 0.0000
0.1453 0.1089 0.0677 0.0300 0.0070 0.0005 0.0000 0.0000 0.0000

Columns 10 through 11

0.0000 0
0.0000 0.0000
0.0000 0.0000
BER_s =

Columns 1 through 9

0.0756 0.0227 0.0024 0.0000 0 0 0 0 0


0.1160 0.0621 0.0206 0.0028 0.0001 0 0 0 0
0.1453 0.1090 0.0676 0.0300 0.0070 0.0005 0.0000 0 0

Columns 10 through 11

0 0
0 0
0 0
MÔ PHỎNG HỆ THỐNG VIỄN THÔNG ĐƠN GIẢN

Bài 21: Xem xét hệ thống phân tập thu kết hợp lựa chọn với hai nhánh hoạt động ở kênh
truyền Rayleigh fading, giả sử rằng  1   2 và các kênh truyền là độc lập. Hãy
a) Phân tích xác suất dừng của hệ thống
b) Phân tích tỷ lệ lỗi bit trung bình của hệ thống với điều chế MPSK
c) Phân tích dung lượng shannon của hệ thống
d) Viết chương trình mô phỏng trên Matlab kiểm chứng các kết quả ở các câu trên.
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................

You might also like