+ All Categories
Home > Documents > MATLAB vytváření funkcí, grafika

MATLAB vytváření funkcí, grafika

Date post: 10-Jan-2016
Category:
Upload: kare
View: 53 times
Download: 0 times
Share this document with a friend
Description:
MATLAB vytváření funkcí, grafika. MATLAB : vytváření funkcí. Vytváří se v okně Editoru: spustí se z hlavního menu, File, New, M-file okno Editoru obsahuje vlastní menu pro práci s funkcí p ři lad ění funkce lze pou žít krokovač (Debugger). Struktura funkce:. - PowerPoint PPT Presentation
18
MATLAB MATLAB vytváření funkcí, grafika vytváření funkcí, grafika
Transcript
Page 1: MATLAB vytváření funkcí, grafika

MATLABMATLABvytváření funkcí, grafikavytváření funkcí, grafika

Page 2: MATLAB vytváření funkcí, grafika

MATLABMATLAB : vytváření funkcí: vytváření funkcí

Vytváří se v okně Editoru:

spustí se z hlavního menu, File, New, M-file okno Editoru obsahuje vlastní menu pro práci s funkcí při ladění funkce lze použít krokovač (Debugger)

functionfunction [[vystupvystup]=]=jmenojmeno((vstupvstup)) příkazypříkazy

Struktura funkce:

oddělovač vstupů a výstupů je čárka komentář začíná % první komentář se zobrazí jako nápověda, help jmeno

Page 3: MATLAB vytváření funkcí, grafika

MATLABMATLAB : vytváření funkcí: vytváření funkcí

Sestavte funkci pro výpočet délky řemenice mezi dvěma koly.

d1 … průměr prvního kola d2 … průměr druhého kola d … vzdálenost os kol

dd11 dd22dd

Page 4: MATLAB vytváření funkcí, grafika

function [l]=Remen(d1,d2,d) % Delka remenice mezi dvema koly % [l]=Remen(d1,d2,d); % l ... delka remenice % d1 ... prumer prvniho kola % d2 ... prumer druheho kola (d1>=d2)% d ... vzdalenost os kol r1=d1/2; r2=d2/2; % vypocet polomeru obou kol % delka rovneho useku remenice dle Pythagora: lsikmo=sqrt(d^2-(r1-r2)^2);% uhel mezi rovnym usekem remenice a spojnici os kol: phi=asin((r1-r2)/d); omega1=pi+2*phi; % stredovy uhel na prvnim kole omega2=pi-2*phi; % stredovy uhel na druhem kole l1=omega1*r1; % delka oblouku remenice na prvnim kole l2=omega2*r2; % delka oblouku remernice na druhem kole l=l1+l2+2*lsikmo; % uz je to tady

Page 5: MATLAB vytváření funkcí, grafika

MATLABMATLAB : : vytvvytváření funkcíáření funkcí

Krokování nastavuje Debug v okně Editoru:

nastaví se zastavení programu (Set/Clear Breakpoint) po spuštění se program zastaví na zvolené řádce Command Window se přepne do krokovacího režimu ( K>> ) lze vypisovat hodnoty proměnných krokování F10 / F11 / … (vyzkoušejte)

zastavení programu pomocí podmínky (Conditional Breakpoint) zastavení při chybě, varování, NaN, Inf

Page 6: MATLAB vytváření funkcí, grafika

MATLABMATLAB : vytváření funkcí: vytváření funkcí

function c=prepona(a,b)% Vypocet prepony

c=sqrt(a^2+b^2);

Příkaz input: prom = input( vysvětlující text )

% Hlavni program (skript)% Dataa=input(’prvni odvesna=’);b=input(’druha odvesna=’);

% volani funkcec=prepona(a,b)

Page 7: MATLAB vytváření funkcí, grafika

MATLABMATLAB : vytváření funkcí: vytváření funkcí

function v=podil(x,y)function v=podil(x,y)if x~=0if x~=0 vv = y/x;= y/x;endend

Příklady na If analogické jako ve VB:

