Programy dla MATLABa najlepiej pisać w jego EDYTORZE. Programy muszą być przechowywane w plikach z rozszerzeniem nazwy: ".m" dlatego mówi się o nich: "m-pliki".
Istnieją dwa rodzaje m-plików:
TABELA 2.1.
Objaśnienie instrukcji i funkcji używanych w najprostszych programach:
Składnia instrukcji lub funkcji
oraz objaśnienie |
Przykład |
Wprowadzanie danych liczbowych z klawiatury: zmienna = input('żądanie danych') Wyświetla tekst żądania danych a następnie wpisana z klawiatury liczba zostaje podstawiona do zmiennej. Zamiast liczby można wpisać wyrażenie Matlaba |
Przykł.1: F=input('Siła nacisku='); L=input('Długość dźwigni='); Moment_sily=F*L |
Wprowadzanie danych tekstowych z klawiatury: zmienna = input('żądanie danych','s') Wyświetla żądanie danych, oczekuje na wpisanie przez użytkownika |
Przykł.2: znak=input('Tak/Nie - naciśnij T lub N','s') |
Wyświetlanie wyników: disp(wyrażenie) Wyświetla wartość wyrażenia w sposób podobny jak umieszczenie samego wyrażenia. |
Przykł.3: disp(['Liczba=',num2str(x),' Kwadrat liczby=',num2str(x^2)]); - w tym przypadku posklejano wyrażenia typu tekstowego (string) |
Sformatowane wyprowadzanie wyników (jak w języku C): fprintf('opis_formatu', lista_wyrażeń) Wyprowadza na ekran lub do pliku napisy oraz wartości wyrażeń zgodnie z podanymi formatami. Opis_formatu może zawierać:
Opisy pól są uwzględniane po kolei (od lewej do prawej) dla kolejnych wyrażeń z listy. Ta sama funkcja może wyniki wyprowadzać do pliku - jeśli ma trzy parametry zamiast dwu. Pierwszy parametr jest wtedy identyfikatorem pliku. Ale o tym będzie w innym miejscu |
Przykł.4: x=123.76; fprintf('Liczba=%8.2f \nKwadrat liczby=%14.4f', x, x^2) Lista wyrażeń zawiera tu dwa elementy: x, x^2 Dla pierwszego czyli x jest pierwszy opis pola czyli: %8.2f, Wynik działania tej funkcji fprintf:
Liczba= 123.76 |
Pętla typu WHILE: while wyrażenie . . . . . instrukcje end Powtarza wykonywanie instrukcji tak długo jak wyrażenie ma wartość logiczną true (czyli prawda) lub jest różne od zera |
Przykł.5: clear; clc fprintf('\nProgram oblicza pierwiastki z dodatnich liczb'); fprintf('\nZero kończy obliczenia'); x=1 while x > 0 x=input('Podaj liczbę:'); fprintf('Pierwiastek=%9.2f\n',sqrt(x)) end |
Pętla typu FOR: powtarzane w pętli instrukcje umieszczone między for i end będą wykonane dla każdej wartości zmiennej zm. Zmienna ta przyjmuje najpierw wartość pocz a przy każdym następnym obiegu pętli jest zwiększana o przyrost, ale nie może przekroczyć wartości konc. |
Przykł.6: % tabela i wykres funkcji cosinus kwadrat % dla kąta od zera do 180 stopni clear; clc; i=0; fprintf('\nFunkcja cosinus kwadrat\n'); fprintf('alfa F(alfa)'); for alfa=0:5:180 i=i+1; X(i)=alfa*pi/180; Y(i)=cos(X(i))^2; fprintf('\nalfa=%5.1f Y=%7.4f',alfa,Y(i)); end plot(X,Y); grid on; |
Rozgałęzienie warunkowe: if warunek instrukcje wykonywane gdy warunek spełniony ... else instrukcje wykonywane gdy warunek NIE spełniony ... end Pozwala wykonać jeden z dwu możliwych bloków instrukcji zależnie od spełnienia lub nie spełnienia określonego warunku, w postaci relacji (np.: 2*x>sin(y)) lub złożonego wyrażenia logicznego. Rolę warunku może pełnić wyrażenie arytmetyczne wtedy, jego wartość niezerowa jest traktowana jako "prawda" natomiast wartość zerowa jako "fałsz". Wyrażenia logiczne są tutaj |
Przykł.7: % Wykorzystano 3 zagnieżdżone instrukcje IF % do wybrania jednej z czterech możliwości: clear; clc; fprintf('Słowna ocena temperatury:') t=input('Ile stopni jest na termometrze za oknem:'); if t<0 disp('Mróz!'); else if t<12 disp('Chłodno!'); else if t>25 disp('Gorąco!'); else disp('Ciepło'); end end end |
Więcej informacji uzyskasz z podręcznika lub wpisując w oknie komend help nazwa_polecenia
Zaczniemy od pisania programów skryptowych. Przed pisaniem trzeba:
1) otworzyć EDYTOR Matlaba z Menu File-New lub ikonką "pusta kartka"
2) utworzyć lub wybrać folder, w którym będziemy przechowywać programy i ustawić go jako jako bieżący - Current Directory (u góry okna Matlab'a).
a = input('Długość boku L=') V=a^3 a, V |
Uruchom ten program w Matlabie. Instrukcje trzeba kończyć średnikiem [;] - aby pozbyć się niepotrzebnego wyswietlania "echa" działania każdej instrukcji. Popraw to i sprawdź efekt. Drugą wadą jest bardzo nieeleganckie i mylące wyświetlanie wyników (a czy L?)
Postaramy się więc program ulepszyć.
% Program PR1.M oblicza objętość sześcianu disp('Obliczanie objętości sześcianu'); clear; clc a = input('Długość boku L='); V=a^3; fprintf('Sześcian o boku L=%7.3f ma objętość V=%12.4f ',a,V); |
Uzupełnij program pętlą WHILE ... END tak aby działał wielokrotnie a zatrzymał się po wprowadzeniu zera jako danej - podobnie jak w podanym wcześniej przykładzie, w tabeli 2.1. Zapisz z nową nazwą i uruchom.
Przekopiuj z tabeli 2.1. do nowego okienka w edytorze program z instrukcjami IF ...ELSE ... END. Przeanalizuj i uruchom ten program
Przekopiuj z tabeli 2.1. do nowego okienka w edytorze program z pętlą FOR ... END. Przeanalizuj i uruchom ten program