34
PWSW Mechatronika 1 Wykład 7 Matlab cd

PWSW Mechatronika

  • Upload
    dalit

  • View
    89

  • Download
    0

Embed Size (px)

DESCRIPTION

PWSW Mechatronika. Wykład 7. Matlab cd. Przydatne polecenia. help - pomoc globalna help elfun - pomoc – spis funkcji elementarnych help rem - pomoc na temat wybranej funkcji (tu: rem ) format long - wyświetlanie liczb z 15-ma miejscami dziesiętnymi - PowerPoint PPT Presentation

Citation preview

Page 1: PWSW Mechatronika

1

PWSW Mechatronika

Wykład 7

Matlab cd

Page 2: PWSW Mechatronika

Przydatne polecenia

help - pomoc globalnahelp elfun - pomoc – spis funkcji elementarnychhelp rem - pomoc na temat wybranej funkcji (tu: rem)format long - wyświetlanie liczb z 15-ma miejscami dziesiętnymiformat short - liczby wyświetlane z 4-ma miejscami dziesiętnymiclc - czyszczenie ekranuclear zmienna - usunięcie zmiennej z obszaru roboczego (Workspace)clear - usunięcie wszystkich zmiennych z obszaru roboczego

Page 3: PWSW Mechatronika

Algorytm zaokrąglania z dokładnością do N miejsc dziesiętnych

clcformat longx=piN=5y= round(x*10^N)/10^Nformat short

Page 4: PWSW Mechatronika

Generator losowy rand Bezargumentowa funkcja!Losuje liczbę rzeczywistą z przedziału (0, 1)

x=rand

x=round(100*rand-50)

Zmiana przedziału losowania:

Losowanie liczby całkowitej z przedziału (-50, 50)

Page 5: PWSW Mechatronika

zmienna = input('tekst zachęty');

Interakcja z użytkownikiem (instrukcja wejścia)

a = input('Podaj a:');b = input('Podaj b:');c = input('Podaj c:');

Działanie: skrypt się zatrzymuje i czeka na podanie wartości dla zmiennej

Page 6: PWSW Mechatronika

zmienna - proste wypisanie wartościdisp( zmienna) - funkcja wypisania wartościdisp ('jakiś tekst') - wypisanie tekstu na ekranie

Prezentacja wyników w Matlabie

Page 7: PWSW Mechatronika

fprintf('Wartość zmiennej a wynosi %znak \n', a);

Prezentacja wyników - tekst i dane

%d liczba całkowita

%e liczba w zapisie wykładniczym, np. 3.1415e+00

%f zapis stałoprzecinkowy

Uwaga: \n przejście do nowego wiersza

gdzie %znak to sposób wyświetlania:

Page 8: PWSW Mechatronika

WYKRESY 2-wymiarowe

x=0:10 %generowanie wektora co 1

% wart_pocz:wart_koncowa

y=[5.1 1.1 -2 -3 4.2 5.5 4.3 3.1 4.5 5.9 4.9]

z=[0 2 3 3 5 4 3 4 5 4 9] %trzeci wektor

title('wykres') %dodanie tytułu

plot(x,y) %rysowanie wykresu

plot(x,y,'r',x , z,'w') %dwie krzywe y(x) i z(x)

1 sposób: Funkcja plotWymaga utworzenia dwóch wektorów o tej samej liczbie elementów

Page 9: PWSW Mechatronika

x=0:90 %generowanie wektora co 1y=sin(pi*x/180) %wektor yplot(x,y) %rysowanie

Przykłady wykresów funkcji

x=0:pi/50:6*piy=cos(2*x)./sqrt(x+1)plot(x,y)

x = - 9:1:9z = x.^2plot(x, z)

Uwaga: zapis kropkowyelementowe dzielenie(mnożenie) wektorów

Page 10: PWSW Mechatronika

Wykres funkcji podanej jako parametr tekstowy