function s=test(a)function s=test(a)if rem(a,2)==0if rem(a,2)==0 s=’Sude’;s=’Sude’;elseelse s=’Liche’;s=’Liche’;eendnd

Page 8: MATLAB vytváření funkcí, grafika

MATLABMATLAB : vytváření funkcí: vytváření funkcí

function d=dan(prijem)function d=dan(prijem)

if prijem<=91440if prijem<=91440 d = prijem*0.15;d = prijem*0.15;

elseif prijem<=183000elseif prijem<=183000 d = 13716+((prijem-91440)*0.2);d = 13716+((prijem-91440)*0.2);

elseif prijem<=274200elseif prijem<=274200 d = 32028+((prijem-183000)*0.25);d = 32028+((prijem-183000)*0.25);

elseif prijem<=822600elseif prijem<=822600 d = 54828+((prijem-274200)*0.32);d = 54828+((prijem-274200)*0.32);elseelse d = 230316+((prijem-822600)*0.4);d = 230316+((prijem-822600)*0.4);endend

Page 9: MATLAB vytváření funkcí, grafika

MATLABMATLAB : vytváření funkcí: vytváření funkcí

function f=fakt(n)function f=fakt(n)

f=1;f=1;for i=1:n for i=1:n f=f*i;f=f*i;endend

Příklady na For analogické jako ve VB:

Page 10: MATLAB vytváření funkcí, grafika

MATLABMATLAB : vytváření funkcí: vytváření funkcí

function e=euler(epss)function e=euler(epss)

e=1; f=1; i=1; clen=1;e=1; f=1; i=1; clen=1;while clen>=epsswhile clen>=epss f = f*i;f = f*i; clen = 1/f;clen = 1/f; e = e + clen;e = e + clen; i = i+1;i = i+1;endend

Příklady na While analogické jako ve VB na Do:

Page 11: MATLAB vytváření funkcí, grafika

MATLABMATLAB : : 2D grafika2D grafika

Příkaz plot: plot(x,y,’l’)

x … x-ové souřadnice, y … y-ové souřadnice, l … barva, symbol otevře se grafické okno Figure s grafem vyzkoušejte help plot

grid … přidá pomocnou mřížku axis([xmin,xmax,ymin,ymax]) … změna rozsahu nastavení xlabel(’text’), ylabel(’text’) … popisy os text(x,y,’text’) … vložení textu do bodu (x,y) gtext(’text’) … vložení textu do bodu kliknutí myší title(’text’) … nadpis grafu hold on … nakreslený graf nebude vymazaná při dalším kreslení … vypne hold off

Page 12: MATLAB vytváření funkcí, grafika

MATLABMATLAB : : 2D grafika2D grafika

Znázorněte funkce y1 = ex, y2 = e2x, y3 = ex/2 na intervalu <-1, 1> s krokem h=0.1.

clear all; close all % mazání proměnných, graf. okena=-1; b=1; h=0.1; % meze intervalu a krokx=a:h:b; x=x';     y1=exp(x); y2=exp(2*x); y3=exp(x/2);     plot(x,[y1 y2 y3])    % graficka vylepseni    grid   % mrizka    axis([-1 1 0 10])    % rozsah nastaveníxlabel('x'), ylabel('f(x)'), title('Exponencialni funkce')       plot(x,y1)       figure(1) % nove okno pro grafiku    plot(x,y2,'r.')    % styl zobrazeni    hold on   % drzeni okna    plot(x,y1,'b:')    % styl zobrazeni

Page 13: MATLAB vytváření funkcí, grafika

MATLABMATLAB : : 33DD grafika grafika

Zobrazení ploch a prostorových křivek:

mesh(x,y,z), plot3(x,y,z)

meshc, surf, surfc, surfl, surface, contour …

x, y, z … x-ové, y-ové, z-ové souřadnice

meshgrid … vygeneruje souřadnice bodů surface … vytváří objekt, který lze dále upravovat contour … průmět do roviny x,y vytvoří ”vrstevnice” colormap, colorbar … nastavení barev, kombinuje se červená-zelená-modrá v rozsahu <0;1>

