Politechnika Rzeszowska
Katedra Automatyki i Informatyki
Zastosowanie obliczeń komputerowych w systemie MATLAB w teorii sterowania
1. System MATLAB
1.1 Wprowadzenie
1.2 Podstawowe elementy języka systemu MATLAB
1.3 Działania na macierzach
1.4 Instrukcja i wyrażenia
1.5 Operacje na elementach
1.6 Instrukcje i wyrażenia
1.7 Operacje na elementach macierzy
1.8 Relacje
1.9 Operacje logiczne
1.10 Inne operatory
1.11 Formaty wydruków
1.12 Tworzenie wykresów
1.13 Instrukcje sterujące przebiegiem programu
1.14 Zachowanie wyników obliczeń na dysku
1.15 Uzupełnienia podstawowych informacji
2. Przykłady zastosowań w teorii sterowania
2.1 Wielomiany
2.2 Transmitancja operatorowa
2.3 Wyznaczanie odpowiedzi skokowej
1.1.1Informacje ogólne
System MATLAB umożliwia wygodne prowadzenie obliczeń matematycznych w zakresie różnych dyscyplin. Przydatność systemu uwidacznia się szczególnie w odniesieniu do problemów dotyczących teorii sterowania i teorii systemów. Obecnie system jest stale wzbogacany o nowe biblioteki procedur (TOOLBOX) obejmujące różne dziedziny jak sterowanie, przetwarzanie sygnałów, sieci neuronowe itd.
Uruchomienie systemu wymaga następującego zestawu komputera typu PC :
Ø Minimum320kB pamięci operacyjnej
Ø Przynajmniej jedna stacja dysków elastycznych
Ø Koprocesor 8087, 80287 lub 80387
Zalecane jest też, aby zestaw posiadał dodatkowo:
Ø Twardy dysk (MATLAB potrzebuje ok. 1,2 MB)
Ø Większą pamięć operacyjną
Ø Kartę graficzną SVGA
Rozpoczęcie pracy wymaga:
Ø Odszukania katalogu zawierającego MATLAB (często odbywa się to automatycznie i jest realizowane przez system operacyjny )
Ø Wprowadzenia z klawiatury polecenia uruchomienia systemu w postaci: MATLAB+Enter i poczekania na zgłoszenie się systemu przez wyświetlenie znaku „zaproszenia”: >>
Wyjście z systemu realizują instrukcje:
Ø quit
Ø exit
1.1.2 Podstawowe zasady pracy w systemie MATLAB
Duże i małe litery:
MATLAB rozróżnia duże i małe litery. Oznacza to, że np. A i a nie są tymi samymi zmiennymi. Wszystkie nazwy poleceń wprowadzanych po wyświetleniu na ekranie znaku „zaproszenia” >> muszą być pisane małymi literami. Instrukcją casesen można spowodować niewrażliwość na wielkość liter. Ponowne jej wywołanie przywraca stan początkowy.
Uzyskiwanie informacji pomocniczej systemu:
Instrukcja help <temat> powoduje wyświetlenie komentarza dotyczącego danego tematu. Pod nazwą <temat>
Wpisuje się na ogół nazwę procedury. Gdy napiszemy tylko help , nastąpi wyświetlenie tematów objętych tą instrukcją.
Uruchomienie przykładów demonstracyjnych:
Polecenie demo umożliwia prześledzenie istniejących już w systemie przykładów zastosowania wybranych funkcji MATLAB-a.
Wywołanie komend DOSu z poziomu MATLABa:
Rozpoczęcie polecenia od wykrzyknika ! oznacza, że dalsze napisy w linii oznaczają treść instrukcji dla systemu operacyjnego (DOS). Typowym przykładem jest wywołanie edytora ne poleceniem !ne.
Inne:
Ø Średnik ; użyty po wyrażeniu lub instrukcji blokuje wyświetlanie wyniku na ekranie,
Ø Dwie (lub więcej) kropki .. na końcu linii oznaczają kontynuację,
Ø Przy edycji poleceń istnieją następujące możliwości:
Ø % - oznacza, że dalsza część linii jest komentarzem,
Ø h - przywołanie poprzedniej linii
Ø i - przywołanie następnej linii
Ø f - przesunięcie kursora w lewo o jeden znak
Ø g - przesunięcie kursora w prawo o jeden znak
Ø Ctrlf - przesunięcie kursora o jedno słowo w lewo
Ø Ctlrg - przesunięcie kursora o jedno słowo w prawo
Ø Home - przesunięcie kursora do początku linii
Ø End - przesunięcie kursora na koniec linii
Ø Esc - kasowanie całej linii
Ø Ins - przełączanie między wstawianiem, a wpisywaniem w miejsce starego
Ø Del - kasowanie znaku przed kursorem
Ø Backspace -kasowanie znaku na lewo od kursora
1.1.3. Zbiory „.m” i „.mex”
Pocedury wykorzystywane przez MATLAB są zapisane w zbiorach z rozszerzeniami .m lub .mex. Rozszerzenie .mex mają procedury powstałe ze skomplikowanych programów w języku FORTRAN lub C, skonsolidowanych (zlinkowanych) do postaci wykonywalnej (.exe). Isnieje więc możliwość użycia własnych procedur napisanych w tych językach.
Obok możliwości wykorzystania FORTRANu i C, MATLAB, posiada własny język programowania, nazywany językiem systemu MATLAB, w którym także można pisać własne procedury(programy)rozszerzające biblioteki MATLABa. Procedury te przygotowuje się w postaci zbiorów źródłowych z rozszerzeniem .m, wykorzystując do tego celu edytor tekstowy(np. nc, ne, Sidekick itp.).Nie będziemy tutaj omawiać bliżej otrzymywania zbiorów typu .m, zawierających instrukcje języka systemu MATLAB.
Warto zaznaczyć, że podczas realizacji procedury źródłowe umieszczone w zbiorach typu .m nie są komplikowane lecz interpretowane, tzn. przed wykonaniem nie jest otrzymywany kod maszynowy taki, jaki zapewniają kompilatory i konsolidatory (linkery).W wyniku takiego podejścia MATLAB jest bardziej efektywnym systemem, którego zaletą jest eliminacja czasochłonnego cyklu kompilacja - konsolidacja-wykonanie. Z drugiej strony należy jednak zaznaczyć , że niektóre instrukcje ,zwłaszcza pętle, są wykonywane znacznie wolniej niż w językach kompilowanych jak C i PASCAL. Wydruk zbioru <nazwa . m> na ekranie uzyskuje się za pomocą polecenia type nazwa
Wydruk zbioru o dowolnym rozszerzeniu nazwa . roz otrzymuje się za pomocą polecenia type nazwa . roz.
Dla uproszczenia zamiast sformułowania ”język systemu MATLAB” będziemy używać skróconych postaci tej nazwy: ”język MATLAB” lub „MATLAB”
1.2.1Liczby w języku MATLAB
Zapis liczb rzeczywistych
Liczby są przedstawione w konwencjonalnym zapisie dziesiętnym z opcjonalną kropką dziesiętną i znakiem minus. Przykładami dozwolonego zapisu liczb rzeczywistych są:
3 -99 0.0001
9.6397238 1.60210E-20 6.02252e23
Każda liczba jest zapisywana w 8-miu bajtach, co umożliwia zapis z dokładnością około 16 cyfr znaczących. Zakres liczb wynosi w granicach od 10-308 do 10308.
Aby wprowadzić liczby zespolone, trzeba wprowadzić jednostkę urojoną
i=sqrt(-1) lub j=sqrt(-1) .
Zapisu dokonuje się następnie w zwykły sposób, np.
3+4*j lub 5*exp(j*2.5)
eps=2-52=2.22*10-16 – wartość używana jako tolerancja, np. przy ocenie osobliwości macierzy; użytkownik może ją zmieniać na dowolną inną,
pi=p,
inf=¥,
NAN – „nie liczba” – uzyskiwana w operacjach Inf/Inf lub 0/0.
1.2.2 Macierze i działania na nich
MATLAB wykorzystuje w zasadzie tylko jeden typ obiektów, tj. prostokątne macierze liczbowe z dopuszczalnymi elementami zespolonymi. Szczególnym przypadkiem jest skalar, tzn. macierz 1x1 lub wektor, tj.macierz o jednej kolumnie lub jednym wierszu.
Wszystkie operacje w MATLABie rozumie się jako macierzowe. NA uwagę zasługuje fakt, że nie ma deklaracji zmiennych i rezerwowania wymiarów.
Wprowadzanie macierzy może odbywać się następującymi sposobami:
Ø Bezpośrednie podanie listy elementów z klawiatury,
Ø Utworzenie zbioru .m,
Ø Wywołanie instrukcji lub funkcji.
Przy wprowadzaniu małych macierzy najprościej jest podać listę elementów oddzielonych spacją lub przecinkiem zamkniętą w nawiasach prostokątnych, wewnątrz których wiersze są oddzielone średnikami.
[ 1 2 3
A=[1 2 3 ; 4 5 6 ; 7 8 9 ] lub A= 4 5 6
7 8 9 ]
oznacza wprowadzenie macierzy A=
Zapis macierzy z przykładu 1.1 może być dokonany bezpośrednio z klawiatury, lub umieszczony wcześniej na dysku, np. w zbiorze macA.m . W drugim przypadku dla wprowadzenia macierzy do pamięci wystarczy instrukcja: >>macA (Enter)
Istnieje możliwość wykorzystywania już istniejących macierzy jeśli są one „podmacierzami” wprowadzanych macierzy; np. zapis :
Spowoduje, że macierz A będzie miała teraz postać: A=
Sposób wprowadzania macierzy z elementami zespolonymi ilustruje następujący przykład:
Wprowadzanie jednego z poniższych zapisów:
A=[1 2 ; 3 4 ]+j*[ 5 6 ; 7 8 ] lub A=[1+5*j 2+6*j ; 3+7*j 4+8*j ]
Spowoduje to, że macierz A będzie miała postać: A= 1+5*j 2+6* j
3+7*j 4+8*j
Funkcje zapełniania prostych macierzy
Często spotykane można wprowadzić nieco prościej wykorzystując do tego celu specjalne funkcje(polecenia języka MATLAB). Należą do nich :
ones(n), ones(m,n), ones(A) – tworzą jedynek kolejno o wymiarach n, xn, mxn, takich jak znana macierz A.
eye(n), eye(m,n), eye(A) – tworzą macierze z jedynkami na przekątnej i zerowymi pozostałymi elementami o wymiarach jw.
zeros(n), zeros(n,m), zeros(A) – tworzą macierze z zer o wymiarach jw.
UWAGA: Jeśli A jest skalarem, to ones(A) ma taki wymiar jak wartość zapisana pod A. To samo dotyczy pozostałych funkcji.
Macierz pusta (o wymiarach 0x0)może być zdefiniowana za pomocą operacji:
A=[].
1.2.3 Definiowanie wektorów
Ponieważ wektory także w MATLABie są traktowane jako szczególny przypadek macierzy może być dla nich stosowany dowolny spośród wyżej wymienionych sposobów wprowadzania. Dodatkowo wektory można tworzyć stosując specjalne zapisy języka MATLAB jak np.
Ø x=1:5 jest równoważne utworzeniu wektora x=[ 1 2 3 4 5 ].
Ø x=0:0.5:2 x=[ 0 0.5 1 1.5 2 ]
Ø x=6:-1:1 x=[ 6 5 4 3 2 1 ]
1.2.4 Odwołania
MATLAB zapewnia wygodne odwoływanie się w programie do pojedynczych elementów lub fragmentów macierzy (wektorów). Ilustrują to następujące przykłady:
Ø A(i,j) element wiersza i oraz kolumny j macierzy A
Ø A(1:5,3) wektor kolumnowy utworzone z pierwszych 5 elementów 3-ciej kolumny macierzy A
Ø A(1:5,7:10) podmacierz macierzy A utworzona z pierwszych 5 wierszy i kolumn 7,8,9,10.
Ø A(:,3) wektor utworzony z całej trzeciej kolumny
Ø A(1:5,:) macierz utworzona z pierwszych pięciu wierszy.
Ø Niech A i B oznaczają wcześniej wprowadzone macierze o wymiarach 10x10. Operacja podstawiania:
A(:,[ 3 5 10 ])=B(:,1:3) zastępuje 3,5 i 10 kolumny macierzy A trzema pierwszymi kolumnami macierzy B.
Ø Niech A= . Operacja podstawiania
B=A(:) spowoduje utworzenie wektora b= . Odwołanie A(:)może być także użyte z lewej strony wyrażenia np.
A(:)=11:16 , co spowoduje, że nowa postać macierzy A będzie A= .
Ø Odwołanie może nastąpić przez wektory zero – jedynkowe. Niech A będzie macierzą mxn a L wektorem m - wyrazowym utworzonym z zer i jedynek. Wówczas odwołanie A(L,:) wyodrębni te wiersze macierzy, które odpowiadają niez...
snicker15