13.12.2022 Views

Technická zpráva

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Technická zpráva

Základy programování v MatLabu

Vypracovala: Krystýna Lupínková



Úvod

Tato technická zpráva je součástí výstupu ze semestrální práce z předmětu Základy programování

v MatLabu. Cílem práce bylo vypracovat 4 samostatně zadané a na sebe nenavazující příklady. Každému

příkladu je věnována zvlášť jedna kapitola, která se bude skládat ze 3 podkapitol, a to sice zadání, napsaný

kód (obsah souboru s příponou .m k danému příkladu) a výstupu.

Všechny vypracované úlohy jsou přiloženy a odevzdány spolu s touto zprávou.


Příklad č. 1

Zadání

Napište m-soubor (funkci),kde vstupem bude vektor hodnot X a funkce bude vracet hodnoty základních

číselných charakteristik polohy (aritmetický průměr, dolní a horní kvartil, medián, modus, maximum,

minimum), variability (rozptyl, směrodatná odchylka, variační koeficient, rozpětí, mezikvartilové rozpětí),

tvarové charakteristiky (šikmost, špičatost) a ostatní (počet dat, suma) a budou uloženy ve strukturním

poli (Structure Array).

Funkce dále vykreslí grafy průzkumové analýzy dat (histogram hustoty + teoretická hustota

pravděpodobnosti N(x, s), krabicový graf, empirická distribuční funkce + teoretická distribuční funkce

N(x, s), histogram + jádrový odhad hustoty, normální pravděpodobnostní graf, Q-Q graf s teoretickými

kvantily normálního rozdělení), které budou v jednom grafickém okně.

Kód

function [vysledek]=Lupinkova_1(X)

% hodnoty základních èíselných charakteristik polohy (aritmetický prùmìr,

% dolní a horní kvartil, medián, modus, maximum, minimum), variability (rozptyl,

% smerodatna odchylka, variacni koeficient, rozpeti, mezikvartilove rozpeti),

% tvarové charakteristiky (¹ikmost, ¹pièatost) a ostatní (poèet dat, suma) a budou

% ulo¾eny ve strukturním poli (Structure Array).

% ciselne charakteristiky polohy

vysledek.max=max(X);

vysledek.min=min(X);

vysledek.prumer=mean(X);

vysledek.modus=mode(X);

vysledek.d_kvartil=quantile(X,0.25);

vysledek.h_kvartil=quantile(X,0.75);

vysledek.median=quantile(X,0.5);

% ... variability

vysledek.smerodatna_odchylka=std(X);

vysledek.rozptyl=var(X);

vysledek.variacni_koeficient=std(X)/mean(X);

vysledek.rozpeti=range(X);

vysledek.mezikvartilove_rozpeti=iqr(X);

% tvarove charakteristiky

vysledek.sikmost=skewness(X);

vysledek.spicatost=kurtosis(X);

vysledek.pocet_dat=numel(X);

vysledek.suma=sum(X);

rozmezi=vysledek.min:0.1:vysledek.max;

nbins = ceil(sqrt(numel(X)))*2;

%grafy

figure


%Histogram hustoty + teoretická hustota pravdìpodobnosti

pdf=normpdf(rozmezi,vysledek.prumer,vysledek.smerodatna_odchylka);

subplot(2,3,1),histogram(X,nbins),title('Histogram hustoty + teoreticka hustota

pravdepodobnosti')

hold on

plot(rozmezi,pdf)

legend('histogram','pravdepodobnost','Location','NW')

%krabicový graf

subplot(2,3,2),boxplot(X), title('krabicovy graf')

hold on

plot(rozmezi,pdf)

%empiricka distribucni funkce + teoreticka distribucni funkce

subplot(2,3,3),cdfplot(X),title('Empiricka a teoreticka distribucni funkce')

hold on

cdf=normcdf(rozmezi,vysledek.prumer,vysledek.smerodatna_odchylka);

plot(rozmezi,cdf,'r')

xlabel('X')

ylabel('F(X)')

legend('empiricka','teoreticka','Location','NW')

grid on

%histogram a jádrový odhad hustoty

subplot(2,3,4),histfit(X, nbins,'kernel'),

title('histogram a jadrovy odhad hustoty')

legend('histogram','jadrovy odhad hustoty')

%normální pravedpodobnostni graf

subplot(2,3,5),normplot(X)

title('Normalni pravdepodobnostni graf')

xlabel('Hodnota')

ylabel('Pravdepodobnost')

%Q-Q graf s teoretickými kvantily normálního rozdìlení

subplot(2,3,6), qqplot(X)

title('Q-Q graf s teoretickymi kvantily normalniho rozdeleni')

xlabel('Standartni quantily')

ylabel('Quantily vstupu')

grid on

end


Výstup

data = [1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 9, 9, 10];

Lupinkova_1(data);

ans =

struct with fields:

max: 10

min: 1

prumer: 6.4286

modus: 9

d_kvartil: 4

h_kvartil: 9

median: 7.5000

smerodatna_odchylka: 2.9539

rozptyl: 8.7253

variacni_koeficient: 0.4595

rozpeti: 9

mezikvartilove_rozpeti: 5

sikmost: -0.5666

spicatost: 1.9370

pocet_dat: 14

suma: 90


Příklad č. 2

Zadání

Je dána funkce tabulkou.

Metodou nejmenších čtverců odhadněte polynomy

, pro n = 1, 3, 5. Napište m-soubor

(skript) v MatLabu pro odhad koeficientù metodou nejmenších čtvercù. Využijte cyklus for. Nakreslete

graf pro výše uvedené polynomy a do grafu vyneste body s tabulky.

Kód

%zadani funkce tabulkou

x=[0.1 0.28 0.71 0.91 1.2 1.4];

y=[5.2 1.72 2.33 0.15 -0.48 -0.7];

z=0:0.01:1.5;

%priprava promennych na ulozeni koeficientu a hodnot

koeficienty = zeros(3, 6);

hodnoty = zeros(3, numel(z));

%vypocet koeficientu a hodnot pro stupne 1, 3, 5

for i = 1:1:3

stupen = i*2-1;

koeficienty(i, 1:stupen+1)=polyfit(x,y,stupen);

hodnoty(i, :) = polyval(koeficienty(i, 1:stupen+1), z);

end

%grafy

plot(x, y, 'X', MarkerSize=12, Color='black')

hold on

plot(z, hodnoty(1, :), 'r')

hold on

plot(z, hodnoty(2, :), 'g')

hold on

plot(z, hodnoty(3, :), 'b')

legend('Data','P1(x)','P2(x)','P3(x)')

xlabel('x')

ylabel('y')

grid on


Výstup


Příklad č. 3

Zadání

Vytvořte m-soubor (funkce), která vypoète prùmìr syntetického vlákna (kruhový průřez) v

mikrometrech, když vstupní parametry jsou t [dtex] a ρ [kg/m^3]. Pokud je průměr vlákna vyšší než 10

μm, vypše se text "průměr vlákna je vyšší než 10 mikrometrů", jinak text "průměr vlákna je nižší než 10

mikrometrů". Vyzkoušejte funkci pro PP vlákno (t = 2.2 dtex, ρ = 991 kg{m3 ) a ocel-nerezové vlákno (t =

3.85 dtex, ρ = 8000 kg/m^3 ).,

