Programowanie Środ Matlab

Z Skrypty dla studentów Ekonofizyki UPGOW

(Różnice między wersjami)
Linia 20: Linia 20:
ans  =  10
ans  =  10
 +
 +
Zakończenie instrukcji średnikiem powoduje, iż rezultat jej działania nie pojawi się na ekranie, jest to wygodne, gdy np. nie interesują nas pośrednie wyniki sekwencji obliczeń.
 +
 +
Instrukcję składającą sie z bardzo dużej liczby wyrażeń, znaków, itp - przez to niewygodną do manipulowania, nieczytelną -  możemy dowolnie, według naszego uznania, podzielić na większa liczbę linii. Po napisaniu trzech kropek ... w dogodnym dla nas miejscu, przechodzimy do nowej linii i piszemy dalej. Interpreter potraktuje wyrażenie zapisane w dwóch lub więcej liniach, jako jedną całość. Z drugiej strony, w jednej linii możemy napisać kilka instrukcji, wystarczy je oddzielać przecinkami np.
 +
 +
>> 2 + 4 + 10, 100 – 30,  1000 – 1,  4 + 4 – 8
 +
 +
Na ekranie pojawi się sekwencja wyników,
 +
 +
ans = 16
 +
 +
ans  = 70
 +
 +
ans  = 999
 +
 +
ans  = 0
 +
 +
Do nawigacji pomiędzy poprzednimi i następnymi instrukcjami służą klawisze oznaczone strzałkami (góra, dół). Zadania wykonywane przez MATLAB można w każdej chwili zatrzymać wywołując wbudowaną funkcję '''pause''' - do momentu naciśnięcia klawisza dowolnego znaku - ,'''pause'''(''n'') zatrzymać na n sekund, definitywnie przerwać naciskając kombinację klawiszy '''ctrl c'''. Instrukcja '''cls''' czyści okno, '''quit''' lub '''exit''' powoduje wyjście z  MATLAB.
 +
 +
Znak '''%''' (procent) rozpoczyna krótki komentarz, czyli wszystkie znaki napisane po nim, aż do końca linii, są pomijane przez interpreter, służą tylko programiście do opisu. 
 +
 +
Zmienne w MATLAB nie wymagają wcześniejszego deklarowania, tworzone są „w locie”, w momencie ich pierwszego użycia (inicjalizacji, nadania wartości), np. instrukcja
 +
 +
>>  x = 1.4
 +
 +
powoduje utworzenie zmiennej o nazwie x, jej wartość wynosi 1.4. Dokładniej mówiąc, interpreter rezerwuje odpowiednią ilość komórek pamięci (bajtów) dla zmiennej o nazwie x,  do tych komórek pamięci wprowadza wartość, którą w systemie dziesiętnym przedstawiamy jako 1.4. Nazwa zmiennej może zawierać tylko litery alfabetu łacińskiego (duże lub małe), cyfry od 0 do 9, znak podkreślenia, musi przy tym zaczynać się od litery. Naturalnie, nazwa zmiennej nie może się pokrywać ze słowami kluczowymi MATLAB. Wartość danej zmiennej można zobaczyć podając jej nazwę i naciskając Enter, lub korzystając z funkcji '''disp'''( ), np.  W MATLAB wszystkie zmienne są traktowane jako tablice, zmienna skalarna traktowana jest jako tablica jednoelementowa.
 +
 +
MATLAB operuje na liczbach zmiennoprzecinkowych podwójnej precyzji. Domyślnie wyświetla jednak tylko 4 cyfry po kropce, aby zapewnić czytelność - taki format nazywany jest w MATLAB format '''short'''. Użytkownik może ustalić inny format wyświetlania liczb, pokażę to na przykładzie predefiniowanej w MATLAB zmiennej o nazwie pi:
 +
 +
>>  format long            % pokazywać liczby z precyzją 14 miejsc po kropce dziesiętnej
 +
 +
>>  pi
 +
 +
>>  3.14159265358979
 +
 +
 +
