You are on page 1of 5

%vi du 4.31 Hãy tạo ra biến ngẫu nhiên phân bố Rayleigh có = 2 .

Vẽ biểu
%đồ tần suất và so sánh lý thuyết.
N=10^4;
sigma = 2;
r = raylrnd(sigma,1,N);
dx= 0.3;
Xm=8;
x = 0:dx:Xm;
%mo phong
CDF_s = zeros(size(x));
for idx =1:length(x)
CDF_s(idx) = CDF_s(idx)+ sum(r <= x(idx))/N;
end
PDF_s = zeros(size(x));
for idx = 2:length(x)
PDF_s(idx) = PDF_s(idx) + sum((r >= x(idx-1))&(r < x(idx)))/(dx*N);

end
%ly thuyet
CDF_t = 1-exp(-x.^2./(2*sigma.^2));
PDF_t = x./sigma.^2.*exp(-x.^2./(2*sigma.^2));
plot(x,CDF_t,x,CDF_s,'o',x,PDF_t,x,PDF_s,'s');
156
xlabel('\it x');
ylabel('CDF-PDF');
legend('CDF ly thuyet','CDF mo phong','PDF ly thuyet','PDF mo phong');
set(gcf,'color','white');

%vi du 4.32 Tương tự Ví dụ 4.31, hãy tạo ra biến ngẫu nhiên có phân bố Rayleigh
từ biến phân bố chuẩn. Vẽ biểu đồ tần suất và so sánh lý thuyết.
N=10^4;
sigma = 2;
r = abs( sigma.*(randn(1,N) + 1i*randn(1,N)));
dx= 0.3;
Xm=8;
x = 0:dx:Xm;
%mo phong
CDF_s = zeros(size(x));
for idx =1:length(x)
CDF_s(idx) = CDF_s(idx)+ sum(r <= x(idx))/N;
end
PDF_s = zeros(size(x));
for idx = 2:length(x)
PDF_s(idx) = PDF_s(idx) + sum((r >= x(idx-1))&(r < x(idx)))/(dx*N);
end
%ly thuyet
CDF_t = 1-exp(-x.^2./(2*sigma.^2));
PDF_t = x./sigma.^2.*exp(-x.^2./(2*sigma.^2));
plot(x,CDF_t,x,CDF_s,'o',x,PDF_t,x,PDF_s,'s');
156
xlabel('\it x');
ylabel('CDF-PDF');
legend('CDF ly thuyet','CDF mo phong','PDF ly thuyet','PDF mo phong');
set(gcf,'color','white');
%Ví dụ 4.33: Sử dụng hàm makedist() để tạo đối tượng phân bố ngẫu nhiên có
%phân bố Nakgami-m vớitham m = 2 và = 1. Vẽ biểu đồ tần suất và so sánh
%với hàm PDF lý thuyết.
N= 10^6;
%Shape pẩmeter
mu =2;
%Scale parameter
Omega = 2;
% tao bien ngau nhien
pd = makedist('Nakagami','mu',mu,'omega',Omega);
r= pd.random(1,N);

%ve do thi tan suat


dx = 0.1;
Xm = max(r);
x=0:dx:Xm;

PDF_t= pd.pdf(x);
plot(x,PDF_t,'r','LineWidth',2)
hold on
% ve tan suat
PDF_s=zeros(size(x));
for idx = 2:length(x)
PDF_s(idx) = PDF_s(idx) + sum((r >= x(idx-1))&(r < x(idx)))/(dx*N);

end
159
%ve hinh so sanh
plot(x,PDF_t);
hold on
stem(x,PDF_s,'s');
xlabel('\it r');
ylabel('PDF');
legend('PDF ly thuyet','PDF mo phong');
set(gcf,'color','white');
%vi du 4.34 Hãy mô phỏng tạo biến ngẫu nhiên có phân bố Nakagami-m m = 3
%và = 2 từ phân bố Gamma. Vẽ biểu đồ tần suất và so sánh với hàm PDF lý
%thuyết bằng cách sử dụng hàm pdf() từ đối tượng phân bố tạo ra từ hàm
%makedist().
%Và hàm chi2rnd() để tạo biến ngẫu nhiên có phân bố Chi.
clear all
clc
N= 10^4;
% shape prameter
mu =3;
% Scale prameter
Omega=2;