Kód

function [d] = Lupinkova_3(t, ro)

% vypocet prumeru + prepocet jednotek (tex = 0.1*dtex)

%vypocet prumeru v metrech

d = 2*sqrt(t*0.1)/sqrt(ro*pi*10^6);

%prevod na mikrometry

d = d*10^6;

if d>10

disp("Prumer vlakna je vyssi nez 10 mikrometru");

else

disp("Prumer vlakna je nizsi nez 10 mirkometru");

end

end

Výstup

Pro PP vlákno: d = 16.8124 μm.

Pro ocel-nerezové vlákno: d = 7.8278 μm.


Příklad č. 4

Hodnocena byla stínící účinnost (SE) plošné textilie v závislosti na obsahu vodivé komponenty v

materiálu. x - nezávisle promìnná, obsah vodivé komponenty P [%], y - závisle proměnná, stínící účinnost

SE [dB]. Předpokládejte, že data pocházejí z normálního rozdělení.

Vytvořte m-file (skript), který:

• vykreslí bodový graf průměrných hodnot stínící účinnosti SE na obsahu vodivé komponenty +

95% intervaly spolehlivosti pro střední hodnotu

• do stejného grafu vykreslí model, funkci SE = 14 * P^0.3

• vloží legendu popisující význam bodů a spojité čáry

Kód

% Hodnoty ze zadani

P = [1 3 5 10 15 20 40 60 75];

SE = [13.50 20.30 23.70 29.50 31.90 36.50 40.70 46.20 52.10

13.60 21.10 23.80 28.60 32.50 33.70 41.50 45.00 49.90

12.40 19.70 24.90 29.90 32.40 34.60 39.70 45.80 51.60

12.90 20.50 23.10 29.20 31.90 34.20 42.20 45.20 48.70

12.70 21.20 24.70 27.80 32.90 34.40 42.00 43.60 49.80

13.20 19.90 24.00 28.50 32.00 34.50 42.50 45.10 49.10

12.80 20.30 24.00 29.60 31.10 35.80 42.60 44.90 50.40

12.50 20.30 23.40 28.90 32.80 33.10 43.60 44.00 50.00

13.10 21.10 23.80 28.40 33.30 35.30 40.90 43.30 50.10

13.30 19.50 22.50 28.40 34.20 35.30 40.20 44.10 50.80];

%stredni hodnota a 95% interval spolehlivosti

[muHat,~,muCI,~] = normfit(SE, 0.5);

% funkce SE = 14 * P^0.3

fSE = 14*P.^0.3;

%odchylky

odchylky = muCI(2,:)-muHat;

%graf

plot(P, muHat, 'o', Color='black');

hold on

plot(P, fSE, 'r');

hold on


errorbar(P, muHat, err,'k+');

xlabel('P [%]');

ylabel('SE [dB]');

legend('hodnoty', 'f_SE(P)=14*P^0.3', '95% int. spolehlivosti', 'location', 'SE');

Výstup


Závěr

Během vypracovávání této semestrální práce jsme si vyzkoušeli práci s MatLabem a využili jsme

vědomostí, zkušeností a dovedností ze semestru. Dále jsme si díky této práci uvědomili, že MatLab lze

použít v mnoha úlohám různého typu a v různých oborech. Díky tomu lze říci, že MatLab je, hlavně pro

technicky zaměřené obory, neodmislitelnou součástí a nástrojem, který nám umožňuje poměrně rychle

vypočítat různé hodnoty a graficky vykreslit vložená data.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!