>> format longE          %  precyzja 14 miejsc po kropce, reprezentacja potęgowa
 +
 +
>>  pi
 +
 +
>>  3.141592653589793e+000
 +
.
 +
Przy definiowaniu zmiennej łańcuchowej (tekstowej) korzysta się z pojedynczych apostrofów, np.
 +
 +
>> napis  = ‘Hej !! ‘
 +
 +
>>  napis
 +
 +
>> Hej !!
 +
 +
Zmienna typu łańcuchowego może zawierać nazwę instrukcji, taką instrukcję uruchamia funkcja '''eval'''( ), np.
 +
 +
>>  napis = ‘cos(sin(0)) ‘
 +
 +
>>  eval(napis)
 +
 +
>> ans = 1
 +
 +
Funkcja '''input'''( ) służy do komunikacji z użytkownikiem programu, wypisuje ona na ekran treść swojego argumentu (łańcuch znaków) i MATLAB oczekuje na reakcję użytkownika. Oto jej typowe zastosowanie
 +
 +
>>  n = input( ‘Wpisz n:        ‘ )
 +
 +
>>  Wpisz n:                                                  %  system czeka na wpisanie wartości n
 +
 +
Po wpisaniu za dwukropkiem np. liczby 10 i jak zwykle naciśnięciu Enter, zobaczymy na ekranie wynik podstawienia
 +
 +
>>  n  =  10
 +
 +
Drugi przykład,
 +
 +
>>  pierwszy_atom  =  input (‘ Nazwa atomu numer jeden:  ‘ , ‘s’ )
 +
 +
>>  Nazwa atomu numer jeden:                    %  system czeka na wpisanie nazwy
 +
 +
Wpisanie drugiego parametru funkcji '''input'''( ) w postaci ‘s’ oznacza, że interpreter ma potraktować wprowadzoną daną jako ciąg znaków. Pisząc za dwukropkiem np. tlen
 +
dostajemy
 +
 +
>>  pierwszy_atom  =  tlen
 +
 +
Funkcja '''num2str'''( ) zamienia liczbę na ciąg znaków, '''str2num'''( ) zamienia ciąg znaków na liczbę.
 +
 +
Komenda ''who'' powoduje wyświetlenie nazw wszystkich zmiennych zdefiniowanych w bieżącym programie (przestrzeni roboczej), ''whos'' podaje listę zmiennych wraz z dodatkowymi szczegółami (precyzja, rozmiar macierzy). Usunięcie wszystkich zmiennych powoduje komenda '''clear''', wybraną zmienną, np o nazwie a, usuwamy instrukcją '''clear''' a.
 +
 +
Użycie komendy '''diary''' podczas sesji MATLAB powoduje, iż od tego momentu cały przebieg aktualnej sesji MATLAB jest zapisywany w pliku o nazwie diary. Komenda,
 +
 +
>>  diary moja_sesja
 +
 +
zapisuje przebieg sesji w pliku, który nazwałem moja_sesja. Rejestrację sesji zawiesza komenda '''diary off''', '''diary on''' nakazuje wznowienie rejestracji sesji.
 +
 +
MATLAB posiada liczny arsenał funkcji standardowych, np. polecenie
 +
 +
>>  exp(1)
 +
 +
kreuje odpowiedź
 +
 +
ans  =  2.7183
 +
 +
Kolejny przykład,
 +
 +
>>  exp(sin(0)) + cos(0)
 +
 +
ans  =  2
 +
 +
Dotychczasowe przykłady były wypisywane bezpośrednio, w wierszu poleceń po znaku zachęty. Takie postępowanie jest czytelne, niezbyt uciążliwe i efektywne tylko przy niewielkiej sekwencji instrukcji, zajmujących kilka linii. W praktyce kod programu wygodniej przygotowywać, modyfikować bądź poprawiać w oddzielnym pliku. Jeżeli zapiszemy ten plik z rozszerzeniem  *.m, na przykład moj_kod.m, to MATLAB potraktuje go jako skrypt, tzw. m – plik. Wpisanie w linii komend nazwy m-pliku (bez rozszerzenia)