% tạo biến ngẫu nhiên Nakagami từ biến ngẫu nhiên phân bố Chi
r=sqrt(Omega/(2*mu)).*sqrt(chi2rnd(2*mu,1,N));
% thiết lập thông số vễ đồ thị
dx = 0.1;
Xm = max(r);
x=0:dx:Xm;

% vẽ tần số
PDF_s= zeros(size(x));
for idx=2:length(x)
PDF_s(idx)=PDF_s(idx)+sum((r >= x(idx-1))&(r<x(idx)))/(dx*N);
end
% vẽ đồ thị phân bố Nakagami-m lí thuyết
pd= makedist('Nakagami','mu',mu,'omega',Omega);
r= pd.random(1,N);
PDF_t=pd.pdf(x);

% Vẽ hình so sánh
plot(x,PDF_t,'r','LineWidth',2);
hold on
stem(x,PDF_s,'o');
xlabel('\it r');
ylabel('PDF');
legend('PDF ly thuyet','PDF mo phong');
set(gcf,'color','white');

% ví dụ 4.35 Vẽ hàm Dirichlet trong khoảng (−2 ,2   )cho n = 5 và n = 7


N= 200;
x= -2*pi:1/N:2*pi;
y5 = diric(x,5);
y7 = diric(x,7);
plot(x,y5,x,y7);
legend('n=5','n=7');
set(gcf,'color','white');

% vi du 4.36 Hãy tạo tín hiệu răng cưa có tần số là 5 Hz, tần số lấy mẫu là 100
Hz và thời gian là 1s.
%Chúng ta sử dụng hàm sawtooth() với chương trình Matlab và kết quả như sau:
T=1;
fc = 5;
fs = 10^2;
t=0:1/fs:T;
x= sawtooth(2*pi*fc*t);
plot(t,x);
set(gcf,'color','white');
xlabel('Time(s)')
ylabel('Waveform')

%Ví dụ 4.37: Tạo chuỗi bit có chiều dài 1000 bit, tính xác suất xuất hiện của
bit 0 và bit
N = 1000;
X = randi([0 1],1,N);
Pr0=sum(x==0)/N
Pr1=sum(x==1)/N

%Ví dụ 4.38:
%a. Tạo ma trận lỗi 3x3 có 1 lỗi trên mỗi hàng.
%b. Tạo ma trận lỗi 3x10 có 1 lỗi trên mỗi hàng.
%c. Tạo ma trận lỗi 10x5 với 1 lỗi có xác suất 80% và 3 lỗi có xác suất 20%.
randerr(3,3)
randerr(3,10)
randerr(10,5,[1 3; 0.8 0.2])

%4.39 Tạo tín hiê


̣u số
%Tạo một nguồn tín hiệu có 1000 phần tử chỉ có ba giá trị -1, 2 và 5, với xác
suất tương ứng là 0.2, 0.3 và 0.5.

%Giải: Ta dễ dàng nhận thấy A = [-1 2 5] và p = [0.2 0.3 0.5].


% Chiều dài của nguồn
N = 1000;
% Các tín hiệu của nguồn
A = [-1 2 5];
% Xác suất của tín hiệu nguồn
p = [0.2 0.3 0.5];
% Tạo tín hiệu nguồn
src = randsrc(1,N,[A;p]);
% Vẽ đồ thị tần suất chuẩn hóa để kiểm chứng
histogram(src,'Normalization','probability')

%vidu 4.40 Tín hiê


̣u ngẫu nhiên
%Tạo biến ngẫu nhiên có 10000 phần tử có phần bố Gamma có hai tham số lần lượt
và 1 và 2.

%Giải: Trong ví dụ này, chúng ta sử dụng hàm histfist() để kiểm chứng


% Phân bố Gamma
nameDist = 'Gamma';
a = 1;
b = 2;
% Số lượng mẫu cần tạo
N = 10000;
r = random(nameDist,a,b,[N 1]);
% Vẽ đồ thị histogram
histfit(r,100,nameDist)
set(gcf,'color','white');

You might also like