IPO w2

background image

Inżynierskie pakiety oprogramowania (CAD/CAM)
dr M. Pluciński
-----------------------------------------------------------------------------------------------------------------

Created by Maya

1

WYKŁAD 2 (08/03/2007)

V=size(A)

zwraca rozmiar macierzy A

[wk]=size(A)
w=size(A,1)
k=size(A,2)

length(V)
zwraca długość wektora
length(A) zwraca ilość elementów w macierzy A
det(A)

liczy wyznacznik macierzy

rank(A)

rząd macierzy

inv(A)

liczy macierz odwrotną A^(-1)

trl(A)

zwraca dolną trójkątną część macierzy (łącznie z przekątną)

tru(A)

zwraca górną trójkątną część macierzy (łącznie z przekątną)

vd=diag(A)

zwraca wektor na przekątnej (w drugą stronę: D=diag(v))

diag(diag(A))

zwraca macierz tylko z przekątną

sum(v)

jeśli wektor zostanie przekazany jako argument, to otrzymamy
sumę wektora

sum(A)

zwraca wektor sum wyliczony dla każdej kolumny

sum(A’)

zwraca wektor sum wylicozny dla każdego wiersza

prod(A)

zwraca iloczyn

prod(v)

j.w. dla wektora

mean//

średnia arytmetyczna

std//

odchylenie standardowe

min//

zwraca minimum

max//

zwraca maximum


save plik

