Matlab fórum

Úplná verzia: Vyvojovy diagram programu
Prezeráte si holú variantu vašeho obsahu. Pozrieť si úplnú verziu s príslušným formátováním.
Zdravim mam otazku.
Pripravil som si maly program, ale potrebujem k nemu spravit aj vyvojovy diagram. Ake postupne kroky vypoctu a podmienok robi.
Je niekde nejaky navod ako sa to robi? Nejake predpisane tvary? Dalej mi z cca 5 vzorcov, ktore su rovnake, lisia sa vzdy len jednym cislom. chcem aby nasiel minimalnu hodnotu a potom vypisal spravu aku budem potrebovat.
Ako sa v matlabe hlada min hodnota? Ale tak aby som s nou nepocital dalej, iba mi na zaklade toho ci ta minimalna hodnota bola v prvom, druhom tretom - piatok vzorci vypise urcitu spravu, ktora je pre kazdy vzorec ina, ale chcem aby sa ibjavila vzdy len ta, kde vo vzorci bude najmensia hodnota.
Potom k tomu vyvojovemu grafu - ako by som spravil v nom ze hlada min hodnotu?
Dakujem Miro
Nie celkom sa v tej úlohe orientujem. Skús napísať viac, prípadne sem hoď ten kód.
no mam napriklad taketo vztahy v programe
one=abs(Lz1_Dv1-Lzm_Dvm);
two=abs(Lz2_Dv2-Lzm_Dvm);
three=abs(Lz3_Dv3-Lzm_Dvm);
four=abs(Lz4_Dv4-Lzm_Dvm);
five=abs(Lz5_Dv5-Lzm_Dvm);
six=abs(Lz6_Dv6-Lzm_Dvm);

chcem, aby po prejdeni vypoctu vybralo z tychto 6 vztahov najmensiu hodnotu a vypisalo spravu napr one, two atd.
priklad: Najmensia hodnota bude najdena vo vztahu "one" - potom by som chcel aby vypisalo spravu "one" atd.
ale neviem ako to mam spravit, viem to len velmi primitivne :
if one<two && one<three && one<four && one<five && one<six;
sprava='one';
end
vies mi poradit nieco profesionalnejsie? a ako by som potom vo vyvojomvom grafe nakreslil ze prave halda min. hodnotu zo vztahov?
Dakujem za odpoved
Jasné. Idem na to.
Tak a tu je riešenie v .m kóde


Kód:
%náhodné naplnenie hodnotami
Lz1_Dv1=rand;
Lz2_Dv2=rand;
Lz3_Dv3=rand;
Lz4_Dv4=rand;
Lz5_Dv5=rand;
Lz6_Dv6=rand;
Lzm_Dvm=rand;

%samotné porovnanie
one=abs(Lz1_Dv1-Lzm_Dvm);
two=abs(Lz2_Dv2-Lzm_Dvm);
three=abs(Lz3_Dv3-Lzm_Dvm);
four=abs(Lz4_Dv4-Lzm_Dvm);
five=abs(Lz5_Dv5-Lzm_Dvm);
six=abs(Lz6_Dv6-Lzm_Dvm);

%hľadanie minima
x_name={'one' 'two' 'three' 'four' 'five' 'six'};
x=[one two three four five six];
[min_val pos]=min(x);
disp('Minimálna hodnota je')
min_val

disp('V premennej')
x_name{pos}
waw, super to funguje, ale vobec tomu nechapem Smile
ak mas prosim ta cas, mozes vysvetlit co znamenaju jednotlive vztahy od "%hľadanie minima"?
Aby som popripade to vedel zmodifikovat pokail sa nieco zmeni.
Dakujem velmi za ochotu
Tak tie prvé riadky sú hádam jasné. To som len vygeneroval náhodne čísla, aby som tam niečo mal. Potom nasleduje tvoj kód. A potom ide zas môj. Pozrime sa na to riadok po riadku.

x_name={'one' 'two' 'three' 'four' 'five' 'six'};
Vytvoril som si pole (nie je to terminologicky správne, ale pre naše potreby toto pomenovanie stačí) ktoré má 6 prvkov. Prvky sú typu string a majú svoje poradové čísla. Takže ak si dáš x_name{1}, tak to vráti one. To budeme potrebovať v budúcom výpise.

x=[one two three four five six]
Do vektoru x som vložil všetky hodnoty, ktoré si získal svojim výpočtom.

[min_val pos]=min(x);
Toto je asi kľúčový riadok. Najskôr pravá strana. Je tam použitý príkaz min. Tento príkaz zistí minimálnu hodnotu vo vektore. V tomto prípade x. To presne chceme. Hľadáme minimálnu hodnotu. Túto hodnotu uloží do premennej na ľavej strane do min_val. Funkcia min, ale vie vrátiť dve hodnoty. Jednu už máme. Tou druhou je poradové miesto minimálneho prvku. Takže ak je to na prvom mieste, tak to vrári 1 , ak na treťom 3. Túto informáciu vkladám do premennej pos.

disp('Minimálna hodnota je')
min_val
tieto dva riadky sú len výpis minimálnej hodnoty

disp('V premennej')
x_name{pos}
No a toto je výpis toho kde sa nachádzala minumálna hodnota.

Odporúčam prejsť si to riadok po riadku. Neboj sa zadávať aj do príkazového riadku, aby si to pochopil hlbšie.

Veľa šťastia a sleduj nás na facebooku Wink
TechnicalComputing
Referenčné URL