Badania symulacyjne i generacja sygnałów

W MATLABie najczęściej mamy do czynienia z dwiema sytuacjami. Albo wykonujemy badania symulacyjne albo eksperymentalne. W drugim przypadku zazwyczaj pracujemy z danymi zapisanymi przez człowieka lub przez system pomiarowy. Importujemy je do MATLABa (o tym jak to zrobić poprawnie będzie jeden z kolejnych wpisów) i wykonujemy analizę za pomocą danego algorytmu. Jednak jak sprawdzić czy napisany przez nas program działa poprawnie, a wynik analizy jest wiarygodny? Weryfikację programu lub napisanego algorytmu można sprawdzić poprzez wykonanie badań symulacyjnych.

Badania symulacyjne i generacja sygnałów

Podczas badań symulacyjnych wykorzystuje się sygnały referencyjne o znanych właściwościach i obserwuje czy wynik działania algorytmu jest zgodny z oczekiwaniami. Jeżeli tak jest i otrzymany wynik jest zbieżny np. z przewidywaniami teoretycznymi, to znaczy, że zaimplementowany algorytm działa poprawnie i można go użyć w praktyce. Jeżeli tak nie jest, to znaczy, że program wymaga korekty.

Przykładem może być samodzielna implementacja algorytmu dyskretnej transformaty Fouriera w celu wyznaczenia widma częstotliwościowego sygnału. Po napisaniu funkcji należy zweryfikować poprawność jej działania. Nie można tego zrobić na sygnałach rzeczywistych, zarejestrowanych przez kartę pomiarową, gdyż ich widmo ogólnie nie jest znane. Rozwiązaniem jest posłużenie się sygnałami referencyjnymi o znanym widmie, np. sygnałem mono- lub poliharmonicznym. Innym przykładem może być estymacja funkcji gęstości prawdopodobieństwa sygnału losowego. Tu również przed zastosowaniem algorytmu w praktyce należy zweryfikować jego działanie na sygnale o znanej funkcji gęstości prawdopodobieństwa.

Podstawą prowadzenia badań symulacyjnych są dane/sygnały syntetyczne, to znaczy wygenerowane sztucznie przez komputer. Daje to pełną kontrolę nad właściwościami sygnałów, dzięki czemu wiadomo jakich efektów się spodziewać. Generując sygnały w MATLABie warto stosować się do następującego schematu:

  1. Podaj częstotliwość i okres próbkowania,
  2. Podaj czas obserwacji sygnału,
  3. Oblicz liczbę próbek sygnału,
  4. Wygeneruj na tej podstawie wektor czasu,
  5. Zdefiniuj parametry sygnału,
  6. Wygeneruj sygnał,
  7. Zweryfikuj kształt wygenerowanego sygnału.

Powyższej zasadzie generacji sygnałów odpowiada następujący program w MATLABie:

fpr = 1000; dt = 1/fpr;    % częstotliwość i okres próbkowania (fpr dobrana tak by było spełnione twierdzenie o próbkowaniu dla sygnałów poliharmonicznych)
to = 0.1;                % czas obserwacji sygnału
N = to/dt;               % liczba próbek
t = (0:N-1) * dt;        % wektor czasu
A = 2; 	                 % amplituda sygnału
f = 50; 	% częstotliwość sygnału
fi = 0; 	% faza sygnału
y = A * sin(2*pi*f*t + fi); 	% generacja sygnału
figure; plot(t,y); xlabel('Czas [s]'); ylable('Amplituda [-]'); grid on; 

 

Postępując według powyższego schematu mamy pewność, że generujemy sygnały w sposób poprawny, a jednocześnie mamy kontrolę nad wszystkimi parametrami próbkowania i sygnałów.

Klasyfikacja sygnałów

Sygnały związane ze zjawiskami fizycznymi można ogólnie podzielić na zdeterminowane i niezdeterminowane (losowe, stochastyczne). Do sygnałów zdeterminowanych zaliczamy takie, które mogą być opisane za pomocą ścisłych zależności matematycznych. Wartość takiego sygnału może być więc obliczona dla dowolnej chwili czasu. Przykładem sygnału zdeterminowanego jest sygnał sinusoidalny. W przeciwieństwie do sygnałów zdeterminowanych, sygnałów losowych nie można opisać za pomocą wzorów. Oznacza to, że niezależnie od czasu obserwacji takiego sygnału, nie da się obliczyć jaką przyjmie wartość w kolejnej chwili czasu. Możemy jedynie określić prawdopodobieństwo przyjęcia danej wartości. Dlatego sygnały losowe opisuje się za pomocą charakterystyk statystycznych, na przykład funkcji gęstości prawdopodobieństwa. Do generacji sygnałów zdeterminowanych w MATLABie, często używamy funkcji z toolboxa Signal Processing takich jak:

  • sin, cos, sawtooth, square, rectpuls, i inne

Do generacji sygnałów losowych używamy natomiast:

  • rand, randn i pochodnych.

Każda grupa sygnałów dzieli się dalej na kolejne podgrupy. O tym jak wygląda ten podział i jak generować konkretne sygnały będzie mowa w kolejnych postach.

(Visited 2 726 times, 1 visits today)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *