Professional Documents
Culture Documents
w Matlabie (cz.2)
Opracowa:
Dr in. Zbigniew Rudnicki
Tematyka wykadu
Wyraenia arytmetyczne
i ich skadniki
Wyraenia arytmetyczne mog zawiera:
stae (liczby)
zmienne (nazwy zmiennych)
operatory dziaa
nawiasy
funkcje
Typy wartoci
Matlab nie wymaga deklarowania typw zmiennych przed ich
uyciem. Okrela typ na podstawie wprowadzonej wartoci.
Stae i zmienne liczbowe maj typ wynikajcy z pierwszej
podstawionej wartoci a acuchy znakw czyli teksty typ char
W wyraeniach logicznych warto ZEROWA jest rwnoznaczna z
FASZEM
a wartoci rne od zera traktowane s jako PRAWDA
Moliwe jest dokonywanie rnych konwersji typw m.in.:
num2str(liczba) - przeksztaca liczb na cig znakw
str2num(tekst) - przeksztaca tekst (cig cyfr) na liczb
uint8, uint16, uint32 - konwertuj do cakowitych bez znaku
int8, int16, int32 - konwertuj do cakowitych ze znakiem
7
Zmienne
Wszystkie zmienne w MATLABie s traktowane jak macierze
Wektory i skalary s uwaane za szczeglne przypadki macierzy
Nazwy zmiennych mona tworzy wedug nastpujcych regu:
musz rozpoczyna si od litery, a dalej mog mie tylko
litery angielskie, nie wolno dawa polskich np.:, , , , , ....
oraz cyfry i znaki podkrelenia np.: Moment_sily9
dugo nazwy nie powinna przekracza max. 19 znakw
(tyle jest zapamitywanych)
MATLAB rozrnia due i mae litery.
Polecenia standardowe naley pisa maymi literami a dla nazw
wasnych programw i zmiennych mona uywa maych i
duych liter
9
ZE:
2Moc
Moment-1
moment_gncy1
SIA_Px1
10
Dziaania na liczbach
i zmiennych skalarnych
12
+
/
*
^
dodawanie
odejmowanie
dzielenie
mnoenie
potgowanie
Inne dziaania realizowane s przy pomocy FUNKCJI
np.: pierwiastek z 2:
sqrt(2)
13
zapiszemy: 34.6/(1+2*sqrt(3))
dla indeksw elementw wektorw i macierzy np.:
V(1), b(16), sila(2*j+1), M(i,j), Mac_A(w+1, k-2)
15
zapiszemy:
(376.58^(3*sqrt(2))+2*sqrt(67))/(0.0789-1/(18-sqrt(3)))
(jak wida czasem musi by wiele nawiasw).
sin
sinh
asin
asinh
sinus
sin hiperboliczny
arcus sinus
arcus sin hiperb.
sec
sech
asec
asech
secans
sec hiperboliczny
arcus secans
arc secans hiperb.
cos
cosh
acos
acosh
cosinus
cos hiperboliczny
arkus cosinus
arcus cos hiperb.
csc
csch
acsc
acsch
cosecans
cosecans hiperbol.
arcus cosecans
arcus cosecans hiperb.
tan
tanh
atan
atanh
tangens
tangens hiperb.
arcus tangens
arc tg hyperb.
cot
coth
acot
acoth
cotangens
cotangens hiperbolicz.
arcus cotangens
arc cotangens hyperbol.
18
Wyraenia logiczne
- s uywane m in. w instrukcjach: IF oraz WHILE
Rozrniamy wyraenia logiczne:
1) proste czyli RELACJE np.: 2*x < (x-y)
czyli oglnie:
wyraenie
arytmetyczne
operator
relacji
wyraenie
arytmetyczne
Operatory Relacji
== rwne
~= nie rwne (w Matlabie)
!= nie rwne (w FreeMat oraz C)
< mniejsze
> wiksze
<= mniejsze lub rwne
>= wiksze lub rwne
20
Operatory logiczne
Operatory logiczne ( & | ~ ) pozwalaj czy relacje
i tworzy z nich zoone wyraenia logiczne.
Matlab ma nastpujce operatory logiczne:
& - i czyli iloczyn logiczny czyli koniunkcja
| - lub czyli suma logiczna czyli alternatywa
~ - nie czyli negacja czyli zaprzeczenie
21
Funkcje Logiczne
Zamiast operatorw logicznych mona uywa funkcji:
and(x, y) - iloczyn logiczny czyli to samo co: x&y
or(x,y) - suma logiczna czyli to samo co: x|y
not(x) - zaprzeczenie czyli to samo co: ~x
22
INSTRUKCJE
23
Podstawowe instrukcje
1) podstawiania: zmienna = wyraenie
- nadaj wartoci zmiennym
2) wprowadzania danych z klawiatury: zmienna=input( ...)
3) wyprowadzania wynikw: fprintf(format, lista_wyrae)
4) rozgazienie warunkowe: if ... else ... end
5) ptla o okrelonej liczbie cykli: for ... end
6) ptla o nieokrelonej liczbie cykli: while ... end
7) obsuga plikw dyskowych:
fopen(...), fscanf(...), fprintf(...), fclose(...),
readline(...)
25
3) FPRINTF
- Wyprowadzanie wynikw na ekran
Skadnia polecenia:
fprintf(opis_formatu, lista_wyrae)
opis_formatu- moe zawiera:
- teksty - bd one przekopiowane do wydruku
- znaki sterujce poprzedzone backslashem:
np.: \n to rozkaz zmiany linii
- oraz formaty wyprowadzania dla wyrae z listy_wyrae
np.: %10.4f - dla liczby rzeczywistej,
10 znakw, w tym 2 po kropce dziesitnej
28
(b)
(c)
lista wyrae
opis formatw
a) \n rozkaz zmiany linii na wydruku
b) %5.2f - format dla wydruku wartoci x
5 znakw dla caego pola, w tym 2 znaki po kropce
c) %7.2f - format dla wydruku wartoci x^2
7 znakw dla caego pola, w tym 2 znaki po kropce
29
Instrukcja IF c.d.
31
Liczba= 2.00
Liczba= 2.20
Liczba= 2.40
Liczba= 2.60
Liczba= 2.80
Liczba= 3.00
Kwadrat=
Kwadrat=
Kwadrat=
Kwadrat=
Kwadrat=
Kwadrat=
4.00
4.84
5.76
6.76
7.84
9.00
34
Liczba Kwadrat
2.00 4.00
2.20 4.84
2.40 5.76
2.60 6.76
2.80 7.84
3.00 9.00
35
clear;
for i=1:10
if i<3 | i>8
x(i)=1;
else
x(i)=2;
end
end
x
ptla
wyniki:
x=
1
36
Dziaania
na
wektorach i macierzach
40
Nawiasy prostoktne [ ]
Uywane s do:
definiowania wartoci wektorw i macierzy np.:
V=[2.5, 3, 12] M=[1, 0, 3; 0.5, 2, 4]
sklejania (konkatenacji):
- wektorw,
- macierzy
- acuchw znakowych (tekstw) np.:
disp([Sila=, num2str(F1), Moment=, num2str(Mg)])
42
43
Dodawanie
i
odejmowanie
macierzy
44
Operatory z kropk
= operacje tablicowe
.*
.^
./
46
B=[2, 0, 1; 1, 0, 2]
>> C=A .* B
C=
2 0 2
1 0 6
>> D=A*B; % Mnoenie macierzowe - niewykonalne
??? Error using ==> *
Inner matrix dimensions must agree.
Przykad
mnoenia
tablicowego
macierze
musz mie
takie same
wymiary
47
Mnoenie macierzowe
48
>> M1=[2,0,1;3,2,1],
M1 =
2 0
3 2
M2=[2;3;4]
Przykad
mnoenia
macierzowego
1
1
M2 =
2
3
4
>> W=M1*M2
W=
2*2 + 0*3 + 1*4 = 8
3*2 + 2*3 + 1*4 =16
liczba kolumn
w pierwszej
macierzy musi by
rwna liczbie
wierszy
w drugiej
49
2
3
6
7
50
51
Problem 1
Jak wida w macierzy w kadym
wierszu:
pierwszy element jest kolejn liczb
nieparzyst
kady nastpny element jest wikszy
o 4 od poprzedniego
52
Rozwizanie - program1
53
Rozwizanie - program2
54
Problem 2
55
Wykresy
56
57
58
59
60
Porwnanie Matlaba
z
jzykiem C
61
63
Pocztki jezyka C
Pierwsz wersj jzyka C opracowa Dennis Ritchie w roku 1972 (wykorzystujc
niektre rozwizania z opracowanych w latach1967-1970 jzykw BCPL oraz B).
Peny opis zosta zawarty w ksice Briana W. Kernighana i Dennisa M. Ritchie:
"The C programming language" w roku 1978.
Jzyk C opracowano gwnie dla potrzeb programistw tworzcych systemy
operacyjne (w nim napisano w r.1973 system UNIX) i dlatego jest znacznie
trudniejszy i bardziej zoony ni np. BASIC - przeznaczony dla pocztkujcych,
czy Matlab przeznaczony dla szerokich rzesz uytkownikw.
Dalszy rozwj jzyka C doprowadzi m.in. do ogoszenia w roku 1988 standardu
jzyka ANSI C.
W latach osiemdziesitych Bjarne Stroustrup opracowa znacznie rozszerzony,
obiektowy i dostosowany do graficznego interfejsu jzyk C++ w ktrym m.in.
opracowano system Ms Windows.
65
Struktura programu w C
Program w jzyku C skada si z funkcji. Funkcja jest wydzielon
czci programu, realizujc pewne zadanie. Gwny program musi
mie posta funkcji o nazwie main() - od niej rozpoczyna si
wykonanie programu. Instrukcje skadajce si na kod funkcji (zwany
jej "ciaem") umieszcza si w nawiasach klamrowych { }. Oto
najprostszy przykad:
/* Program wywietla napis: WITAM */
#include <stdio.h>
main()
{
printf("WITAM \n");
}
67