Wprowadzenie do Matlaba
Wstęp
MATLAB jest programem przeznaczonym do wykonywania różnorodnych obliczeń numerycznych. MATLAB jest interpreterem języka, zaprojektowanego specjalnie z myślą o obliczeniach numerycznych. Praca w środowisku MATLAB-a przypomina pracę w typowym systemie operacyjnym (np. DOS, UNIX) - polega na wydawaniu poleceń, które po zatwierdzeniu są wykonywane przez interpreter. W ten sposób bezpośrednio z wiersza poleceń można zdefiniować zmienną, wywołać funkcję lub podprogram zbudowany z poleceń interpretera, a zapisanych w specjalnym zbiorze tekstowym zwanym skryptem. [1]
Podstawy działań w środowisku MATLAB
Na rysunku 1 przedstawiono okno edytora poleceń środowiska MATLAB, które jest głównym pomostem pomiędzy użytkownikiem a interpretatorem poleceń. Okno to pojawia się zaraz po uruchomieniu programu.
Rys.1. Okno dialogowe pakietu MATLAB.
Edytor obsługuje się min. za pomocą następujących poleceń klawiaturowych:
Kombinacja klawiszy |
Operacja |
↑ , Ctrl-P ↓ , Ctrl-N
←, Ctrl-B →, Ctrl-F Ctrl-←, Ctrl-L Ctrl-→, Ctrl-R |
przywołanie polecenia: poprzedniego następnego przesunięcie kursora znak w lewo znak w prawo słowo w lewo słowo w prawo |
W tabeli podano kilka przykładów najczęściej stosowanych poleceń MATLABA, których działanie należy przetestować. (W linii poleceń należy wpisać przykład i nacisnąć ENTER)
Przykład polecenia |
Opis |
2.45 |
utworzenie zmiennej o standardowo przyjętej nazwie ans i wartości 2.45 |
a=22.5; |
utworzenie zmiennej o nazwie a i wartości 22.5 Średnik powoduje, że wartość 22.5 nie zostanie wyświetlona na ekranie. Należy spróbować wpisać ten sam przykład bez średnika. |
a |
powoduje wyświetlenie na ekranie wartości zmiennej a |
pi |
powoduje wyświetlenie wartości liczby pi. W MATLAB-ie liczba pi jest zdefiniowana domyślnie. |
c=sin(a) |
Powoduje obliczenie wartości funkcji sinus dla zmiennej a i wyświetlenie jej na ekranie. Wartość ta jest zapisana pod nazwą c |
a=a-2.5 |
zmiana wartości zmiennej a |
a*c |
pomnożenie zmiennej a przez zmienną c. Zastosowanie operatorów: -, +, /, ^ pozwoli na wykonanie kolejno działań odejmowania, dodawania, dzielenia i potęgowania. |
A=[1,2,3;4,5,6;6,7,8] |
zdefiniowanie macierzy kwadratowej stopnia trzeciego. |
B=[3 2 1;6 7 8;4 5 9] |
inny sposób zdefiniowania macierzy kwadratowej stopnia trzeciego |
b-c |
działanie nie zostało wykonane ponieważ zmienna b nie została utworzona. |
Utworzone zmienne są pamiętane od momentu utworzenia, aż do chwili ich usunięcia. Możliwa jest przy tym nie tylko zmiana wartości, ale również rozmiaru zmiennej |
|
who |
wyświetlenie nazw wszystkich utworzonych zmiennych przechowywanych w pamięci |
clear c A |
Usunięcie z pamięci zmiennych o nazwach c i A |
dir |
wyświetla zawartość aktualnego katalogu. Zamiennie można stosować polecenie UNIX-owe - ls. |
cd |
wyświetla ścieżkę dostępu do katalogu w którym obecnie się znajdujemy. Zamiennie można stosować polecenie UNIX-owe - pwd. |
save test |
zapisuje wszystkie zmienne na dysku w aktualnym katalogu w pliku o nazwie „test.mat” |
load test |
odczytuje zmienne zapisane w pliku o nazwie test.mat |
lookfor matric |
polecenie to wyszukuje te skrypty, które w pierwszym wierszu komentarza zawierają podane w poleceniu słowo. |
help who |
odwołanie się do pomocy dotyczącej polecenia who |
Stosując poznane polecenia MATLAB-a należy:
|
Operacje na macierzach
Jedynym używanym w MATLAB-ie typem danych są macierze np. zmienna a o wartosci 2.5 jest traktowana przez interpreter jako macierz jednoelementowa. Pakiet MATLAB pozwala na przetwarzanie macierzy i operowanie na nich za pomocą dużej ilości poleceń. Poniżej w tabelce zestawiono podstawowe przykłady dotyczące macierzy wraz z opisami. Każdy przykład należy przetestować.
Przykład polecenia |
Opis |
Definiowanie macierzy: |
|
A=[1 4 1 1; 2 1 1 3] |
przez wyliczenie jej elementów. Wiersze macierzy oddziela się średnikiem, natomiast wyrazy w wierszu mogą być odzielone spacją lub przecinkiem |
A=[1:10; 1:2:20] |
przez wygenerowanie elementów z zastosowaniem wyrażenia w postaci ogólnej w_min:krok:w_max. Polecenie tworzy macierz o dwóch wierszach. Do wygenerowania elementów macierzy można posłużyć się również jedną z funkcji wspomagających lub sekwencją instrukcji sterujących. |
A=[1 4 1; 2 0 1] B=[3,1;4,1] C=[1 2 2 0 1; 2 4 7 1 0] D=[A B; C] |
przez zbudowanie z innych macierzy. Trzy pierwsze wyrażenia definiują macierze, które w czwartym wyrażeniu stają się podmacierzami macierzy D. |
A=[1 2 3; 4 5 6] D=[A, [1;2]; 1:4] |
Przez mieszanie przedstawionych wyżej technik. |
Dostęp do elementów macierzy: |
|
A=[1 2 3 4 5 6; 0 9 8 7 6 5; 1 1 0 0 2 2] |
zdefiniowanie macierzy |
A(2, 4) |
odwołanie do czwartego elementu w drugim wierszu |
A(3, 3) |
odwołanie do trzeciego elementu w trzecim wierszu |
A(1:2,1:2) |
odwołanie do podmacierzy rozpiętej między elementami (1,1) a (2,2) |
A(2,1:6) lub A(2,:) |
odwołanie do wiersza drugiego macierzy A |
A([1 3],:) |
odwołanie do wierszy 1 i 3 macierzy A |
A(:,[1:3 5]) |
pobranie z macierzy A kolumn 1-3 oraz 5 |
A([1 3], 1:2:5) |
Utworzenie macierzy z elementów leżących na przecięciu wierszy 1 i 3 z kolumnami 1, 3 i 5 |
A(:,4)=[]; |
Usuwa ostatnią kolumnę macierzy A |
A(:,1:2)=[] |
Usuwa pierwsze dwie kolumny macierzy A |
Rozmiary macierzy i ich wyświetlanie: |
|
disp(A) |
wyświetla na ekranie zawartość macierzy A |
[n,m]=size(A) |
zwraca liczbę wierszy m oraz kolumn n macierzy A |
X=[1,2,3,4,5] |
Utworzenie wektora X |
n = length(X) |
Zwraca wymiar wektora X. Jeśli X jest macierzą zwracany jest dłuższy z jej wymiarów |
Operacje na macierzach |
|
A=[1 1 0; 2 1 1] B=[1 1 1; 0 -2 2] C=[2;2;2] D=[1 1; 0 1; -1 2] |
zdefiniowanie macierzy A, B, C i D |
A+B |
suma macierzy |
A-B |
różnica macierzy |
A+2 |
dodanie do macierzy liczby |
A*C A*D A*2 |
normalne mnożenie macierzy |
A.*B |
mnożenie tablicowe. Operator .* oznacza mnożenie dwóch macierzy o tych samych wymiarach, mnożone są odpowiadające sobie elementy |
A./B |
dzielenie tablicowe. Operator ./ wykonuje dzielenie elementów macierzy będącej drugim jego argumentem przez macierz stanowiącą pierwszy jego argument |
A.^2 |
potęgowanie tablicowe. Operator .^ umożliwia podniesienie każdego elementu macierzy do dowolnej potęgi zespolonej (a tym samym i do dowolnej rzeczywistej) |
A' |
transpozycja macierzy A |
Stosując poznane polecenia MATLAB-a należy obliczyć następujące wyrażenie:
gdzie:
gdzie: macierz G powstała w ten sposób że: z macierzy D pobrano 2 i 3 kolumnę a następnie podmacierz tą transponowano.
Wartości i,j,n powinny być uzyskane przez zastosowanie odpowiednich funkcji. Wszystkie zmienne należy zapisać w pliku *.mat
|
Instrukcje sterujące
W MATLAB-ie istnieje grupa instrukcji za pomocą których można sterować działaniem i wykonywaniem instrukcji i funkcji obliczeniowych. Instrukcje te stosuje się podczas pisania skryptów lub funkcji. Ze względu na złożony zapis nie można wprowadzać ich z wiersza poleceń MATLAB-a. Do tej grupy instrukcji należą:
instrukcje iteracyjne for i while:
-instrukcja „for”
ogólna postać instrukcji for przedstawia się następująco:
for zmienna - iterowana = macierz wartosci,
ciąg instrukcji
end
przykład:
for i=1:10,
A(i)=2*i;
end
-instrukcja „while”
instrukcja while odpowiada analogicznej instrukcji w języku C i jej ogólna postać jest następująca:
while wyrażenie-warunkowe,
ciąg-instrukcji,
end
przykład:
n=0;
while (n<5),
x=2+n;
n=n+1;
end
instrukcja warunkowa if:
instrukcja if ma podobną postać do instrukcji stosowanych w językach C i Pascal. Jej ogólna postać przedstawia się następująco:
if wyrażenie-warunkowe 1
ciąg instrukcji
elseif wyrażenie-warunkowe 2
ciąg instrukcji 2
. . .
else
ciąg instrukcji N
end
przykład:
if (n==100),
disp(`OK.')
else
disp(`BAD')
disp(`VERY BAD')
end
instrukcja break
instrukcja break powoduje przerwanie wykonywania pętli, przy czym opuszczany jest tylko jeden poziom zagłębienia pętli.
instrukcja return
instrukcja return powoduje bezwarunkowe opuszczenie danej funkcji lub skryptu i powrót do miejsca jej/jego wywołania.
Funkcje graficzne
Program MATLAB oferuje użytkownikowi całą gamę funkcji pozwalających szybko i przy małym nakładzie pracy przedstawić praktycznie dowolne dane matematyczne.
Głównymi grupami funkcji graficznych pozwalających wizualizować dane są funkcje przeznaczone do prezentacji danych w postaci wykresów dwu- i trójwymiarowych.
Podstawową funkcją służącą do rysowania wykresów dwuwymiarowych obrazujących przebieg funkcji jednej zmiennej jest funkcja plot.
Przykład zastosowania funkcji plot: (przykład należy przetestować)
x=-pi:0.1:pi; % wektor wartości zmiennej niezależnej
y=sin(x); % wartość funkcji
plot(x,y) % rysowanie wykresu
Jak wspomniano MATLAB posiada funkcje pozwalające kreślić wykresy trójwymiarowe. Jedną z takich funkcji jest funkcja waterfall.
Przykład użycia funkcji waterfall: (przykład należy przetestować)
[x,y]=meshgrid(-4:0.2:4,-4:0.2:4); %ustalenie punktów
z=sin(x).*cos(y); % obliczenie wartości funkcji
waterfall(x,y,z); %rysowanie wykresu
ZADANIE DO SAMODZIELNEGO WYKONANIA Wykorzystując wcześniej poznaną wiedzę dotyczącą instrukcji MATLAB-a oraz informacje zawarte w pomocy a dotyczące funkcji plot należy: stosując dwie funkcje trygonometryczne narysować okrąg(lub elipsę) lub dowolną figurę Lissaju. Sposób powstawania figur Lissajou omówi prowadzący. |
Skrypty
Skryptem w środowisku MATLAB nazywany jest plik tekstowy o dowolnej nazwie nadanej przez użytkownika, posiadający rozszerzenie *.m, w którym zapisane są sekwencje poleceń MATLAB-a. Skrypt może być utworzony w dowolnym edytorze tekstowym jak np. Notepad. Skrypt nie posiada mechanizmu hermetyzacji, tzn. dane utworzone w skrypcie zostaną dołączone do danych już istniejących w pamięci. Wywołanie skryptu odbywa się poprzez wpisanie jego nazwy w oknie poleceń MATLAB-a. Jeśli skrypt nie znajduje się w aktualnym katalogu, który „widzi” MATLAB , ważne jest aby podać ścieżkę dostępu do pliku skryptu.
Przykład skryptu (skrypt należy stworzyć i przetestować):
Skrypt oblicza w101 punktach wartość funkcji x=sin(2t)+sin(t) i kreśli jej wykres na przedziale <0,2π>
%% Przykładowy skrypt (%-oznacza komentarz)
t=[0:0.1:2*pi];
A=[1 1];
x=A*[sin(2*t); sin(t)];
plot(t, x)
%% Koniec przykładowego skryptu
Wykorzystując informacje przedstawione powyżej należy napisać skrypt, który po uruchomieniu utworzy macierz T, przedstawiająca tabliczkę mnożenia w postaci:
W skrypcie trzeba zastosować instrukcje sterujące.
|
Funkcje
MATLAB daje użytkownikom nie tylko możliwość wykorzystania funkcji napisanych przez innych (biblioteki i funkcje standardowe), ale pozwala także na samodzielne ich tworzenie.
Definicję funkcji umieszcza się w skrypcie o nazwie identycznej z nazwą definiowanej funkcji i rozszerzeniem *.m. Definiując funkcję o nazwie np. oblicz musimy utworzyć zbiór oblicz.m.
Definicja funkcji ma następującą postać ogólną:
function wartości-funkcji=nazwa-funkcji(parametr1, ..., parametrN)
komentarz-dokumentujący
ciąg-instrukcji
Parametry i wartości są opcjonalne. Komentarz umieszczony bezpośrednio pod nagłówkiem funkcji będzie wyświetlany jako pomoc uzyskiwana poleceniem:
help nazwa-funkcji
Przykładowy szkielet definicji funkcji:
function [x,y,z]=funkcja(a, b, c, d)
%% [x, y, z]=funkcja(a, b, c, d)
%% Szkielet definicji funkcji.
...
%% Koniec: funkcja.m
Zmienne utworzone podczas działania funkcji są usuwane z chwilą zakończenia wykonywania funkcji i nie są widoczne poza nią, podobnie zmienne utworzone poza funkcją nie są widoczne w jej wnętrzu.
Wywołanie funkcji następuje po wpisaniu w edytorze nazwy funkcji wraz z wartościami argumentów oddzielonymi przecinkami, i naciśnięciu <enter>.
Przykład funkcji:
function [tk]=kelwin(tc)
%% [c]=kelwin(f)
%% Funkcja zamienia stopnie Celsjusza na Kelwiny
tk=tc+273,15
%% Koniec: kelwin.m
Funkcje wywołuje się wpisując: kelwin(20).
Napisać funkcję obliczająca wartości funkcji w zadanym przedziale wartości <a, b>. Funkcja powinna kreślić wykres przebiegu wartości y.
|
Aby poznać więcej możliwości pakietu MATLAB można uruchomić demo wpisując w linii poleceń słowo demo, jak również celowe jest korzystanie z odpowiedniej literatury i helpa.
Literatura
[1] Zalewski A., Cegieła R.: Matlab-obliczenia numeryczne i ich zastosowania. Nakom, Poznań 1996.
[2] Mrozek B., Mrozek Z.: Matlab 5.x, Simulink 2.x - poradnik użytkownika. PLJ, Warszawa 1998.
Instrukcja do zajęć laboratoryjnych z przedmiotu Metody Numeryczne |
Laboratorium nr 1 Temat: Wprowadzenie do MATLAB-a |
5
8
Opracował: mgr inż. Marek Fidali
Znak zachęty