3831


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

    1. Sprawozdanie powinno zawierać raport z przebiegu ćwiczenia z wykresami otrzymanych przebiegów sygnałów i parametrów oraz uwagami i wnioskami.

    2. 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.



Wyszukiwarka