




























Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
Obszerne opracowanie z zakresu tematu
Typologia: Prace dyplomowe
1 / 36
Ta strona nie jest widoczna w podglądzie
Nie przegap ważnych części!
PODSTAWY PROGRAMOWANIA
W JĘZYKU MATLAB
Nazwy zmiennych i informacje o nich można uzyskać wywołując funkcje who i whos.
Przykład: Przedstaw liczbę 2,5 w różnej postaci używając funkcji format. » format short » 2. ans =
» format short e » 2. ans = 2.5000e+ » format long » 2. ans =
Przykład: » A=[2 2 2 1; 1 2 3 1]; lub: » A=[2 2 2 1 1 2 3 1] A = 2 2 2 1 1 2 3 1 Poszczególne elementy macierzy oddziela się spacjami, a wiersze średnikami lub umieszcza się je w oddzielnych liniach.
Przykład: Wygeneruj macierz dwuwierszową o wyrazach od 1 do 10 w pierwszym wierszu i o wyrazach od 2 do 20 (co 2) w wierszu drugim. » A=[1:10; 2:2:20] A = 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20
Przykład: Utwórz macierz D budując ją ze zdefiniowanych macierzy A , B i C. » 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] D = 1 4 1 3 1 2 0 1 4 1 1 2 2 0 1 2 4 7 1 0 UWAGA: Przy takim budowaniu macierzy należy pamiętać o zgodności wymiarów.
» A(2,3) - odwołanie do elementu w wierszu 2 i kolumnie 3; ans = 8 » A(3,2) - odwołanie do elementu w wierszu 3 i kolumnie 2 ans = 1
» max(A) ans = 1 9 8
» min(A) ans = 0 1 0
Przykład:
» mean(A) ans = 0.6667 4.0000 3.
Przykład: » A=[1 2 3 4 5 6; 0 9 8 7 6 5; 1 1 0 0 2 2] A = 1 2 3 4 5 6 0 9 8 7 6 5 1 1 0 0 2 2 » B=A(:,[1:3 5]) - utworzenie macierzy B poprzez pobranie z macierzy A B = kolumn: 1-3 oraz 5 1 2 3 5 0 9 8 6 1 1 0 2 » B=A([1 3],1:2:5) - utworzenie macierzy B z elementów macierzy A leżących B = na przecięciu wierszy 1 i 3 z kolumnami 1, 3 i 5 1 3 5 1 0 2
Przykład: » A=[1 2 3 4; 4 5 6 7] A = 1 2 3 4 4 5 6 7 » A(2,:)=[ ] - usuwa drugi wiersz z macierzy A A = 1 2 3 4 » A(:,1:2)=[ ] - usuwa dwie pierwsze kolumny z macierzy A A = 3 4
Przykład: Zdefiniuj dwie macierze A i B , a następnie oblicz ich sumę, różnicę oraz dodaj do elementów macierzy A liczbę 2.
Definicja macierzy: » A=[1 -1 2; -2 3 1] A = 1 -1 2 -2 3 1 » B=[1 1 1; 0 -2 2]
ans = 2 2 0 4 2 2
Przykład: Zdefiniuj macierz A , a następnie wyznacz macierz odwrotną do niej i dokonaj transpozycji.
» A=[1 2 3; 0 9 8; 3 4 7] A = 1 2 3 0 9 8 3 4 7 »inv(A) - zwraca macierz odwrotną do A ans = -15.5000 1.0000 5. -12.0000 1.0000 4. 13.5000 -1.0000 -4. » A’ - transponuje macierz A ans = 1 0 3 2 9 4 3 8 7
» A=[1 2 3]’ A = 1 2 3 » A’*A ans = 14
Przykład: Zdefiniuj dwie macierze A i B , a następnie wykonaj działania mnożenia, dzielenia i potęgowania tablicowego.
Definicja macierzy: » A=[5 -6 2; -2 4 1] A = 5 -6 2 -2 4 1 » B=[5 2 2; -1 -2 1] B = 5 2 2 -1 -2 1
Mnożenie tablicowe: » A.*B ans = 25 -12 4 2 -8 1
Dzielenie tablicowe: » A./B ans = 1 -3 1 2 -2 1
Potęgowanie tablicowe (podniesienie elementów macierzy A do drugiej potęgi): » A.^ ans = 25 36 4 4 16 1
» A=[1 3 0 –2; 2 0 3 –1; 0 5 0 0; 1 0 2 0]; » det(A) ans = 0
Przykład: » t=[0:0.2:1]; » s=‘sin(t)’; » eval(s) ans = 0 0.1987 0.3894 0.5646 0.7174 0.
» a=input(‘Podaj wartość a: ’) Podaj wartość a:
lub:
» wzor=input(‘Podaj wzór funkcji f(x): ‘,’s’) Podaj wzór funkcji f(x):
UWAGA: Użycie parametru ‘s’ w funkcji input powoduje, iż wprowadzona dana jest traktowana jako łańcuch znaków.
% skrypt rysuje wykres wybranej funkcji
x=[0:0.1:4*pi]; wzor=input(‘Podaj wzór funkcji jednej zmiennej f(x): ‘,’s’) y=eval(wzor); plot(x,y); % kreślenie wykresu funkcji y=f(x)
Zapisz go pod nazwą wykres.m , a następnie uruchom wpisując w oknie komend jego nazwę: » wykres
WSKAZÓWKA: Podaj na przykład funkcję: sin(x)+2cos(2x)
= = równe ~ = różne < mniejsze
większe < = mniejsze równe = większe równe & i | lub
Działanie pętli polega na wykonaniu ciągu_instrukcji dla kolejnych wartości zmiennej_iterowanej. Wartościami tymi są kolejne wektory kolumnowe pobrane z macierzy_wartości (jeżeli jest to wektor, to kolejno zostaną wykonane instrukcje dla danych elementów tego wektora).
Przykład: Napisz skrypt, który generuje wektor A o wymiarze 1x5, którego elementy spełniają zależność: Ai = 1 + i
% Próba realizacji pętli FOR for i=1: A(i)=sqrt(1+i); % pierwiastek kwadratowy
przeciwnym razie sprawdzane jest wyrażenie_warunkowe2, jeżeli jest ono spełnione wykonywany jest ciąg_instrukcji2, jeżeli nie, wykonywany jest ciąg_instrukcji3. Instrukcję warunkową IF można rozbudować dla większej liczby _wyrażeńwarunkowych i odpowiadających im ciągów_instrukcji.
Przykład: Napisz skrypt używając instrukcji warunkowej IF do zrealizowania wyboru jednej z dostępnych opcji (polecenie menu):
% Próba realizacji instrukcji IF o=menu(‘Przykładowe menu’, ‘Opcja 1’, ‘Opcja 2’, ‘Opcja 3’); if (o==1) disp(‘Opcja 1’) elseif (o==2) disp(‘Opcja 2’) elseif (o==3) disp(‘Opcja 3’) end
Zapisz skrypt w pliku instrukcjaif.m i uruchom go.
function [wartość_funkcji]=nazwa_funkcji(argument1,..,argumentN) ciąg instrukcji
Przykład: Napisz funkcję (otwierając z menu File z opcji New plik M-file ) wyznaczającą wartość silni n! , gdzie n jest liczbą naturalną.
% Funkcja wyznacza watość n! function[wynik]=silnia(n) wynik=1; for i=1:n wynik=wynik*i; end
Zapisz ją pod nazwą silnia.m , a następnie uruchom wpisując w linii komend jej nazwę wraz z wartością argumentu n umieszczoną w nawiasie, np.: » silnia(5) ans = 120
Przykład: Napisz program, który wypisuje na ekranie informację o jego działaniu oraz imię i nazwisko autora, a następnie wyznacza wartość n! dla podanej przez użytkownika wartości n. (Uwaga: użyta w poniższym przykładzie funkcja round(n) zaokrągla liczbę rzeczywistą n do liczby całkowitej)
% Program oblicza wartość silni n! dla wprowadzonej przez % użytkownika wartości n
disp(‘Program oblicza wartość silni n! dla wprowadzonej przez’) disp(‘użytkownika wartości n’) disp(‘ ‘) disp(‘Autor:’) disp(‘Imię i Nazwisko’) disp(‘ ‘) n=input(‘Podaj wartość n: ‘);
%sprawdzenie czy n jest liczbą naturalną while n<0 | n~=round(n) disp(‘Proszę podać liczbę naturalną’) n=input(‘Podaj wartość n: ‘); end
disp(‘Wartość n! wynosi:’) silnia(n)
Zapisz go pod nazwą program.m i uruchom.
k - czarny
Przykład : Narysuj trójkąt o wierzchołkach w punktach (0,1), (3,4), (4,2) używając funkcji line oraz fill z wypełnieniem w kolorze niebieskim.
» line([0 3 4 0],[1 4 2 1]) » fill([0 3 4],[1 4 2],’b’)
[x,y]=meshgrid(X,Y) - tworzy macierze x i y opisujące położenie węzłów prostokątnej siatki pobierając wartości z wektorów X i Y. mesh(x,y,z) - rysuje siatkę powierzchni opisanej przez macierze x , y i z. surf(x,y,z) - rysuje kolorową powierzchnię opisaną przez macierze x , y i z. surfl(x,y,z) - rysuje kolorową powierzchnię opisaną przez macierze x , y i z uwzględniając na niej odbicie światła. plot3(x,y,z) - rysuje krzywą w przestrzeni opisaną przez wektory x , y i z.
Przykład:
% Skrypt rysuje siatkę wartości funkcji clf [x,y]=meshgrid(-pi:0.2:pi,-pi:0.2:pi) z=sin(x).sin(y).exp(-x.^2-y.^2) mesh(x,y,z)
Zapisz go pod nazwą wykres3d.m i uruchom.
Rozbuduj powyższy skrypt o rysowanie kolorowej powierzchni poprzez dodanie na końcu polecenia: surf(x,y,z) lub: surfl(x,y,z)
Przykład: Napisz skrypt kreślący krzywą w przestrzeni trójwymiarowej:
% Skrypt kreśli krzywą w przestrzeni trójwymiarowej x=[0:0.1:10]; y=2cos(x); z=sin(2y); plot3(x,y,z) grid title('Wykres krzywej w przestrzeni trójwymiarowej') xlabel('x') ylabel('y') zlabel('z')
Zapisz go pod nazwą krzywa3d.m i uruchom.
Przykład: Napisz skrypt:
% Skrypt rysuje powierzchnie poddane cieniowaniu clf [x,y]=meshgrid(-3.5:0.7:3.5); z=sin(x).sin(y)+4exp(-(x-0.5).^2-(y-0.5).^2);
%Wykres w trybie flat subplot(1,3,1) surf(x,y,z) shading flat title(‘flat’)
%Wykres w trybie interp subplot(1,3,2) surf(x,y,z) shading interp title(‘interp’)
%Wykres w trybie faceted subplot(1,3,3) surf(x,y,z) shading faceted title(‘faceted’)
Zapisz go pod nazwą powierzchnie.m i uruchom.