Prezentacja programu PowerPoint - pg.edu.pl wykład 1.pdf · •Prezentacja wyników symulacji w...

65
dr inż. Marcin Ciołek Katedra Systemów Automatyki Wydział ETI, Politechnika Gdańska Języki Modelowania i Symulacji 2018 Wprowadzenie: MATLAB Wykład 1

Transcript of Prezentacja programu PowerPoint - pg.edu.pl wykład 1.pdf · •Prezentacja wyników symulacji w...

dr inż. Marcin Ciołek

Katedra Systemów Automatyki

Wydział ETI, Politechnika Gdańska

Języki Modelowania i Symulacji 2018

Wprowadzenie: MATLABWykład 1

dr inż. Marcin Ciołek

Katedra Systemów Automatyki

Konsultacje: wtorek 11:15-15

Pokój: ETI EA 546

e-mail: [email protected]

e-wizytówka: http://pg.edu.pl/marciole

Języki Modelowania i Symulacji

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Struktura przedmiotu

Wykład: 30 godzin dydaktycznych

Laboratorium: 30 godzin dydaktycznych

1. O przedmiocie

2. Modelowanie i symulacje

3. MATLAB

4. Help

5. Typy danych

6. Liczby, wektory, macierze, wielomiany

7. Podsumowanie

O czym będziemy mówili

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Zasady zaliczenia

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Ocena końcowa:

Egzamin (50%) i Laboratorium (50%)

Ocena Wynik z egzaminu [%]

Średnia ocen

5 <90,100> <4,75 – 5>

4+ <80,90) <4,25 – 4,5>

4 <70,80) <3,75 – 4>

3+ <60,70) <3,25 – 3,5>

3 <50,60) 3

Zasady zaliczenia

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Ocena 5 zamiast Egzaminu?! systematyczna i aktywna praca

Zasady gry Punkty[%]

komentarz

Punkty na start 20 % dla każdego

Nieobecność – 5 % za każdą nieobecność

Zadaniadomowe z wykładu

1 – 15 % 3 zadania, każde po 5%, sprawozdanie

ocena 5 = 100%

*plagiat sprawozdania = wykluczenie z gry

*koniec zabawy, ale mam mniej niż 100%pozytywny wynik z egzaminu + punkty/2

Zasady zaliczenia

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Egzamin Laboratorium

Egzamin w terminie podstawowym oraz w terminie poprawkowym

Pytania otwarte i zamknięte

Zapoznanie się z pakietem obliczeniowym MATLAB [3 spotkania]

Dwa sprawdziany (50% oceny z laboratorium, minimum ocena 3)

Projekt z cyfrowego przetwarzania sygnałów realizowany (pojedynczo/w parach, 50% oceny z laboratorium, minimum ocena 3)[5 spotkań]

Statystka

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

0%

20%

40%

60%

80%

100%

2011 2012 2013 2014 2015 2016 2017

Wybór sposobu zaliczenia wśród studentów

Pisali Egzamin Otrzymali ocenę 5 z gry

Sprawozdanie - wymagania

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

• Zbiór sprawozdań wysyłamy najpóźniej do 20 stycznia

• Opis problemu (wzory, schematy)

• Prezentacja wyników symulacji w formie tabel, rysunków

• Dyskusja i wnioski na podstawie wskazanej literatury

Rysunki

• muszą być czytelne

• podpisane osie

• legenda

Literatura do omawianych zagadnień

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Literatura

1. Tomasz P. Zieliński, Cyfrowe przetwarzanie sygnałów: od teorii do zastosowań, Warszawa 2005.

2. F. Golnarghi and B.C. Kuo, Automatic Control Systems 9th edition, Wiley 2009.

3. K. Ogata, Modern Control Engineering 5th edition, Prentice Hall 2010.

Organizacja pojedynczego wykładu

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

1. Sprawdzenie obecności

2. Powtórzenie wiadomości z ostatniego wykładu

3. Omówienie nowych zagadnień

4. Podsumowanie wykładu

5. Omówienie zadań domowych