zapisuje dane na dysk (zapisane do pliku są wszystkie zmienne
zdefiniowane

save plik zm1 zm2

tylko zapisane zmienne

load plik

wczytywanie zmiennych

save –ascii plik.txt zm

zapisanie zmiennych do pliku tekstowego (do jednego pliku
można zapisać tylko jedną zmienną)

sprintf

przekształca zmienne wejściowe na string

load plik.txt

utworzy zmienne o nazwie pliku bez rozszerzenia

eval(‘...’)

w nim łańcuch tekstowy lub polecenie MatLaba, które będzie
zinterpretowane i wykonane

np. eval(‘x=sin(10)’)

• Tworzenie pętli

for zm=wektor
.
.
.
end

Zamiast wektora można też przekazać macierz, wtedy zmienna będzie przyjmować
kolejne kolumny macierzy. Zmienna w pętli przyjmuje pewne wartości.

background image

Inżynierskie pakiety oprogramowania (CAD/CAM)
dr M. Pluciński
-----------------------------------------------------------------------------------------------------------------

Created by Maya

2

Przykład:

for k=10:-0.1:0
.
.
end

for z=[1 4 8 20]
.
.
end

for k=1:10

v(k)=3^k;

end

Ostatni przykład pokazuje, jak nie należy tworzyć pętli. Pętla utworzy wektor

v, ale z punktu widzenia efektywności nie jest ona poprawna. Przy pierwszym
przejściu przez pętlę MatLab zauważy, że nie ma wektora v, utworzy go więc
o rozmiarze 1, przy drugiej pętli ten rozmiar będzie już za mały. MatLab za dużo
czasu przydziely samemu przydzielaniu pamięci.

Rozwiązanie:

v=zeros(1,10);
for k=1:10
v(k)=3^k;
end

lub:

for k=10:-1:1
v(k)=3^k;
end

Można zauważyć, że często małe pętle można zastąpić jednym poleceniem:

v=3.^(1:10)

Pętle while:

while wyrażenie_log
.
.
.
end

Wyrażenie logiczne nie musi być podane w nawiasie.


background image

Inżynierskie pakiety oprogramowania (CAD/CAM)
dr M. Pluciński
-----------------------------------------------------------------------------------------------------------------

Created by Maya

3

Znaki:

==
<
>
<=
>=
~=

różne

~ negacja
&
|

Przykład, jak nie należy tworzyć pętli:

s=0
while s~=100
s=s+0.01;
end

Liczba 100 daje się zapisać na skończonej ilości bitów. Nie da się tak niestety

zapisać liczby dziesiętnej. Pętla ta nigdy się nie zatrzyma, bo nie trafimy w część
setną.

• Operacje warunkowe


if wyr_log1
.
.
elseif wyr_log2
.
.
elseif wyr_log3
.
.
else
.
.
end

Wyrażenia logiczne, tak jak w przypadku pętli while, nie muszą być
w nawiasie.

Pliki *.m mogą być skryptami lub funkcjami.

Skrypt – ciąg poleceń, jakie mają być zinterpretowane i wykonane. Z poziomu

skryptu jest pełny dostęp do całej przestrzeni roboczej MatLaba.



background image

Inżynierskie pakiety oprogramowania (CAD/CAM)
dr M. Pluciński
-----------------------------------------------------------------------------------------------------------------

Created by Maya

4

program.m
% opis
% skryptu
x=0:0.1:100;
y=sin(x)+cos(x);

W znaki % można również wpisać komentarze. Po wpisaniu komendy help

program wyświetli nam wszystkie komentarze na początku skryptu.


Funkcje

test.m
function [x,y]=test(a,b,c)

<- nazwa taka sama, jak nazwa pliku!

% opis
% funkcji
x=a+b+c;
y=a-b*c;

‘Function’ jest słowem kluczowym. Jeśli w pierwszym poleceniu nie pojawi

się to słowo, MatLab założy, że jest to skrypt. W nawiasie [] podane są parametry
zwracane przez funkcję (te wartości muszą być wyliczone). W nawiasie () podane są
parametry przekazywane. Wszystkie zmienne funkcji są zmiennymi lokalnymi.


W nowych wersjach MatLaba, można kilka funkcji zapisywać w jednym pliku.

return

wymusza wcześniejsze zakończenie funkcji lub skryptu

nargin i nargout

zmienne, które informują funkcję, z jaką ilością
zmiennych funkcja została wywołana i ile zwróci


test.m
function [x,y]=test(a,b,c)

if nargin==1

<- badanie ilości parametrów (brak bi c)

b=1;
c=2;

elseif

nargin==2

c=7;

end

x=a+b+c;
y=a-b*c;

W ten sposób taką funkcję można wywołać:

- z jednym parametrem:

test(1)

- z dwoma parametrami:

test(1,2)

- z trzema parametrami:

test(1,2,3)


[x1,y1]=test

-> nargout=2

global p,q

-> unikamy tego, aby nie zaburzyć hermetyczności funkcji


background image

Inżynierskie pakiety oprogramowania (CAD/CAM)
dr M. Pluciński
-----------------------------------------------------------------------------------------------------------------

Created by Maya

5

Nie należy więc zapisywać:

test.m
function [x,y]=test(a,b,c)
%
%
global p,q;
x=a+b+c;
y=a-b*c;

break


Ze skryptów można wywoływać funkcje i inne skrypty.
Z funkcji wywołujemy inne funkcje, funkcja może wywołać siebie samą,

można też wywołać skrypt, (ale skrypt widzi zmienne lokalne).

• Kreślenie wykresów

- eleganckie
- wykresy w osobnym oknie (pasek narzędzi do modyfikacji)
- wykresy mogą być kopiowane przez schowek i można je wklejać do
dokumentów
- rastrowe lub wektorowe


plot(x)

rysowanie wykresu z wektorem wartości

plot(x, y)

plot(x, y, ’...’)

można określić jakiego koloru i stylu ma być linia:

r g b w k

-

linia ciągła

. linia

kropkowana

-.

linia

kreskowo-kropkowana

Wykresy

zbudowane

z

markerów:

*

+

x

0

plot(x, y, ‘*r’)


• Kreślenie większej ilości linii na 1 wykresie:

plot(x1, y1, x2, y2, x3, y3)

wektory muszą być parami takich samych
rozmiarów



background image

Inżynierskie pakiety oprogramowania (CAD/CAM)
dr M. Pluciński
-----------------------------------------------------------------------------------------------------------------

Created by Maya

6

• Dodawanie atrybutów:


plot(x1, y1, ‘-w’, x2, y2, ‘+r’)
plot(x ,A)

gdzie A to macierz, wykreślane wiersze macierzy A funkcją x

plot(x, A(1, : ), x, A(2, : ), x, A(3, : )

Każde wywołanie funkcji plot, kreśli nowy wykres na starym. Żeby ocalić
stary należy zablokować wykres:

hold on

blokuje narysowaną linię i sposób, w jaki jest skalowana

hold off

odblokowuje


figure(1)

pomaga tworzyć wiele okien z wykresami, pierwsze
okno z wykresem uaktywnione

axis([xmin max ymin max]) przeskalowanie wykresu ręcznie (1 argument w formie

wektorów 4 wartości)

axis(‘auto’)

autoskalowanie

axis(‘equal’)

oś x i y ma taki sam zakres min max

axis(‘square’)

to samo, co equal + dodatkowo wyświetlane wartości z x
i y będą takie same

Inne parametry wykresu:


grid on

włącza siatkę

grid off

wyłącza (samo grid przełącza)

xlabel(‘...’)

etykieta osi x

ylabel(‘...’)

etykieta osi y

title(‘...’) tytuł wykresu
semilogx oś x w skali logarytmicznej
semilogy oś y w skali logarytmicznej
loglog

obie osie w skali logarytmicznej

bar

kreśli wykres słupkowy

polar(r, k)

kreśli wykres biegunowy

subplot(il_wierszy, il_kolumn, nr_wykresu) umieszcza w jednym oknie kilka

wykresów


subplot(2, 1, 1)

I-szy wykres

plot(x, y)
subplot(2, 1, 2)

II-gi wykres

bar(x)

background image

Inżynierskie pakiety oprogramowania (CAD/CAM)
dr M. Pluciński
-----------------------------------------------------------------------------------------------------------------

Created by Maya

7

x=linspace(min, max, il_pkt)

zwróci wektor x, w którym pierwsza i ostatnia
wartość, to będzie min i max, pozostałe będą
równomiernie rozłożone

x=logspace(m, max, il_pkt)

dokonuje podziału przedziału min max w skali
logarytmicznej



Przykład:

Narysować wykres funkcji:

)

1

(

2

1

1

)

(

+

+

=

x

e

x

y

]

10

,

0

[

x

Spróbkowanie x-ów:

x=0: 0.1: 10;

lub:

x=linspace(0, 10, 1000)

y=1./(1+ex(-(x.^2+1)));
plot(x,

y)




Wyszukiwarka

Podobne podstrony:
IPO w2
IPO w2
Psycholgia wychowawcza W2
SP dzienni w2
w2 klasy(1)
W2 Chemiczne skladniki komorki
OK W2 System informacyjny i informatyczny
W2 6
Algebra w2
W2 Uproszczone formy rachunkowości
W2 i W3
ulog w2
UC W2
w2 podsumowanie

więcej podobnych podstron