bod.x = 0;
bod.y = 0;
bod = setfield(bod, 'x', 0);
x = getfield(bod, 'x');
x = bod.x;
% lze i pres promennou
polozka = 'x';
x = bod.(polozka);
% struktury jsou dvourozměrná pole, muzeme tedy provest
bod(2).x = 1;
bod = setfield(bod, {2}, 'x', 0);
% konstrukce struct
bod = struct('x',10,'y',5);
bod = struct('x',{10,11},'y',{5,6});
% smazani polozky
bod = rmfield(bod, 'x');
% pozor
bod = struct('x',{10,11},'y',{5,6});
>> sum(bod.x)
ans =
10
>> sum([bod.x])
ans =
21
% navic {} vytvori pole bunek
>> {bod.x}
ans =
[10] [11]
classdef bod
%BOD priklad jednoduche tridy
% verejne vlastnosti
properties
x;
y;
end
% privatni vlastnosti
properties (Access=private)
barva;
end
methods
% konstruktor
function objekt=bod(x, y)
objekt.x = x;
objekt.y = y;
end
function barva = getBarva(objekt)
barva = objekt.barva;
end
function objekt = setBarva(objekt, barva)
objekt.barva = barva;
end
end
end
% pouziti
b = bod(1, 1);
b = b.setBarva('#ffffff');
b = setBarva('#ffffff')
b.getBarva();
getBarva(b);
% velice zajimave
properties(GetAccess = 'public', SetAccess = 'private')
% public read access, but private write access.
end
properties(GetAccess = 'private', SetAccess = 'private')
% private read and write access
end
properties(Constant = true)
% constants
end
Třídy je možné uložit do adresáře @class
, kde class
je nazev tridy. Metody lze zapisovat jako samostatne soubory. Slozka private
pro soukromé metody.
% dedicnost
classdef classname < superclass
% vicenasobna dedicnost
classdef classname < super1 & super2 & super3
Obecné, třídy v Matlabu by měli implementovat běžné metody jako napřík display
, metody pro indexování, přetypování a další.
Vytvořte třídu reprezentující graf (která má vlastnosti počet uzlů, počet hran a příslušné metody). Graf bude možné vytvořit z logické matice (představující matici sousednosti). Pro uzly grafu použijte struktury nebo třídy (volba je na Vás). Napište metodu pocet_komponent
, která zjistí počet komponent v grafu. Pro testování použijte matici obsahující 11 uzlů a 4 komponenty..
Vytvořte funkci pocet = pocet_komponent(M)
, která pro zadanou logickou matici M
zjistí počet komponent. Při této implementaci nepoužívejte třídy ani datové struktury. Ověřte rychlost Vaší implementací (Úkol 1 a 2) pomocí metod tic()
a toc()
.
© Martin Trnečka