Cel wykładu

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Przekazanie podstawowej wiedzy dotyczącejmodelowanie i symulacji z zakresu Automatyki iRobotyki oraz Cyfrowego Przetwarzania Sygnałówz wykorzystaniem pakietu obliczeniowego MATLAB

Zainspirowanie do dalszego zdobywania wiedzy orazwykorzystywania jej do tworzenia praktycznychaplikacji

Umiejętności

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

• podstawowa znajomość pakietu obliczeniowego MATLAB

• wykorzystanie MATLAB'a do rozwiązywania problemów z zakresu

Automatyki i Robotyki oraz Cyfrowego przetwarzania sygnałów

• numeryczne rozwiązywanie równań różniczkowych zwyczajnych

• dobór modelu, scenariusza symulacji, kryteriów obiektywnej i

subiektywnej oceny wyników

Umiejętności

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

• graficzna prezentacja wyników

• implementacja oraz weryfikacja poprawności działania algorytmów

• optymalizacja działania symulacji (operacje na macierzach i

wektorach, rekursje, Profiler, klaster obliczeniowy Tryton)

1. O przedmiocie

2. Modelowanie i symulacje

3. MATLAB

4. Help

5. Typy danych

6. Liczby, wektory, macierze, wielomiany

7. Podsumowanie

O czym będziemy mówili

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Modelowanie i Symulacja

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Jaka jest różnica pomiędzy modelowaniem a symulacją?

Modelowanie i symulowanie

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

• Modelowanie – wyprowadzenie równań matematycznych reprezentujących proces fizyczny (sygnał, system, zjawisko)

• Symulowanie – procedura rozwiązywania równań, które są wynikiem modelowania

Modelowanie i symulowanie

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Budując model matematyczny pewnego procesu fizycznego możemywybrać jedną z dwóch podejść: podejście „fizyczne” lub instrumentalne

podejście fizyczne - wykorzystanie podstawowych praw fizyki do opisuzachowanie procesu dynamicznego (prawa Newtona, prawa zachowania,równania równowagi)

szeregowe połączenie układu RLC może być reprezentowane przezrównanie różniczkowe

𝑅𝑖 𝑡 + 𝐿𝑑𝑖(𝑡)

𝑑𝑡+1

𝐶න 𝑖 𝑡 𝑑𝑡 = 𝑒(𝑡)

Modelowanie i symulowanie

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Podejście instrumentalne zakłada dopasowanie modelu dosygnału/systemu. Współczynnki modelu nie posiadają fizycznejinterpretacji. Identyfikacja modelu nie jest celem samym w sobie, alezazwyczaj rozwiązanie problemu zależy w bezpośredni sposób odestymowanego modelu.

𝑦 𝑡 =

𝑖=1

𝑛

𝑎𝑖𝑦 𝑡 − 𝑖 + 𝑛(𝑡)

gdzie 𝑎𝑖 oznaczają współczynniki autoregresji, a 𝑛(𝑡) jest zmienną losowąo rozkładzie normalnym, o zerowej wartości średniej i wariancji 𝜌.

Załóżmy, że dyskretny sygnał 𝑦(𝑡) może być opisany modelemautoregresyjnym rzędu 𝑛

1. O przedmiocie

2. Modelowanie i symulacje

3. MATLAB

4. Help

5. Typy danych

6. Liczby, wektory, macierze, wielomiany

7. Podsumowanie

O czym będziemy mówili

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

• intuicyjna obsługa

• użyteczna pomoc z wieloma przykładami i z solidnym opisem

• numeryczne obliczenia na macierzach i wektorach

• duża liczba funkcji, przyborników, aplikacje (np. automatyka, identyfikacjasystemów)

• rysowanie dwu i trójwymiarowych wykresów funkcji

• zrównoleglenie obliczeń (CI TASK klaster Tryton)

• ...

Aktualna wersja: R2018a, licencja płatna

Alternatywne oprogramownie: Octave, RStudio, Scilab (open source)

MATALAB - program komputerowy będący interaktywnym środowiskiem dowykonywania obliczeń naukowych i inżynierskich, do tworzenia symulacjikomputerowych, oraz do łatwej wizualizacji wyników

MATLAB

20© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Początki MATLAB'a By Cleve Moler, MathWorks (published 2004)

21© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

