Podstawowe wiadomosci o programie SciLab wykresy

background image

Fizyka Komputerowa

SciLab – podstawy

1

© Andrzej Brozi, Instytut Fizyki Politechniki Łódzkiej

Podstawowe wiadomości o programie SciLab – wykresy

1 Wykresy 2D (dwuwymiarowe)

1.1

Podstawowym poleceniem do sporządzania wykresów dwuwymiarowych (płaskich) jest plot2d
polecenie to było już stosowane w wydrukowanych wcześniej skryptach przykładowych.

1.1.1 Składnia minimum: plot2d(y) – w takiej postaci dostajemy wykres wartości znajdujących się w

wektorze y, na osi x zostaną umieszczone numery kolejnych wartości y. Jeśli y jest macierzą mającą n
kolumn, to otrzymamy n wykresów kolejnych kolumn.

1.1.2 plot2d(x,y)x i y są wektorami, wynikiem jest wykres punktów o współrzędnych (x,y) branych

kolejno z obu wektorów. Oczywiście oba wektory muszą mieć jednakowe długości (ale nie jest istotne
czy są wierszowe czy kolumnowe). Jeśli x jest wektorem kolumnowym, a y jest macierzą (o tej samej co
x liczbie wierszy) to otrzymamy tyle różnych wykresów ile macierz y ma kolumn – wszystkie one będą
wykreślone względem wartości x. Jeśli i x i y są macierzami (oczywiście muszą mieć jednakowe
rozmiary) to dostaniemy tyle wykresów ile macierze x i y mają kolumn.

1.1.3 Składnia ogólna (nowa): plot2d(x,y,<opcjonalne argumenty>) – dobierając odpowiednio

opcjonalne argumenty (w dowolnej kolejności) możemy wpływać na wygląd wykresu. Pojedyncze
wyrażenie przypisujące wartość argumentowi opcjonalnemu ma postać: słowo kluczowe =
'wartość
'.

1.1.4 Składnia ogólna (stara): plot2d([logflag],x,y,[style,strf,leg,rect,nax])
1.1.5 Słowa kluczowe:

1.1.5.1

style – (występuje zarówno w nowej jak i starej składni) wektor o długości równej liczbie
krzywych (czyli równej liczbie kolumn macierzy danych), każdy element odpowiada kolejnej
krzywej (w kolejności kreślenia). Jeżeli wartość jest liczbą dodatnią to kreślona jest aktualnie
wybrana linia (tzn. ciągła lub przerywana) o kolorze odpowiadającym wartości. Jeżeli jest liczbą
ujemną (lub zerem) to rysowany jest symbol o numerze abs(wartość). W szczególnym przypadku
jeśli wykreślana ma być tylko jedna krzywa, style może być wektorem dwuelementowym,
którego pierwszy składnik ma znaczenie opisane powyżej, a drugi przyjmuje wartość z zakresu
1–6 i oznacza położenie opisu tej krzywej (opisy znajdują się pod wykresem, w dwóch
kolumnach, numerowane są kolejno kolumnami – 1 oznacza pozycję „górną-lewą”, 2 – „dolną-
lewą”, ..., 6 – „dolną-prawą”). Taka opcja jest przydatna gdy na jednym wykresie rysuje się
większą liczbę krzywych za pomocą osobnych komend plot2d (takie postępowanie może być
konieczne gdy chcemy sporządzić wykresy kilku krzywych, z których każda opisana jest inną
liczbą punktów). Jeżeli wykreślanych jest więcej krzywych, a nie podano wektora style,
kolejnym krzywym zostaną przypisane kolejne kolory. Oznaczenia kolorów: 1 – czarny, 2
niebieski, 3 – zielony (dość jasny ale widoczny na ekranie), 4 – jasnoniebieski, 5 – czerwony, 6
różowy, 7 – czerwony, 8 – biały, 9 – granatowy, 10 – granatowy (nieco jaśniejszy), 11
granatowy (jeszcze trochę jaśniejszy),... W „helpach” (pod hasłem color_list) można znaleźć
tabelkę z nazwami kolorów i odpowiadającymi im wartościami RGB. Można też wykorzystać
polecenie: x=1:6; y=rand(6,5); xset('thickness',6); plot2d(x,[y],
style=[1,2,3,4,5,6],leg='1@2@3@4@5@6')
– w wyniku dostaniemy 6 wykresów w
kolorach o numerach zawartych w wektorze style i z opisem. Polecenie xset spowodowało
zmianę grubości kreślonych linii (niestety wszystkich – tzn. osi i ramki też) – będzie o nim dalej.
Innym sposobem jest wydanie polecenia xget("nazwa koloru"): np. xget("white")
zwraca 32 (co nie zaprzecza podanej wyżej informacji, że kolorowi białemu odpowiada wartość 8
– to też jest kolor biały).