jedna krzywa:fplot('sin(x*x)/x',[0 4*pi])

punkt dzielenia przez 0 nie jest rysowany - ostrzeżenie

dwie krzywe:

fplot('[sin(x*x)/x cos(x)]',[0.01 4*pi])

Uwaga: zamiast x może być inna litera jako argument funkcji w jej opisie

2 sposób: Funkcja fplot

Page 11: PWSW Mechatronika

Przykładowe wykresy powierzchniowe 3D

peakscylider (srednica)sphere (precyzja)

Page 12: PWSW Mechatronika

Korzystamy z funkcji mesh(x,y,z)

Dla powierzchni podanej równaniem:

z=cos3x siny

12

Wykresy powierzchniowe (3D)

Page 13: PWSW Mechatronika

cleary = 0:0.01:pi %wektor wierszowyx = y' %wektor kolumnowy!z=cos(3*x) * sin(y) % tablica z jest kwadratowamesh(x, y, z)

Piszemy m-plik:

rezultat mnożenia dwóch wektorów:

*

sin y

cos3x

Page 14: PWSW Mechatronika

• W Matlab-ie można jako polecenie wpisać w linii poleceń nazwę pliku z ciągiem instrukcji - instrukcje pobierane kolejno i wykonywane od pierwszej do ostatniej

• Konieczne jest ustawienie "ścieżki" do naszego foldera w menu Current directory

2. Metoda wsadowa wykonywania operacji

W Matlab-ie można zapisać tekst ciągu instrukcji w pliku tekstowym ASCII o rozszerzeniu m. (tzw. m-pliki lub mex-pliki)

Page 15: PWSW Mechatronika

>>plik

>>test1

Można wykonać m-plik w Matlabie wpisując w linii poleceń jego nazwę (bez rozszerzenia)

W m-pliku wpisujemy kolejne instrukcje (bez znaków >>)

lub z okna edytora- Run

Page 16: PWSW Mechatronika

Uwaga: Instrukcje oddzielamy przecinkami lub piszemy w osobnych wierszachŚredniki na końcu instrukcji powodują brak wyświetlenia echa instrukcji na ekranie.

Page 17: PWSW Mechatronika

Instrukcje sterujące w MATLABIE

Page 18: PWSW Mechatronika

if warunek1instrukcje (gdy spełniony warunek1) elseif warunek2instrukcje (gdy spełniony warunek2) else instrukcje (gdy niespełnione warunki)end

Instrukcja warunkowa

Page 19: PWSW Mechatronika