A 1975 textbook by Niklaus Wirth,

who later developed PASCAL

"MATLAB is now a full-featured technical computing environment, but it startedas a simple “Matrix Laboratory.” Three men, J. H. Wilkinson, George Forsythe,and John Todd, played important roles in the origins of MATLAB. Our accountbegins more than 50 years ago."

The EISPACK manual was published in

1976 and the LINPACK manual in 1979.

"When we were developing EISPACK (matrix eigenvalue computation) and

LINPACK (solving linear equations), I was a math professor at the University of

New Mexico, teaching numerical analysis and matrix theory. I wanted my students

to be able to use our new packages without writing Fortran programs, so I studied

a book by Niklaus Wirth to learn about parsing computer languages."

https://au.mathworks.com/company/newsletters/articles/the-origins-of-matlab.html

"My 1965 Ph.D. thesis under Forsythe’s direction was entitled “Finite Difference

Methods for the Eigenvalues of Laplace’s Operator.” The primary example, on

which both Forsythe and Wilkinson had worked earlier, was the L-shaped

membrane, now the MathWorks logo."

Początki MATLAB'a By Cleve Moler, MathWorks (published 2004)

22© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

"In the late 1970s, following Wirth’s methodology, I used Fortran and portions of LINPACK and EISPACK to

develop the first version of MATLAB. The only data type was “matrix.” There were only 80 functions.

There were no M-files or toolboxes."

https://au.mathworks.com/company/newsletters/articles/the-origins-of-matlab.html

pi = 4*atan(1);x = 0:pi/40:2*pi;y = x.*sin(3*x);plot(x,y)

"This first Fortran MATLAB was portable and could be compiled to run on many of the computers that were available in the late 1970s and early 1980s. "

"I visited Stanford in 1979 and taught CS237, the graduate numerical analysis course. I had the studentsuse MATLAB for some of the homework. Half of the students in the class were from math and computerscience, and they were not impressed by my new program. It was based on Fortran, it was not aparticularly powerful programming language, and it did not represent current research work in numericalanalysis. The other half of the students were from engineering, and they liked MATLAB. They werestudying subjects that I didn’t know anything about, such as control analysis and signal processing , andthe emphasis on matrices in MATLAB proved to be very useful to them."

Początki MATLAB'a By Cleve Moler, MathWorks (published 2004)

23© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

https://au.mathworks.com/company/newsletters/articles/the-origins-of-matlab.html

"A few of the Stanford engineering students from my class joined two consulting companies inPalo Alto. These companies extended MATLAB to have more capability in control analysis andsignal processing and, in the early 1980s, offered the resulting software as commercialproducts."

"Jack Little, a Stanford- and MIT-trained control engineer, was the principal developer of one ofthe first commercial products based on Fortran MATLAB. When IBM announced their first PC inAugust, 1981, Jack quickly anticipated the possibility of using MATLAB and the PC for technicalcomputing. He and colleague Steve Bangert reprogrammed MATLAB in C and added M-files,toolboxes, and more powerful graphics.

The three of us founded The MathWorks in California in 1984."

MATLAB

24

MATLAB

Sygnały (mowy, muzyczne,

akustyczne biomedyczne,

ekonometryczne,

sejsmologiczne,...)

Systemy

Obrazy

Zbiory danych uczących

Analiza danych w dziedzinie

czasu/częstotliwości

Identyfikacja sygnałów/systemów

Projektowanie systemów sterowania

Transformacja, filtracja

Projektowanie i trenowanie sieci

neuronowych

Generowanie sygnałów, funkcji,

tworzenie systemów

Karty akwizycji danych, przetwarzanie w czasie rzeczywistym

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Intuicyjna obsługa

25

• Command Window• Workspace• Editor• Current Folder• Figure

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Intuicyjna obsługa

26

• zmienne

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Intuicyjna obsługa

27© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Do podstawowej wersji MATLAB'a/SIMULINK'a należy zakupić licencje na interesujące nas pakiety

Wybrane pakiety• Parallel Computing Toolbox• Control System Toolbox• System Identification Toolbox• Robotics System Toolbox• Signal Processing Toolbox• Image Processing Toolbox• Econometrics Toolbox• Bioinformatics Toolbox• Database Toolbox• DSP System Toolbox• Audio System Toolbox• ...