1.1.5.2

rect – (występuje zarówno w nowej jak i starej składni) wektor czteroelementowy określający
zasięg osi: [xmin,ymin,xmax,ymax]. Ma znaczenie tylko gdy drugi element strf wynosi
1, 3 lub 5.

1.1.5.3

logflag – (występuje zarówno w nowej jak i starej składni) łańcuch dwuelementowy, pierwszy
znak dotyczy osi x, drugi – osi y, każdy może przyjąć wartość "n" („normalna” – równomierna)
lub "l" („logarytmiczna”). Np. ["nn"] – obie osie równomierne, ["nl"] – oś x równomierna,

background image

Fizyka Komputerowa

SciLab – podstawy

2

© Andrzej Brozi, Instytut Fizyki Politechniki Łódzkiej

y logarytmiczna, itd..

1.1.5.4

frameflag – (odpowiada drugiemu elementowi strf ze starej składni) przyjmuje wartości
całkowite od 0 do 8 – decyduje o sposobie wyznaczenia zakresu osi współrzędnych. W
szczególności wartość 0 powoduje wykorzystanie bez zmian poprzedniej skali (albo skali
domyślnej) – części nowotworzonego wykresu mogą nie być widoczne (w szczególnych
przypadkach niewidoczna może być nawet cała krzywa). Wartość 1 powoduje wykorzystanie
danych z parametru rect. Wartość 8 powoduje wyznaczenie zakresu wykresu na podstawie
minimalnych i maksymalnych wartości współrzędnych oraz odpowiednie przeskalowanie
wcześniej wykreślonych wykresów.

1.1.5.5

axesflag – (odpowiada trzeciemu elementowi strf ze starej składni) przyjmuje wartości
całkowite od 0 do 5 – decyduje o wykreśleniu ramki i osi: 0 – nie rysuje się nic, 1 – rysowane są
osie (y po lewej), 2 – ramka dookoła, 3 – osie (y po prawej), 4 – osie (przecinają się po środku), 5
– osie (przecinają sę w punkcie (0,0) , może nie być ich widać na wykresie).

1.1.5.6

leg – (występuje zarówno w nowej jak i starej składni) łańcuch (jeden) opisów krzywych:
"pierwszy@drugi@trzeci...". Ma znaczenie tylko gdy pierwszym elementem strf jest 1. W
nowej składni dodatkowo można wykorzystać polecenie legends.

1.1.5.6.1 legends – (występuje tylko w nowej składni), składnia polecenia:

legends(strings,style [,opt, with_box]).

1.1.5.6.1.1

Parametr strings – wektor łańcuchów (opisy poszczególnych krzywych).

1.1.5.6.1.2

Parametr style – wierszowy wyktor liczb całkowitych (analogicznie jak parametr
style w poleceniu plot2d) albo macierz liczb całkowitych o rozmiarze 2×n, element
style(1,k) zawiera styl wykresu k-tej krzywej, a style(2,k) zawiera styl linii
(gdy dodatni) lub kolor markera (gdy ujemny).

1.1.5.6.1.3

Parametr opt – określa umiejscowienie legend (opisów krzywych): 1 (lub "ur") –
górny prawy narożnik, 2 (lub "ul") – górny lewy, 3 (lub "ll") – dolny lewy, 4 (lub "lr")
– dolny prawy, wartość domyślna: 5 (lub "?") – umieszczenie interaktywne za pomocą
myszy. Ta ostatnia wartość powoduje zatrzymanie kreślenia po narysowaniu legendy i
oczekiwanie aż użytkownik kliknie na legendzie i przeciągnie ją za pomocą myszy w
odpowiednie (według włąsnego uznania) miejsce. Jest to trochę niewygodne jeśli
chcemy sporządzić kilka(naście) wykresów – bo po każdym wykresie działanie
programu będzie wstrzymane w oczekiwaniu na umiejscowienie legendy.

