Đồ thị tần suất của biến ngẫu nhiên sinh ra theo phương pháp chấp nhận loại trừ
Nơi trao đổi và thảo luận cách thức mô phỏng hệ thống viễn thông trên Matlab
Thứ Bảy, 11 tháng 7, 2020
4.4 Phương pháp chấp nhận - loại trừ (Acceptance - Rejection technique)
Tạo biến ngẫu nhiên rời rạc có giá trị từ 1 đến 10, với xác suất tương ứng là 0.11, 0.12, 0.09,
0.08, 0.12, 0.10, 0.09, 0.09, 0.10 và 0.10.
2.62 Tinh chỉnh biểu đồ 2.61.
Hãy điều chỉnh kích thước, màu sắc và độ dày của mỗi điểm biểu diễn trên đồ thị của
Ví dụ
2.61 thành hình tròn màu đỏ viền đen lớn.
Giải: Lệnh điều chỉnh như sau:
X = 5*rand(100,1);
Y = rand*X + rand(100,1);
figure(1);
plot(X,Y,'o','MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',8);
xlabel('X = 5*rand(100,1)')
ylabel('Y = rand*X + rand(100,1)');
2.61 Vẽ đồ thị các điểm dữ liệu với dữ liệu ngẫu nhiên.
Vẽ đồ thị các điểm dữ liệu với dữ liệu ngẫu nhiên được tạo như sau:
X = 5*rand(100,1);
Y = rand*X + rand(100,1);
Giải: Chương trình vẽ đồ thị với hàm plot() như sau:
X = 5*rand(100,1);
Y = rand*X + rand(100,1);
figure(1);
plot(X,Y,'.');
xlabel('X = 5*rand(100,1)')
ylabel('Y = rand*X + rand(100,1)');
2.60 Cấu trúc.
Hãy khai báo một cấu trúc thông tin của sinh viên gồm ba thành phần gồm họ và tên, năm
sinh và giới tính.
a. Kiểm tra có phải là cấu trúc không?
b. Liệt kê ra các trường của cấu truc
c. Kiểm tra ‘Gioi_Tinh’ có phải là một trường trong cấu trúc sinh viên không?
d. Xếp thứ tự các trường
e. Thêm một trường ‘Noi_Sinh’
f. Kiểm tra tên trường “Ho_va_Ten” có hợp lệ không?
g. Tạo ra một mảng cấu trúc với sinh viên thứ hai.
h. Lấy năm sinh của hai sinh viên
Giải: Chúng ta bắt đầu với hàm struct().
SV=struct('Ho_va_Ten','Tran Van A','Nam_Sinh',1990,'Gioi_Tinh','Nam')
isstruct(SV)
fieldnames(SV)
isfield(SV,'Gioi_Tinh')
SV = orderfields(SV)
SV.Noi_Sinh = 'Khanh Hoa'
SV = rmfield(SV,'Noi_Sinh')
SV(2).Ho_va_Ten = 'Tran Thi B'
SV(2).Nam_Sinh = 1991
SV(2).Gioi_Tinh = 'Nu'
SV.Năm_Sinh
2.59 Các giá trị duy nhất trong mảng.
Nhập vào họ của 3 người trong gia đình bạn, tìm các họ có trong gia đình bạn.
Giải: Chúng ta dùng hàm unique().
FamilyNames = {'Nguyen','Vo','Tran','Vo'}
UniqueNames = unique(FamilyNames)
6.1 Ước tính tỷ số tín hiệu trên nhiễu trung bình
Đề bài: Ước lượng tỷ số tín hiệu trên nhiễu trung bình của hệ thống SISO ở kênh truyền fading
Rayleigh, có công suất phát là P , độ lợi kênh truyền trung bình là ω và so sánh với lý
thuyết.
Rayleigh, có công suất phát là P , độ lợi kênh truyền trung bình là ω và so sánh với lý
thuyết.
Giải: Mã nguồn Matlab cho Ví dụ 6.1 như sau:
==================== CODE MATLAB ====================
% Cong suat phat theo dB
PdB = 0:3:30;
P = 10.^(PdB/10);
% Do loi kenh truyen trung binh
Omega = 2;
% Ty so tin hieu tren nhieu trung binh
gamma_a = P.*Omega;
% Mo phong
N = 10^4;
h = sqrt(Omega/2).*(randn(length(PdB),N) + 1i*randn(length(PdB),N));
gamma_s = sum(P(:).*abs(h).^2,2)/N;
% Ve do thi
figure(1);
set(gcf,'color','White');
plot(PdB,gamma_a,'-',PdB, gamma_s,'o');
legend('Ly thuyet','Mo phong');
xlabel('Ty so tin hieu tren nhieu theo dB');
ylabel('Ty so tin hieu trên nhieu');
axis([0 30 0 2000])
==================== KẾT QUẢ====================
2.58 Kiểm tra số nguyên tố.
Kiểm tra tất cả các số 1 3 5 7 có phải là số nguyên tố không? Kiểm tra có số nguyên tố nào
trong 4 số 1 3 5 7 không?
Giải: Để kiểm tra số nguyên tố, ta dùng hàm isprime().
forall = all(isprime(1:2:7))
exists = any(isprime(1:2:7))
2.57 Các toán tử trên tập.
Thực hiện dòng lệnh sau và giải thích lệnh thực thi:
a. set1 = 1:2:9
b. set2 = 1:4
c. int = intersect(set1,set2)
d. uni = union(set1,set2)
e. dif = setdiff(set1,set2)
f. xor = setxor(set1,set2)
g. check = ismember(3,set1)
h. set3 = {'alpha','beta','gamma'}
i. set4 = {'delta','beta','epsilon'}
j. intc = intersect(set3,set4)
k. check2 = ismember('delta',set4)
Giải: Kết quả trên Matlab như sau:
set1 = 1:2:9
set2 = 1:4
int = intersect(set1,set2)
uni = union(set1,set2)
dif = setdiff(set1,set2)
xor = setxor(set1,set2)
check = ismember(3,set1)
set3 = {'alpha','beta','gamma'}
set4 = {'delta','beta','epsilon'}
intc = intersect(set3,set4)
check2 = ismember('delta',set4)
2.56 Tìm từ trong mảng.
Tìm từ ‘foo’ trong mảng cell {'foobar','bar','barfoo','foofoo'}
Giải: Ta dùng hàm strmatch().
str2 = {'foobar','bar','barfoo','foofoo'}
B = strmatch('foo',str2)
2.55 Tìm chuỗi trong chuỗi.
Tìm chuỗi ‘ctga’ trong chuỗi ‘actgcgctgacgctgatacacgggagctgacgactgaggacgagc’
Giải: Chúng ta dùng hàm strfind() như sau:
tr = 'actgcgctgacgctgatacacgggagctgacgactgaggacgagc'
A = strfind(str,'ctga')
2.2 Biến trong Matlab
Khởi tạo một biến x = 1, y là một chuỗi với “hello world’, z được gán là kết quả của hàm
log10(100) và t là một vector từ 1 đến 4.
Giải: Từ cửa sổ lệnh (“Command Window”) và bắt đầu từ dấu >>
x = 1
y = 'hello world'
z = log10(100)
t = [1 2 3 4]
Thứ Tư, 8 tháng 4, 2020
Mô phỏng xác suất dừng của hệ thống maxial ratio combining
% Công suất phát theo dB
PdB = 0:1:10;
P = 10.^(PdB/10);
% Độ lợi kênh truyền trung bình
Omega = [1 2 3]; %
N =
length(Omega);
% Lý thuyết
g_ = Omega(:).*P;
gMRC_a =
sum(g_,1);
% Mô phỏng
N = 10^4; % So luong phep thu
h1 =
sqrt(Omega(1)/2).*(randn(length(PdB),N) + 1i*randn(length(PdB),N));
h2 =
sqrt(Omega(2)/2).*(randn(length(PdB),N) + 1i*randn(length(PdB),N));
h3 =
sqrt(Omega(3)/2).*(randn(length(PdB),N) + 1i*randn(length(PdB),N));
% MRC
gMRC_s =
P(:).*sum(abs(h1).^2 + abs(h2).^2 + abs(h3).^2,2)/N;
% Vẽ
figure(1);
set(gcf,'color','White');
semilogy(PdB,gMRC_a,'-',PdB,gMRC_s,'o');
legend('Lý thuyết','Mô phỏng');
xlabel('Tỷ lệ tín hiệu trên nhiễu theo dB');
ylabel('Tỷ lệ tín hiệu trên nhiễu');

Đăng ký:
Bài đăng (Atom)
2.16 Tìm giá trị nhỏ nhất và lớn nhất trong ma trận
Cho ma trận X = [1 2 3; 4 5 6; 7 8 9]. Hãy a. Tìm giá trị lớn nhất và giá trị nhỏ nhất theo hàng. b. Tìm giá trị lớn nhất và nhỏ nhất theo...
-
Cho ma trận X = [1 2 3; 4 5 6; 7 8 9]. Hãy a. Tìm giá trị lớn nhất và giá trị nhỏ nhất theo hàng. b. Tìm giá trị lớn nhất và nhỏ nhất theo...
-
Thực thi ghép nối các ma trận sau trên Matlab và nhận xét kết quả thu được: A = [[1 2 3], zeros(1,3)] B = [[1 2 3]; ones(1,3)] C = [99 A ...
-
Cho ma trận A = [1 2 3 4 ; 5 6 7 8], chuyển thành ma trận hàng. Giải: >> A = [1 2 3 4 ; 5 6 7 8] A = 1 2 3...