Kategorie• Parallel Computing• Math, Statistics, and Optimization• Control Systems• Signal Processing and Wireless Communications• Image Processing and Computer Vision• Test and Measurement• Computational Finance• Computational Biology• Code Generation• Application Deployment• Database Access and Reporting• ...

Pakiety (Toolbox)

28© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Basic Functions Category

sin, cos, tan, ctg Trigonometry

exp, log10, log, expm, logm

Exponents and Logarithms

max, min, mean, sum, std var, median

Descriptive Statistics

fft, conv Fourier Analysis and Filtering

Control System toolbox

Description

ss Create state-spacemodel

tf Create transfer function model

zpk Create zero-pole-gainmodel

feedback Feedback connection of two models

Funkcje

29© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Aplikacje

30© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Aplikacje: Filter Designer

31© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Aplikacje: Control System Designer

32© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Aplikacje: PID Tuner

33© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

1. O przedmiocie

2. Modelowanie i symulacje

3. MATLAB

4. Help

5. Typy danych

6. Liczby, wektory, macierze, wielomiany

7. Podsumowanie

O czym będziemy mówili

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Help

35© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Help

Organizacja pomocy w MATLAB'ie• Syntax• Description• Examples• More About• Tips• References• See Also

36© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Help: Syntax

Organizacja pomocy w MATLAB'ie• Syntax• Description• Examples• More About• Tips• References• See Also

37© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Help: Description

Organizacja pomocy w MATLAB'ie• Syntax• Description• Examples• More About• Tips• References• See Also

38© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Help: Examples

Organizacja pomocy w MATLAB'ie• Syntax• Description• Examples• More About• Tips• References• See Also

39© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Help: More About

Organizacja pomocy w MATLAB'ie• Syntax• Description• Examples• More About• Tips• References• See Also

40© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Help: Tips

Organizacja pomocy w MATLAB'ie• Syntax• Description• Examples• More About• Tips• References• See Also

41© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Help: References

Organizacja pomocy w MATLAB'ie• Syntax• Description• Examples• More About• Tips• References• See Also

42© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Help: See Also

Organizacja pomocy w MATLAB'ie• Syntax• Description• Examples• More About• Tips• References• See Also

43© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

1. O przedmiocie

2. Modelowanie i symulacje

3. MATLAB

4. Help

5. Typy danych

6. Liczby, wektory, macierze, wielomiany

7. Podsumowanie

O czym będziemy mówili

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Typy danych

45© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Precyzja

Typ IEEE 754 Pojedyncza Podwójna

Orientacyjny zakres 10−38… 1038 10−308… 10308

Orientacyjna precyzja 6 ∙ 10−8 10−16

Standard IEEE 754 definiuje dwa zasadnicze formaty reprezentacjizmiennoprzecinkowej liczb rzeczywistych oraz określa reguływykonywania działań arytmetycznych

MATLAB wykorzystuje podwójną precyzję w arytmetyce zmiennoprzecinkowej

𝜀 = 2.2204 ∙ 10−16 = 2−52

Typy danych

46© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

array

typ tablicowy

char

typ znakowy

numeric

typ numeryczny

double

typ podwójnej precyzji

sparse

typ rzadki

tryb pojedynczej precyzji

cel

typ komórkowy

struct

typ strukturalny

Przykłady

c = 'Kasia'imiona = char('Kasia', 'Ola')

r = 10k = single(10)

E = speye(1000)

A{1} = [1 2 3]A{2} = 'Ola'A{3} = true

pomiary(1).dzień = 13pomiary(1).dane = [1 2 3]pomiary(1).miejsce = 'Opole'

Zapamiętajnazwa = ['wyniki_' num2str(numer) '_sym']

Typy danych

47© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

MATLAB zapisuje zmienne numeryczne jako liczby zmiennoprzecinkoweo podówjnej precyzji i przeznacza na to 8 bajtów (64 bity)

Typy zmiennych

a = 'c'b = 'ab'

c = 0d = 5e = 10^20

f = single(5)g = true