Wersja z 16:18, 24 mar 2010

Środowisko Matlab

MATLAB jest obecnie bardzo rozbudowanym narzędziem obliczeniowo-programistycznym, w tym rozdziale przedstawię tylko wybrane, podstawowe elementy środowiska MATLAB.

Spis treści


Informacje podstawowe

MATLAB jest obecnie bardzo rozbudowanym narzędziem obliczeniowo-programistycznym, w tym podrozdziale przedstawię tylko wybrane, podstawowe elementy środowiska MATLAB.

Po uruchomieniu MATLAB w oknie pojawia się znak

>>

(ang. prompt) zachęcający do pisania instrukcji. Napiszmy

>> 3 + 4 + 3

Po wpisaniu instrukcji należy nacisnąć klawisz Enter/Return, co oznacza polecenie jej wykonania przez interpreter MATLAB. Wówczas na ekranie pojawi się wynik działania, przypisany do standardowej nazwy ans (ang. answer czyli odpowiedź)

ans = 10

Zakończenie instrukcji średnikiem powoduje, iż rezultat jej działania nie pojawi się na ekranie, jest to wygodne, gdy np. nie interesują nas pośrednie wyniki sekwencji obliczeń.

Instrukcję składającą sie z bardzo dużej liczby wyrażeń, znaków, itp - przez to niewygodną do manipulowania, nieczytelną - możemy dowolnie, według naszego uznania, podzielić na większa liczbę linii. Po napisaniu trzech kropek ... w dogodnym dla nas miejscu, przechodzimy do nowej linii i piszemy dalej. Interpreter potraktuje wyrażenie zapisane w dwóch lub więcej liniach, jako jedną całość. Z drugiej strony, w jednej linii możemy napisać kilka instrukcji, wystarczy je oddzielać przecinkami np.

>> 2 + 4 + 10, 100 – 30, 1000 – 1, 4 + 4 – 8

Na ekranie pojawi się sekwencja wyników,

ans = 16

ans = 70

ans = 999

ans = 0

Do nawigacji pomiędzy poprzednimi i następnymi instrukcjami służą klawisze oznaczone strzałkami (góra, dół). Zadania wykonywane przez MATLAB można w każdej chwili zatrzymać wywołując wbudowaną funkcję pause - do momentu naciśnięcia klawisza dowolnego znaku - ,pause(n) zatrzymać na n sekund, definitywnie przerwać naciskając kombinację klawiszy ctrl c. Instrukcja cls czyści okno, quit lub exit powoduje wyjście z MATLAB.

Znak % (procent) rozpoczyna krótki komentarz, czyli wszystkie znaki napisane po nim, aż do końca linii, są pomijane przez interpreter, służą tylko programiście do opisu.

Zmienne w MATLAB nie wymagają wcześniejszego deklarowania, tworzone są „w locie”, w momencie ich pierwszego użycia (inicjalizacji, nadania wartości), np. instrukcja

>> x = 1.4

powoduje utworzenie zmiennej o nazwie x, jej wartość wynosi 1.4. Dokładniej mówiąc, interpreter rezerwuje odpowiednią ilość komórek pamięci (bajtów) dla zmiennej o nazwie x, do tych komórek pamięci wprowadza wartość, którą w systemie dziesiętnym przedstawiamy jako 1.4. Nazwa zmiennej może zawierać tylko litery alfabetu łacińskiego (duże lub małe), cyfry od 0 do 9, znak podkreślenia, musi przy tym zaczynać się od litery. Naturalnie, nazwa zmiennej nie może się pokrywać ze słowami kluczowymi MATLAB. Wartość danej zmiennej można zobaczyć podając jej nazwę i naciskając Enter, lub korzystając z funkcji disp( ), np. W MATLAB wszystkie zmienne są traktowane jako tablice, zmienna skalarna traktowana jest jako tablica jednoelementowa.

