155GIT1 / 9. cvičení: Porovnání verzí

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
 
(Nejsou zobrazeny 3 mezilehlé verze od stejného uživatele.)
Řádek 1: Řádek 1:
 
{{Geoinformatika}}
 
{{Geoinformatika}}
{{Cvičení|155GIT1|9|Grafy funkcí}}
+
{{Cvičení|155GIT1|9|Python}}
  
 
== Náplň cvičení ==
 
== Náplň cvičení ==
  
# grafické okno <code>figure</code>
+
#  
# grafy funkcí <code>plot(), subplot(), polar()</code>
+
#  
  
 
== Ukázky ==
 
== Ukázky ==
  
=== Grafické okno ===
 
 
<source lang=octave>
 
figure    # -> 1
 
figure    # -> 2
 
figure(4) # -> 4
 
</source>
 
 
* Pro zavření všech grafických oken najednou funguje příkaz
 
<source lang=octave>
 
close all
 
</source>
 
 
=== Grafy funkcí ===
 
 
* <code>plot()</code> {{bullet}} [http://geo.fsv.cvut.cz/user/gin/git1/matlab/matlab.pdf#page=94 argumenty]
 
 
<source lang=octave>
 
x = [0:3:360];
 
y = sin(x*pi/180);
 
plot(x, y);
 
%
 
% nove okno
 
figure(2)
 
plot(x, y, 'r+')
 
%
 
% vice grafu najednou
 
figure(3)
 
z = cos(x*pi/180);
 
plot(x, y, '--b', x, z, ':k');
 
</source>
 
 
{{fig|octave-graf-1|<code>plot(x, y, '--b', x, z, ':k')</code>}}
 
 
==== Popisky grafů ====
 
 
<source lang=octave>
 
figure(4)
 
hold on  % zapne kresleni grafu do aktivniho okna bez vymazani predchoziho obsahu
 
plot(x,y,'m');
 
plot(x,z,'b');
 
title('Funkce sinus a cosinus')
 
xlabel('argument ve stupnich')
 
ylabel('funkcni hodnota')
 
xlim([0 360])
 
ylim([-1.2 1.2])
 
box on
 
%
 
% legenda
 
legend('sinus','cosinus','Location','SouthWest')
 
      % prvni argumenty ('sinus','cosinus') jsou polozky legendy
 
      % 'Location' je jedna z vlastnosti objektu legend a bezprostredne po ni nasleduje nastaveni pripustne hodnoty teto vlastnosti ('SouthWest')
 
% V Matlabu lze pouzit i vhodnejsi umisteni legendy (nejmensi kolize s grafem)
 
legend('sinus','cosinus','Location','Best')
 
% popr. zapis, ktery umisti legendu mimo plochu grafu
 
legend('sinus','cosinus',-1)
 
%
 
grid on
 
plot([0 360],[0 0],'k')  % vykresleni osy x plnou cernou carou
 
hold off
 
</source>
 
 
{{fig|octave-graf-4|Graf s popisky}}
 
 
==== Více grafů v jednom okně ====
 
 
<source lang=octave>
 
x = 1:100;
 
figure(5)
 
% prvni graf
 
subplot(2, 2, 1)
 
plot(x, x)
 
% druhy graf
 
subplot(2, 2, 2)
 
plot(x, sqrt(x))
 
% treti graf
 
subplot(2, 2, 3)
 
plot(x, log(x))
 
% ctvrty graf
 
subplot(2, 2, 4)
 
plot(x, x.^2)
 
</source>
 
 
{{fig|octave-graf-2|<code>subplot()</code>}}
 
 
==== Omezení oblasti grafu ====
 
 
<source lang=octave>
 
x = 0:0.1:5;
 
y = exp(x);
 
figure(6)
 
% cely graf
 
subplot(2, 1, 1)
 
plot(x, y)
 
% vysek grafu pro oblast x <1, 2>; y <0, 10>
 
subplot(2, 1, 2)
 
plot(x, y)
 
axis([1,2,0,10])
 
</source>
 
 
{{fig|octave-graf-3|<code>axis()</code>}}
 
 
==== Graf s orientaci os v S-JTSK ====
 
 
Vstupní data: [http://geo102.fsv.cvut.cz/vyuka/155GIT1/data/body.txt body.txt]
 
 
<source lang=octave>
 
% nacteni dat
 
vstup = fopen('body.txt','r');
 
P = fscanf(vstup,'%f',[3 inf]);
 
BYX = P';
 
fclose(vstup);
 
 
% vypocet smerniku
 
stan = [4001 730288.89 1054582.63]; % cb Y X (stanovisko)
 
DY = BYX(:,2) - stan(2);
 
DX = BYX(:,3) - stan(3);
 
sig = atan2(DY,DX);    % v radianech
 
sig = sig*200/pi;
 
% prevod smerniku do intervalu <0,400>
 
for i=1:length(sig)
 
    if sig(i)<0
 
        sig(i)=sig(i)+400;
 
    end
 
end
 
sig  % kontrolni zobrazeni vypoctenych hodnot smerniku
 
 
% kontrolni graf v JTSK
 
figure(7)
 
x = BYX(:,3);
 
y = BYX(:,2);
 
cb = BYX(:,1);
 
plot(-y,-x,'.r',-1*stan(2),-1*stan(3),'.b');
 
for i=1:size(BYX,1)
 
    cislab = num2str(cb(i));      % prevod numericke hodnoty na format string
 
    text(-y(i)+0.4,-x(i),cislab);
 
end
 
cislos = stan(1);
 
text(-1*stan(2),-1*stan(3),num2str(cislos));
 
title('body v JTSK');
 
xlabel('Y'); ylabel('X');
 
%
 
% v Matlabu je mozne i dalsi siroke ovladani vzhledu grafu, napr.:
 
% ----------------------------------------------------------------
 
% nastaveni pozice popisu os pro aktivni osy
 
set(gca,'XAxisLocation','top','YAxisLocation','right');  % gca - vrati identifikator pro objekt aktivnich os
 
%
 
% zapis spravnych numerickych hodnot poradnic na (matlabovske) ose x
 
krokx = 10;  % rozestup poradnic
 
poradnicex = (-1*ceil(max(y)/10)*10) : krokx : (-1*floor(min(y)/10)*10)  % definice okrouhlych hodnot poradnic
 
xlim([poradnicex(1) poradnicex(end)]);
 
set(gca,'XTick',poradnicex);                        % definice rysek poradnic
 
set(gca,'XTickLabel',sprintf('%.0f|',-poradnicex)); % definice popisu rysek poradnic spolu s nastavenim jejich formatu
 
%
 
% zapis spravnych numerickych hodnot poradnic na (matlabovske) ose y
 
kroky = 10;
 
poradnicey = (-1*ceil(max(x)/10)*10) : kroky : (-1*floor(min(x)/10)*10)
 
ylim([poradnicey(1) poradnicey(end)]);
 
set(gca,'YTick',poradnicey);
 
set(gca,'YTickLabel',sprintf('%.0f|',-poradnicey));
 
</source>
 
 
==== Polární graf ====
 
* např. zobrazení polohy satelitu (tzv. Skyplot)
 
 
<source lang=octave>
 
ele = [80 30 10 50];    % elevacni uhel satelitu [°]
 
azi = [10 110 220 330]; % azimut satelitu [°]
 
azi = azi*pi/180;
 
figure(8)
 
polar(pi/2-azi,90-ele,'*');
 
</source>
 
  
 
== Úlohy ==
 
== Úlohy ==
 
 
* [[155GIT1 / 9. cvičení / Příklady|9. cvičení - příklady]]
 
* [[155GIT1 / 9. cvičení / Příklady|9. cvičení - příklady]]
 +
<!-- -->

Aktuální verze z 12. 3. 2020, 13:18