ZapamiętajZero też zajmuje 8 bajtów

Format liczb

48© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Przykłady dostępnych formatów liczb

format short (domyślnie)

>> 3.455556

short – reprezentacja stałoprzecinkowa pięciocyfrowaans = 3.4556

long – reprezentacja stałoprzecinkowa piętnastocyfrowaans = 3.455556000000000

short e – reprezentacja zmiennoprzecinkowa pięciocyfrowaans = 3.4556e+00

long e – reprezentacja zmiennoprzecinkowa piętnastocyfrowa ans = 3.455556000000000e+00

1. O przedmiocie

2. Modelowanie i symulacje

3. MATLAB

4. Help

5. Typy danych

6. Liczby, wektory, macierze, wielomiany

7. Podsumowanie

O czym będziemy mówili

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Operatory

50© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Operatory relacji

< mniejsze od

<= mniejsze lub równe

> większe od

>= większe lub równe

== równe

~= nierówne (różne od)

Operatory logiczne

& iloczyn logiczny

| suma logiczna

~ negacja

xor różnica symetryczna

Operatory arytmetyczne

+ dodawanie

- odejmowanie

* mnożenie

/ dzielenie prawostronne

\ dzielenie lewostronne

^ potęga

.' (') transpozycja (transpozycja hermitowska)

przykłady

4/2 = 2 4\2 = 0.5𝑣 = [1 + 𝑖 1 − 𝑖]𝑣. ′ = 𝑣′ =

1 + 𝑖 1 − 𝑖1 − 𝑖 1 + 𝑖

wielkość liter ma znaczenie

C = 1 c = –4

liczby zespolone

z = 2 + 3i lub z = 2 + 3j

podstawowe operacje na liczbach zespolonych

real (z) >> 2imag(z) >> 3abs(z) >> sqrt(13)angle(z) >> atan2(imag(z),real(z))conj(z) >> 2 – 3i

podstawowe operacje na liczbach rzeczywistych

sqrt(c) >> 1.4142 ic^2 >> 16 exp(2) = 𝑒2

abs(c) >> 4logarytm naturalny/ o podstawie 10log(C)/log10(C)

zaokrąglanie liczb

round(1.6) >> 2 (l. całkowita)floor(–1.6) >> –2 (-> −∞) ceil(1.1) >> 2 (-> +∞) fix(–1.6) >> –1 (-> 0)

Zapamiętaj• niektóre liczby o skończonym rozwinięciu w

systemie dziesiętnym mają nieskończone rozwinięcie w systemie binarnym

• wielkość liter ma znaczenie• unikaj stosowania nazw zmiennych, które

pochodzą od nazw wbudowanych funkcji MATLABa np.: cos = 2 lub abs = 1

Liczby

51© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

wektor wierszowy/kolumnowy

v = [5 1 6] v = [5; 1; 6]

v(2) >> 1v(1:2) >> 5 1

transpozycja (z sprzężeniem)

v.' (v')

ZapamiętajW MATLAB'ie indeksowanie tablic zaczynamy od 1!

generowanie wektorów

v = 1:10 >> 1 2 ... 10v = 1:2:10 >> 1 3 ... 9v = 10:-1:1 >> 10 9 ... 1

v = zeros(m,1)v = ones(m,1)v = rand(m,1)

rozmiar wektora

[m,n] = size(v) >> m = 1 n = 3L = length(v) >> L = 3 isempty(v) >> false

Wektory

52© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

wektor wierszowy/kolumnowy

v = [5 1 6] v = [5; 1; 6]

rachunek wektorowy

𝑣𝑣𝑇 =25 5 305 1 630 6 36

𝑣𝑇𝑣 = 62

𝑣 =516

działania na elementach wektora

v.*vv./vv.^vv+vv-v

Zapamiętaj• przy wykonywaniu działań na wektorach wymiary wektorów muszą się zgadzać• stosowanie operatorów .* i ./ jest wydajniejsze niż stosowanie pętli for• dobrą praktyką jest definiowanie na początku rozmiaru wektora np. v = zeros(10,1)

podstawowe funkcje