1.1.5.6.1.4

Parametr with_box – przyjmuje wartości logiczne (domyślnie %t) – decyduje o tym
czy wokół legendy rysowana jest ramka czy nie.

1.1.5.7

nax – (występuje zarówno w nowej jak i starej składni) wektor czteroelementowy określający
liczbę podziałów osi [nx,Nx,ny,Ny] (N – podziały „główne”, n – „podpodziały”). W starej
składni ma znaczenie tylko gdy trzeci element strf wynosi 1, w nowej – tylko gdy axesflag
wynosi 1.

1.1.5.8

strf – (występuje tylko w starej składni) łańcuch trzyelementowy o wartości domyślnej '081'.
Elementy:

1.1.5.8.1 element pierwszy: przyjmuje wartości 0 lub 1 – opisy nie są lub są wyświetlane.
1.1.5.8.2 element drugi: (w nowej składni: frameflag) przyjmuje wartości całkowite od 0 do 8

decyduje o sposobie wyznaczenia zakresu osi współrzędnych. W szczególności wartość 0
powoduje wykorzystanie bez zmian poprzedniej skali – części nowotworzonego wykresu
mogą nie być widoczne (w szczególnych przypadkach niewidoczna może być nawet cała
krzywa). Domyślna wartość 8 powoduje wyznaczenie zakresu wykresu na podstawie
minimalnych i maksymalnych wartości współrzędnych oraz odpowiednie przeskalowanie
wcześniej wykreślonych wykresów.

1.1.5.8.3 element trzeci: (w nowej składni: axesflag) przyjmuje wartości całkowite od 0 do 5

decyduje o wykreśleniu ramki i osi: 0 – nie rysuje się nic, 1 – rysowane są osie (y po lewej), 2
– ramka dookoła, 3 – osie (y po prawej), 4 – osie (przecinają się po środku), 5 – osie
(przecinają sę w punkcie (0,0) , może nie być ich widać na wykresie).

1.1.5.9

1.2

Polecenie fplot2d

background image

Fizyka Komputerowa

SciLab – podstawy

3

© Andrzej Brozi, Instytut Fizyki Politechniki Łódzkiej

Polecenie to służy do sporządzania wykresów funkcji (tzn. funkcji zdefiniowanych w Scilabie jako funkcje,
w przeciwieństwie do polecenia plot2d, któremu było tak na prawdę obojętne co wykreśla, aby tylko
wartości rzędnych i odciętych były podane w odpowiednich wykresach). Wartości funkcji dla
poszczególnych argumentów są obliczone za pomocą polecenia feval (oznacza to, że będzie ono działać
nawet jeśli nie zadbamy o to aby funkcja poprawnie obsługiwała argumenty będące macierzami) i łączone
odcinkami prostymi.
Składnia nowa:

fplot2d(xr,f,<opt_args>)

Składnia stara:

fplot2d(xr,f,[style,strf,leg,rect,nax])

1.2.1 Argumenty polecenia;

1.2.1.1

xr – wektor (zawiera wartości argumentu funkcji, dla których ma zostać sporządzony wykres).

1.2.1.2

f – nazwa funkcji (aktualnie zdefiniowanej w Scilabie).

1.2.1.3

opt_args – argumenty opcjonalne – identyczne jak w poleceniu plot2d.

1.3

Menu edycji okna graficznego
Czasem może być co najmniej trudno znaleźć w „helpach” poszukiwaną cechę wykresu (np. krój pisma,
rozmiar punktowy, grubość czy kolor linii). Pomocne w taiej sytuacji może być menu edycyjne okna
graficznego (występuje poczynając od wersji 3.0). Jego działanie jest zbliżone do podobnego menu znanego
z Matlaba. Umożliwia zmianę położenia osi (prawo / lewo), rozmiarów i kroju czcionek (nie tylko
opisujących osie ale również tytułu, ewentualnej legendy itp), kolorów (tła, osi, napisów). Niestety
wprowadzone zmiany przepadają wraz z zamknięciem okna, jednak jeśli zależy nam na wyglądzie ilustracji,
którą mamy np. gdzieś wkopiować rozwiązanie takie jest wystarczające.