x ~= 5 (różne od.. ~ to operator negacji

Przykłady warunków – użycie operatorów porównania:

a == 0 (czy równe? – wartość prawda lub fałsz)

b<c

2*a >= 5

Page 20: PWSW Mechatronika

%… poprzednie instrukcje ustalające wartość zmiennej iif i>0 disp(i);end;

Przykład 1:

jeżeli i jest większe od 0 to wyświetl wartość i, jeśli nie to "nic nie rób"

Page 21: PWSW Mechatronika

Przykład 2:

a = 1b = 6c = 3delta = b^2 - 4 * a *c;if delta<0

disp ('delta jest ujemne')else

disp(delta)end;

end kończy instrukcję

Page 22: PWSW Mechatronika

Przykład 3:

if x>0 && x<10disp ('w przedziale 0 10')

else disp('poza przedziałem')

end;

&& operator koniunkcji|| operator alternatywy

jak w JavaScript

…obliczamy jakieś x

można teżand(x>0, x<10)

Page 23: PWSW Mechatronika

Instrukcja iteracyjna („pętla liczona”)

for zmienna = wartość_pocz:krok: wartość_końcowa,

instrukcja,

instrukcja,

….

end

Page 24: PWSW Mechatronika

%generujemy tablicęfor i= 1:1:10,

a(i) = i^2;end;disp(a)suma=0;for i= 1:1:10,

suma=suma+a(i);end;disp('suma=')disp(suma)

Przykład prostych pętli:

1 4 9 16 25 36 49 64 81 100

Page 25: PWSW Mechatronika

for i= 1:1:5,for j = 1:1:5,

a(i , j) = i*j %jakieś wyrażenie f(i,j)end

end

Przykład 4 ("zagnieżdżanie" iteracji):

1 2 3 4 5

2 4 6 8 10

3 6 9 12 15

4 8 16 24 32

5 10 15 20 25

Page 26: PWSW Mechatronika

a=0;suma = 0;for i= 1:1:5, for j = 1:1:5, a(i , j) = 2*i - 4* j, suma=suma+a(i , j); endenddisp(suma)

Przykład 6 (sumowanie elementów w tablicy dwuwymiarowej):

Page 27: PWSW Mechatronika

a=0;suma = 0;for i= 1:1:5, for j = 1:1:5, a(i , j) = 2*i - 4* j, if a(i,j)>0

suma=suma+a(i , j); end; endenddisp(suma)

Przykład 6b (sumowanie dodatnich elementów w tablicy dwuwymiarowej):

Page 28: PWSW Mechatronika

A=[2 8 6 -1 2 3 9 11 7 12 -4 9 33 1 22 1 0 -3 5 7]maks=A(1) %założeniefor i= 2:1:20,

if A(i)>maksmaks=A(i)end

enddisp(maks)

Przykład 7 (wielokrotny test – wyznaczanie największego elementu)

badamy elementy od 2 do ostatniego

Page 29: PWSW Mechatronika

A=[2 8 6 -1 2 3 9 11 7 12 -4 9 33 1 22 1 0 -3 5 7]ile=1 %założeniefor i= 1:1:20,

if A(i)>=0 && A(i)<=5ile=ile+1;end

enddisp(ile)

Przykład 8 Ile liczb jest w przedziale [0 5]

Page 30: PWSW Mechatronika

A=rand(20) % losowe wypełnienie tablicy 20x20naj1=max(A)naj2 = max(naj1)

Przykład 9 Wykorzystanie standardowej funkcji max (lub min)

wektor maksimów w kolumnach (maksima lokalne)

największy z maksimów lokalnych

Page 31: PWSW Mechatronika

Podstawowe różnice Javascript vs. Matlab

JavaScript Matlab

operatory składania

++ += = /= *= %= nie ma

negacja ! ~instrukcja warun-kowa

if (warunek){instrukcje}else if (warunek2){instrukcje}

if warunekinstrukcjeelseif warunek2instrukcjeend

instrukcja for

for (inicjacja; warunek;inkrementacja){instrukcje}

for licznik=inicjacja:krok:wartosc_koncowainstrukcjeend

Page 32: PWSW Mechatronika

Porównywanie kolejnych par elementów sąsiadujących i zamiana miejscami w przypadku niewłaściwej kolejności

Sortowanie bąbelkowe

1 2 3 4 ..... N

N-1 porównań Wykonujemy N przebiegów

Sortowanie bąbelkowe skróconePrzebiegów wykonujemy N-1 W każdym kolejnym przebiegu liczba analizowanych par jest zmniejszana o 1, a

Page 33: PWSW Mechatronika

33

96 12 22 76 64 23 74 11

9622 76 64 23 74 1112

2 PRZEBIEG

1 PRZEBIEG

i.t.d.

Page 34: PWSW Mechatronika

34

clcclearN=5;G=rand(1,N)%stadardowa funkcja sortującaG1=sort(G)%sortowanie bąbelkowefor k=1:N-1 for m=1:N-k if G(m)>G(m+1) pom=G(m); G(m)=G(m+1); G(m+1)=pom; end end disp(G) %pokazuje kolejne wypływające "bąbelki"end%ostatecznie po posortowaniudisp(G)

zamiana miejscami gdy elementy w niewłaściwej kolejności

M-plik - sortowanie "bąbelkowe"