sum(v) >> 12prod(v) >> 30mean(v) >> 4sort(v) >> 1 5 6cumsum(v) >> 5 6 12max(v) >> 6min(v) >> 1

brak zgodności rozmiarów

Error using * Inner matrix dimensions must agree.

Wektory

53© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

𝑦 =(1 − log10𝑥)

𝑥

expsin𝑥𝑥

przykład 1

𝑧 =

sin𝑥 cos𝑥𝑥

[σ𝑥𝑦]

tg(𝑥)

przykład 2

𝑦 =𝑥 σexp(𝑥−cos𝑥)/𝑥

ln𝑥

przykład 3

Przykłady

54© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

𝑦 =(1 − log10𝑥)

𝑥

expsin𝑥𝑥

przykład 1

y = ((1 - log10(x)) .^ x) ./ (exp(sin(x) ./ x))

𝑧 =

sin𝑥 cos𝑥𝑥

[σ𝑥𝑦]

tg(𝑥)

przykład 2

z = (sin(x) .* cos(x) ./ sqrt(x)) * (x .'* y) ./ tan(x)

𝑦 =𝑥 σexp(𝑥−cos𝑥)/𝑥

ln𝑥

przykład 3

y = (sum(exp( (x-cos(x)) ./ x )) ./ log(x)) .^ (1 ./ x)

Przykłady

55© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

A =5 1 6 06 2 4 −27 9 8 3

definiowanie macierzy

A = [5 1 6 0; 6 2 4 -2; 7 9 8 3]

macierze wielowymiarowe

A = zeros(2,2,2)

A(:,:,1) >> 0 0

0 0

A(:,:,2) >> 0 0

0 0

elementy macierzy

A(3,2) >> 9A(:,2) >> 1 2 9 A(2,:) >> 6 2 4 −2A(1:2,3:4) >> 6 0

4 −2

generowanie macierzy

A = zeros(2,2)>> 0 0

0 0

A = ones(2,2)>> 1 1

1 1

A = eye(2,2)>> 1 0

0 1

ZapamiętajW MATLAB'ie indeksowanie tablic zaczynamy od 1!

Macierze

56© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

A =5 1 6 06 2 4 −27 9 8 3

rozmiar macierzy

[m,n] = size(A)>> m = 3 n = 4

L = length(A) = max(size(A))>> L = 4

n = ndims(A)>> n = 2

n = numl(A)>> n = 12

isempty(A)>> no

podstawowe funkcje

sum(A)>> 18 12 18 1

sum(A,1)>> 18 12 18 1sum(A,2)>> 12 10 27

prod(A,1)>> 210 18 192 0prod(A,2)>> 0 −96 1512

mean(A,1)>> 6 4 6 1/3mean(A,2)>> 3 2.5 27/4

ZapamiętajŚwiadomie wybierz czy dokonujesz operacji na kolumnach czy wierszach macierzy!

Macierze

57© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Funkcja Opis

transpose(A) lub A.' transpozycja

A' transpozycja hermitowska

cond(A) wskaźnik uwarunkowania macierzy [1,inf]

rcond(A) odwrotność wskaźnikauwarunkowania macierzy [0,1]

det(A) wyznacznik macierzy

trace(A) ślad macierzy

inv(A) = A^-1 odwrotność macierzy

rank(A) rząd macierzy

eig(A) rozkład na wartości własne

diag(A) diagonalna

A = rand(m,n) macierz losowa o rozkładzie równomiarnym

ZapamiętajKorzystaj świadomie i rozważnie zwbudownaych funkcji MATLAB'a –zwłaszcza gdy macierz jest źleuwarunkowana

Podstawowe funkcje

58© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Macierz trójkątna dolna/górna z macierzy X

L = tril(X) U = triu(X)

1 0 04 2 05 6 3

1 4 50 2 60 0 3

Macierz hermitowska (liczby zespolone)/symetryczna (liczby rzeczywiste)

1 −𝑖𝑖 3

1 55 3

𝐴 = 𝐴𝑇𝐴 = 𝐴𝐻

Macierz osobliwa

det(A) = 0

Macierz ortogonalna (rzeczywista kwadratowa)

𝐴−1 = 𝐴𝑇

𝐴𝐴𝑇 = 𝐴𝑇𝐴 = 𝐼

𝐴 = [𝑎1…𝑎𝑖]

𝑎𝑖 = 1Macierz Toeplitza a=[1 4 5] b=[1 2 3]

toeplitz(a) toeplitz(a,b)

1 2 34 1 25 4 1

Macierz jednostkowa eye(3)

1 0 00 1 00 0 1

Macierz dodatnio określona

Dla każdego niezerowego, kolumnowego wektora 𝑥forma kwadratowa

𝑥𝑇𝐴𝑥 > 0

Macierze specjalne

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

1 4 54 1 45 4 1

Macierz zerowa zeros(2,3)

0 0 00 0 0

Macierz stała ones(2,3)

1 1 11 1 1

Macierz diagonalna v=[1 2 3] diag(v)

1 0 00 2 00 0 3

Macierz losowa rand(2,2)

0.2785 0.95750.5469 0.9649

Macierz losowa randn(2,2)

−1.3499 0.72543.0349 −0.0631

Symbolic Toolbox

60© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Pakiet MATLAB umożliwia wykonywanie obliczeń na symbolach

Tworzenie zmiennych

x = sym('x'); y = sym('y');

Wektory

a = sym('a', [1 4])a = [ a1, a2, a3, a4]

Macierze

A = sym('A',[3 4])A =[ A1_1, A1_2, A1_3, A1_4] [ A2_1, A2_2, A2_3, A2_4] [ A3_1, A3_2, A3_3, A3_4]

Macierze wielowymiarowe

A = sym('a',[2 2 2])A(:,:,1) = [ a1_1_1, a1_2_1] [ a2_1_1, a2_2_1] A(:,:,2) = [ a1_1_2, a1_2_2] [ a2_1_2, a2_2_2]

Wyrażenia matematyczne

h_expr = @(x)(sin(x) + cos(x)); sym_expr = sym(h_expr)sym_expr = cos(x) + sin(x)

solve

syms x eqn = sin(x) == 1; solx = solve(eqn,x)solx = pi/2

solve

syms a b c x eqn = a*x^2 + b*x + c == 0; sol = solve(eqn) sola = solve(eqn, a)sol = -(b + (b^2 - *a*c)^(1/2))/(2*a)

-(b - (b^2 - 4*a*c)^(1/2))/(2*a) sola = -(c + b*x)/x^2

Wielomiany

61© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Pakiet MATLAB umożliwia wykonywanie obliczeń na wielomianach

poly

p = [1 -2] – pierwiastkiw = poly(p); w = [1 1 -2]

roots

w = [1 1 -2] ;p = roots(w); p = [1 -2]

polyval

x = 2;y = polyval(x); y = 4

𝑤 𝑥 = 𝑥2 + 𝑥 − 2

conv

w = [1 1 -2]; z = [2 4 8];y = conv(w,z);

𝑤 𝑥 = 𝑥2 + 𝑥 − 2

𝑧 𝑥 = 2𝑥2 + 4𝑥 + 8

𝑦 𝑥 = 2𝑥4 + 6𝑥3 + 8𝑥2 − 16

dconv

w = [1 1 -2]; z = [2 4 8];w = dconv(y,z);

1. O przedmiocie

2. Modelowanie i symulacje

3. MATLAB

4. Help

5. Typy danych

6. Liczby, wektory, macierze, wielomiany

7. Podsumowanie

O czym będziemy mówili

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Co muszę zapmiętać

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

• Modelowanie i symulacja• Do czego służy pakiet MATLAB• Typy danych• Liczby, wektory, macierze (specjalne), wielomiany• Operatory dwukropka(:) oraz (.* ./ .^ .\) • Podstawowe funkcje

Zadania domowe

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

1) Zaprezentuj działanie operatorów dwukropka (:) oraz (.* ./ .^ .\)

2) Przykłady: Liczby, wektory, macierze (specjalne), wielomiany

3) Podstawowe funkcje

Języki Modelowania i Symulacji

© dr inż. Marcin Ciołek, Politechnika Gdańska, Katedra Systemów Automatyki, Wykład Języki Modelowania i Symulacji

Dziękuję za uwagę