1.4

Inne polecenia

1.4.1 subplot(n,m,p) – dzieli aktualne okno na n wierszy i m kolumn i wybiera „podokno” numer p

(numer p jest liczony kolejno wierszami poczynając od górnego-lewego, które ma numer 1) jako aktualne
do wykonania wykresu. Po poleceniu tym następuje dowolna komenda „produkująca” jakikolwiek
wykres, po czym można wybrać kolejne okno i wykonać kolejny wykres.

1.4.2 plot – przestarzałe, opis można znaleźć w „helpach”.
1.4.3 plot2d1 – przestarzałe, wykresy logarytmiczne, opis w „helpach”.
1.4.4 plot2d2 – wykres, w którym w kolejnych przedziałach wartości są stałe.
1.4.5 plot2d3 – wykres słupkowy.
1.4.6 plot2d4 – poszczególne fragmenty linii (łączące kolejne punkty) są strzałkami.

2 Zaawansowane polecenia dotyczące parametrów wyświetlania grafiki

2.1

Polecenie xget() – służy do sprawdzania aktualnie obowiązujących parametrów (argumenty identyczne
jak dla polecenia xset() poniżej.

2.2

Polecenie xset() – służy do ustawiania (zmieniania) ogólnych parametrów grafiki (szczegóły można
znaleźć wydając polecenie help xset). Oto jego niektóre parametry:

2.2.1 xset("auto clear","on") – wartość domyślna "off" = przy kreśleniu kolejnego wykresu

dotychczasowa zawartość okna nie jest usuwana.

2.2.2 xset("background",wartość) – ustala kolor tła.
2.2.3 xset("color",wartość) – ustala kolor rysowania, wartość jest z przedziału (1,biały)
2.2.4 xset("default") – przywraca wartości domyślne (pożyteczne zwłaszcza gdy „eksperymento-

waliśmy” z ustawieniami i nie wiemy jak wrócić do jakichś rozsądnych wartości).

2.2.5 xset("font",nazwa,wielkość) – jak w opisie.
2.2.6 xset("font size",wielkość) – jak w opisie.
2.2.7 xset("fpf",łańcuch) – skrót od „floating point format”, składnia łańcucha jak w C.
2.2.8 xset("line style",wartość) – styl aktualnej linii: 1 – linia ciągła, wartości większe od 1 – linie

przerywane. Wartości: 1, 2, 4, 5, 7 – linie ciągłe, 3 – linia przerywana (jednakowe odcinki), 6, 8, 9 – „oś
symetrii” (dłuższa kreska i dwie krótsze).

2.2.9 xset("mark",rodzaj,wielkość) – rodzaj i wielkość znacznika. Rodzaje znaczników można

obejrzeć wydając polecenie xset() – pojawia się wówczas okno dialogowe, którego jedną z pozycji

background image

Fizyka Komputerowa

SciLab – podstawy

4

© Andrzej Brozi, Instytut Fizyki Politechniki Łódzkiej

jest „markid”, niestety nie widać w nim liczb przypisanych do poszczególnych znaczników. Aby
sprawdzić jaki jest numer (i wielkość) aktualnego znacznika należy wydać polecenie
xget("marker"). „Testy” pokazują, że: 0 – kropka, 1 – plus, 2 – x, 3 – *, 4 – klepsydra wypełniona
(diamond fill), 5 – klepsydra (diamond), 6 – trójkąt (wierzchołkiem w górę), 7 – trójkąt (wierzchołkiem
w dół), 8 – trefl, 9 – kółko.

2.2.10 xset("mark size",wielkość) – wielkość znacznika.
2.2.11 xset("thickness",wartość) – grubość linii w pikselach.
2.2.12 xset("window",numer okna) – czyni okno numer okna aktulanym, a jeśli okna o takim nuemrze

nie ma to je tworzy.

3 Wykresy 3D (trójwymiarowe – powierzchni będącej wartością funkcji dwóch zmiennych)

3.1

Podstawowa postać polecenia do sporządzania wykresów trójwymiarowych – plot3d.

Jego działanie (i wiele jego parametrów) jest analogiczne jak w przypadku plot2d. Więcej szczegółów

zainteresowani mogą sobie znaleźć w „helpach”. Polecenie to musi otrzymać co najmniej trzy argumenty:
wartości x i wartości y muszą być wektorami (o różnych lub równych długościach) oraz wartości z, które
muszą zostać podane jako macierz o rozmiarze n

x

@ n

y

(gdzie n

x

i n

y

są długościami wektorów x i y):

plot3d(x,y,z)

Taka postać wywołania funkcji jest znacznie wygodniejsza niż sposób stosowany w Matlabie, gdzie

współrzędne x i y również musiały mieć postać odpowiednich macierzy.

Należy jednak pamiętać, że macierz z musi zawierać wartości dla wszystkich kombinacji współrzędnych x i

y, zatem jeśli będziemy chcieli zrobić wykres funkcji to i tak swego rodzaju „zabawy” z wektorami
współrzędnych raczej nie unikniemy.
Przykład:

Załóżmy, że zdefiniowaliśmy funkcję f(x,y) (i to zdefiniowaliśmy ją tak aby prawidłowo działała również

w sytuacji gdy jej argumenty będą macierzami):

deff('[z]=f(x,y)','z=x.^2+y.^2');

Mamy też wektory wartości x i y, zawierające wartości wespółrzędnych, dla których chcemy otrzymać

wykres:

x = linspace(0,10,10); y = linspace(0,20,20);

Zauważmy, że są to wektory wierszowe o długościach odpowiednio 10 i 20 – potrzebujemy więc

macierzy z o rozmiarze 10×20 (albo 20×10 – zależy jaką wybierzemy kolejność argumentów). Aby wynik
funkcji miał pożądany rozmiar argumenty dostarczone do funkcji muszą też mieć odpowiednie (takie same)
rozmiary. Potrzebujemy więc macierzy zawierającej jednakowe wiersze – wypełnione kolejnymi
wartościami x oraz macierzy mającej jednakowe kolumny wypełnione kolejnymi wartościami y. Możemy
otrzymać je w ten sposób:

xx = x' * ones(y);

yy = ones(x)' * y;

Zilustruję to dodatkowo na macierzach o mniejszych rozmiarach:

x = [1,2]

x =

! 1. 2. !

y = [1,2,3]

y =

! 1. 2. 3. !

xx = x' * ones(y)

background image

Fizyka Komputerowa

SciLab – podstawy

5

© Andrzej Brozi, Instytut Fizyki Politechniki Łódzkiej

xx =

! 1. 1. 1. !

! 2. 2. 2. !

yy = ones(x)' * y

yy =

! 1. 2. 3. !

! 1. 2. 3. !

Jak widać macierz xx zawiera wyłącznie wartości x (narastające w kolejnych kolumnach) zaś macierz yy
zawiera wyłącznie wartości y narastające w kolejnych wierszach. Jeśli więc z każdej z macierzy wybierzemy
element (i,j) to będą one współrzędnymi x i y punktu (i,j) należącego do „danych”.

Jeśli teraz macierze xx i yy podamy jako argumenty dla funkcji f otrzymamy odpowiednią do naszych

celów macierz z:

z = f(xx,yy);

I można będzie sporządzić wykres:

plot3d(x,y,z)

Istnieją też dodatkowe „wersje” polecenia plot3d:

3.2

Polecenie plot3d1

Polecenie to działa analogicznie do plot3d. Różnica polega na tym, że kolor danego elementu

powierzchni zależy od wartości z jaka temu elementowi odpowiada.

3.3

Polecenie plot3d2 i plot3d3

Oba te polecenia przyjmują argumenty wyłącznie w postaci macierzy – macierze te definiują

narożniki płaskich elementów, z których będzie zbudowany wykres powierzchni. Właśnie za pomocą
tych poleceń stworzone są obrazy powierzchni (np. torusy itp.), które można zobaczyć jako po
uruchomieniu programów demonstracyjnych. Nie będziemy się nimi zajmować.

3.4

„Porady praktyczne”

3.4.1 W każdym oknie wykresu 3D znajduje się przycisk umożliwiający obracanie wykresu. Podczas

obracania u dołu okna pojawiają się wartości kątów (nazwanych alpha i theta) odpowiadających

background image

Fizyka Komputerowa

SciLab – podstawy

6

© Andrzej Brozi, Instytut Fizyki Politechniki Łódzkiej

aktualnie wybranemu widokowi.Warto wiedzieć, że wartości te można podać jako argumenty polecenia
plot3d – jeśli zatem dokonamy już wyboru najwłaściwszego ustawienia wykresu możemy
spowodować aby przy wszystkich kolejnych wywołaniach programu wykres od razu był wyświetlany w
wybrany przez nas sposób. Przydaje się to zwłaszcza gdy metodą prób i błędów staramy się uzyskać jak
najlepszy wygląd grafiki.

4 Inne polecenia dotyczące wykreślania funkcji dwóch zmiennych

4.1

Polecenie Matplot

Polecenie to służy do dwuwymiarowego wykreślania wartości macierzy – na podstawie wartości
elementów macierzy obliczane są kolory kwadratów reprezentujących te elementy.

4.1.1 Składnia

Nowa:

Matplot(a,<opt_args>)

Stara:

Matplot(a,[strf,rect,nax])

4.1.2 Argumenty

4.1.2.1

a – macierz liczb rzeczywistych.

4.1.2.2

opt_argsrect, nax, frameflag, axesflag (w starej składni strf) – ich znaczenia są
analogiczne jak w przypadku plot2d.

5 W

6 Wykresy trajektorii w 3 wymiarach

6.1

Polecenie param3d

Polecenie to umożliwia wykreślenie jednej krzywej w trójwymiarowym układzie współrzędnych.

Jako argumenty przyjmuje trzy wektory (oczywiście o jednakowej długości) zawierające współrzędne
kolejnych punktów.

6.2

Polecenie param3d1

To z kolei polecenie różni się od poprzedniego tym, że umożliwia wykreślenie wielu krzywych w tym

samym trójwymiarowym układzie współrzędnych. Dane muszą być podane w postaci trzech macierzy –
każda z macierzy zawiera dane dotyczące jednej współrzędnej, a jej kolejne kolumny odnoszą się do
kolejnych krzywych.

6.3

„Porady praktyczne”

Pojedyncza krzywa wykreślona w trójwymiarowym układzie współrzędnych bardzo często (zwłaszcza

gdy ma bardziej skomplikowany kształt) jest „nieczytelna” (trudno np. określić czy przebiega przed czy za
którąś z osi). Interpretację wykresu bardzo ułatwia narysowanie w tym samym ukłądzie rzutów trajektorii na
płaszczyzny xy, yz i xz, można je uzyskać bardzo prosto:

xset("thickness",3)

param3d(x,y,z)

xset("thickness",1)

param3d1([zeros(x),x,x],[y,zeros(y),y],[z,z,zeros(z)])

W przykładzie powyżej trajektoria jest wykreślona wyraźnie grubszą linią, a jej rzuty linią cienką.

6.4


Wyszukiwarka

Podobne podstrony:
Podstawowe wiadomosci o programie Scilab
Podstawowe wiadomości programowania maszyn cnc
Podstawowe wiadomosci o program Nieznany
podstawowe wiadomosci (1)
akademia cisco ccna semestr 2 podstawowe wiadomosci o routerach i routingu
Podstawy uzytkowania programu LabView
AOL2, Akademia Morska -materiały mechaniczne, szkoła, Mega Szkoła, PODSTAWY KON, Program do obliczeń
A4, Akademia Morska -materiały mechaniczne, szkoła, Mega Szkoła, PODSTAWY KON, Program do obliczeń P
Materialy szkoleniowe podstawowe wiadomosci o zagroze
Podstawy uzytkowania programu LabView
genetyka podstawowe wiadomości, Nauka, biologia, genetyka
tab lam, Akademia Morska -materiały mechaniczne, szkoła, Mega Szkoła, PODSTAWY KON, Program do oblic
0 Podstawy finans w program WSBid 1851
Podstawy obslugi programu TwinCAT System Manager
Islam podstawowe wiadomości i słowniczek

więcej podobnych podstron