Laboratorium Modelowania i Symulacji
Ćwiczenie 1
Generowanie i testowanie liczb pseudolosowych o rozkładzie równomiernym
Program ćwiczenia
Przed wykonaniem kolejnych punktów programu ćwiczenia należy dokładnie zapoznać się z załączonymi programami w języku Matlab,
Za pomocą programu generatora multiplikatywnego uran wygenerować ciągi liczb pseudolosowych dla różnych typów parametru m (liczba pierwsza),
Napisać i uruchomić funkcję w języku Matlab wyznaczającą długość okresu generatora. Wyznaczyć długości okresów dla kilku wybranych generatorów.
Wygenerować wektor pseudolosowy o rozkładzie równomiernym na przedziale (0,1), o zadanej długości M, za pomocą programu ugen.
Obliczyć histogram rozkładu (hist).
Uruchomić program testu autokorelacji (test). Zbadać wpływ doboru stałych a i m na skorelowanie ciągu. Uwaga: wartości a zbliżone do zapewniają dobre właściwości statystyczne generatora, dla wartości bliskich 1 lub m test korelacji zwykle nie jest spełniony.
Napisać i uruchomić funkcje w języku Matlab generowania liczb pseudolosowych za pomocą generatorów mieszanego i addytywnego.
Wygenerować za pomocą generatorów mieszanego i addytywnego wektory pseudolosowe o rozkładzie równomiernym na przedziale (0,1), o zadanej długości M.
Obliczyć histogramy rozkładu (hist).
Uruchomić program testu autokorelacji (test).
Napisać i uruchomić funkcje w języku Matlab generowania liczb pseudolosowych za pomocą generatora kwadratowego.
Dobrać eksperymentalnie parametry generatora (wartość początkową x i liczbę m) tak, aby otrzymać ciąg o założonej długości.
Wygenerować wektor pseudolosowy o rozkładzie równomiernym na przedziale (0,1), o zadanej długości M.
Obliczyć histogram rozkładu (hist).
Uruchomić program testu autokorelacji (test).
Wygenerować za pomocą generatora rand wektor pseudolosowy o rozkładzie równomiernym na przedziale (0,1).
Obliczyć histogramy rozkładu (hist).
Uruchomić program testu autokorelacji (test).
Sprawozdanie
Sprawozdanie powinno zawierać raport z przebiegu ćwiczenia z wykresami otrzymanych przebiegów sygnałów i parametrów oraz uwagami i wnioskami.
Programy wykorzystywane w ćwiczeniu
3.1. Funkcja uran - generator multiplikatywny
%URAN Generator multiplikatywny,
% x=a*x(mod m)
function[x]=uran(x,a,m);
x=rem(a*x,m);
3.2. Funkcja ugen - generowanie wektora (Nx1)
%UGEN Generowanie wektora liczb pseudolosowych,
% X - wektor Nx1 liczb o rozkładzie równomiernym na przedziale (0,1)
function[X]=ugen(x,a,m,N);
for i=1:N,
x=uran(x,a,m);
X(i)=x/m;
end;
3.3. Program test - test autokorelacji dla generatora liczb pseudolosowych o rozkładzie
równomiernym
%TEST Test autokorelacji dla generatora liczb pseudolosowych o rozkładzie
% równomiernym na przedziale (0,1)
X=X-0.5;
Z=corr(X,N,M);
Z=Z/Z(1);
figure(1); clf; hold on;
plot([0:M-1],Z,'*');
% Obliczenie granicy przedziału ufności dla poziomu ufności 0.95
k=1.96*sqrt(1/N);
K=k*ones(M,1);
plot([0:M-1],K,'--r');
plot([0:M-1],-K,'--r'); hold off;
3.4. Funkcja corr - obliczanie funkcji korelacyjnej
%CORR Obliczanie funkcji korelacyjnej
% c=corr(x,N,M),
% x jest wektorem Nx1 zawierającym badany ciąg,
% M-1 określa maksymalne opóźnienie,
% c oznacza wektor 1xM zawierający wartości funkcji korelacyjnej
function[c]=corr(x,N,M);
% Obliczanie funkcji korelacji własnej
c=0*zeros(1,M);
for I=1:M,
for i=1:N-M+1,
c(I)=c(I)+x(i)*x(i+I-1);
end;
c(I)=(1/(N-M+1))*c(I);
end;
4. Literatura
Janczak A., Pieczyński A., Sandecki R.: Laboratorium układów automatyki i sterowania. Skrypt. WSI. Zielona Góra, 1989.
Jermakow S. M.: Metoda Monte Carlo i zagadnienia pokrewne. PWN. Warszawa. 1976.
Zieliński R.: Generatory liczb losowych. WNT. Warszawa. 1979.