Page 14: MATLAB vytváření funkcí, grafika

MATLABMATLAB : : 3D grafika3D grafika

[x,y]=meshgrid(-2:.1:2); % vytvoreni sitez=-x.*exp(-x.^2-y.^2); % definice funkce plot3(x,y,z) % nejjednodussi zobrazeni  % zobrazeni v barvach  mesh(x,y,z), title('graf fce'), xlabel('x'), ylabel('y')colormap([0 0 1]) % změna barevne skaly, modra

figure(2), meshc(x,y,z) % navic prumet do roviny x,y  figure(3), surf(x,y,z) % povrch, vypada jako pevne teleso surfc(x,y,z) % a jeste prida prumet do roviny x,y surfl(x,y,z) % nasvetleni objektu, default 45 stupnu s=[80,10]; surfl(x,y,z,s) % vlastni nasvetleni, s=[azimut, elevace]  % lze vtvorit surface jako objekt a potom s nim pracovat  s1=surface(x,y,z); get(s1)

% prumet do roviny  contour(x,y,z)

Page 15: MATLAB vytváření funkcí, grafika

MATLABMATLAB : grafický : grafický objektobjekt

Grafické okno Figure je objekt gcf (číslo aktuálního grafického okna).

obecný příkaz pro práci s objektem

název = příkaz(vlastnost,hodnota) např. aaa=figure(1)

nastavení vlastnosti objektu

set(objekt,vlastnost,hodnota)

výpis vlastností objektu

get(objekt)

Page 16: MATLAB vytváření funkcí, grafika

MATLABMATLAB : grafický : grafický objektobjekt

% Definice umístení grafického okna a jeho vlastností figure; % otevreni okna % pozice okna set(gcf,'Units','Normal','Position',[0.4,0.5,0.5,0.3]) % pozice souradneho systemu s1=axes('Position',[0.1,0.1,0.8,0.7])plot(sin(0:pi/10:2*pi)) % graf fce % zjisti vlastnosti grafickeho okna get(gcf) % zjisti vlastnosti grafu v ramci okna get(s1) % Vybrane vlastnosti objektu s1 a jejich prednastaveni % Color [x y z] barva plochy grafu set(s1,'Color',[1 0 0]) % cervena set(s1,'Color',[0 1 0]) % zelena set(s1,'Color',[0 0 1]) % modra

… pokračuje …

Page 17: MATLAB vytváření funkcí, grafika

MATLABMATLAB : grafický : grafický objektobjekt

… pokračování … % Box on/off obrys grafu set(s1,'Box','off')set(s1,'Box','on')

% Dalsi, napr. pro popis grafu % FontName 'jmeno', FontSize [velikost], % LineWidth [velikost], NextPlot 'replace' % Visible on/off viditelnost grafu % XColor, YColor, ZColor barva os, vztahuje se i na grid % Nelze menit barvu grafu, je to jiny objekt!!!

Page 18: MATLAB vytváření funkcí, grafika

MATLABMATLAB : grafický : grafický objektobjekt

Nastavení více grafických polí v jednom okně: subplot

% a) 2 grafy pod sebou   subplot(211), plot(sin(0:pi/10:2*pi))   subplot(212), plot(cos(0:pi/10:2*pi))% b) 2 grafy vedle sebe   figure;   subplot(121), plot(sin(0:pi/10:2*pi))    subplot(122), plot(cos(0:pi/10:2*pi))% c) 4 grafy   figure;   subplot(221), plot(sin(0:pi/10:2*pi))    subplot(222), plot(cos(0:pi/10:2*pi))    subplot(223), plot(2*sin(0:pi/10:2*pi))   subplot(224), plot(2*cos(0:pi/10:2*pi))% d) 3 g. spodni vetsi   figure;   subplot(221), plot(sin(0:pi/10:2*pi))    subplot(222), plot(cos(0:pi/10:2*pi))    subplot(212), plot(2*cos(0:pi/10:2*pi))


Recommended