MATLAB operuje na liczbach zmiennoprzecinkowych podwójnej precyzji. Domyślnie wyświetla jednak tylko 4 cyfry po kropce, aby zapewnić czytelność - taki format nazywany jest w MATLAB format short. Użytkownik może ustalić inny format wyświetlania liczb, pokażę to na przykładzie predefiniowanej w MATLAB zmiennej o nazwie pi:

>> format long  % pokazywać liczby z precyzją 14 miejsc po kropce dziesiętnej

>> pi

>> 3.14159265358979


>> format longE  % precyzja 14 miejsc po kropce, reprezentacja potęgowa

>> pi

>> 3.141592653589793e+000 . Przy definiowaniu zmiennej łańcuchowej (tekstowej) korzysta się z pojedynczych apostrofów, np.

>> napis = ‘Hej !! ‘

>> napis

>> Hej !!

Zmienna typu łańcuchowego może zawierać nazwę instrukcji, taką instrukcję uruchamia funkcja eval( ), np.

>> napis = ‘cos(sin(0)) ‘

>> eval(napis)

>> ans = 1

Funkcja input( ) służy do komunikacji z użytkownikiem programu, wypisuje ona na ekran treść swojego argumentu (łańcuch znaków) i MATLAB oczekuje na reakcję użytkownika. Oto jej typowe zastosowanie

>> n = input( ‘Wpisz n: ‘ )

>> Wpisz n:  % system czeka na wpisanie wartości n

Po wpisaniu za dwukropkiem np. liczby 10 i jak zwykle naciśnięciu Enter, zobaczymy na ekranie wynik podstawienia

>> n = 10

Drugi przykład,

>> pierwszy_atom = input (‘ Nazwa atomu numer jeden: ‘ , ‘s’ )

>> Nazwa atomu numer jeden:  % system czeka na wpisanie nazwy

Wpisanie drugiego parametru funkcji input( ) w postaci ‘s’ oznacza, że interpreter ma potraktować wprowadzoną daną jako ciąg znaków. Pisząc za dwukropkiem np. tlen dostajemy

>> pierwszy_atom = tlen

Funkcja num2str( ) zamienia liczbę na ciąg znaków, str2num( ) zamienia ciąg znaków na liczbę.

Komenda who powoduje wyświetlenie nazw wszystkich zmiennych zdefiniowanych w bieżącym programie (przestrzeni roboczej), whos podaje listę zmiennych wraz z dodatkowymi szczegółami (precyzja, rozmiar macierzy). Usunięcie wszystkich zmiennych powoduje komenda clear, wybraną zmienną, np o nazwie a, usuwamy instrukcją clear a.

Użycie komendy diary podczas sesji MATLAB powoduje, iż od tego momentu cały przebieg aktualnej sesji MATLAB jest zapisywany w pliku o nazwie diary. Komenda,

>> diary moja_sesja

zapisuje przebieg sesji w pliku, który nazwałem moja_sesja. Rejestrację sesji zawiesza komenda diary off, diary on nakazuje wznowienie rejestracji sesji.

MATLAB posiada liczny arsenał funkcji standardowych, np. polecenie

>> exp(1)

kreuje odpowiedź

ans = 2.7183

Kolejny przykład,

>> exp(sin(0)) + cos(0)

ans = 2

Dotychczasowe przykłady były wypisywane bezpośrednio, w wierszu poleceń po znaku zachęty. Takie postępowanie jest czytelne, niezbyt uciążliwe i efektywne tylko przy niewielkiej sekwencji instrukcji, zajmujących kilka linii. W praktyce kod programu wygodniej przygotowywać, modyfikować bądź poprawiać w oddzielnym pliku. Jeżeli zapiszemy ten plik z rozszerzeniem *.m, na przykład moj_kod.m, to MATLAB potraktuje go jako skrypt, tzw. m – plik. Wpisanie w linii komend nazwy m-pliku (bez rozszerzenia)