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