IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Miroslav Jiránek:4.4.2017 16:32

Ahoj,
jsem studentem VŠ, obor Řízení Procesů, zaměření na automatizační řízení.
Na vysokou školu jsem šel bohužel z gymnázia, atak nemám ještě dostatečně vyvinuté programovací myšlení.
A proč sem vubec píšu? Dostali jsme dokončit úlohu v programu MATLAB, se kterou už dva dny nedokážu pohnout. Našel by se tady nějaký dobrák, který by mi s úlohou pomohl?

zadaní úkolu zní následovně:

155887

program má vypsat četnost čísel v cifře

cetnost cislice 1 = 1
cetnost cislice 5 = 2
cetnost cislice 8 = 2
cetnost cislice 7 = 1

dostali jsme holý základ programu, který vypadá takto(viz. obrázek "ukol.jpg"). našim úkolem je dopsat funkci s názvem "cetnosti".

Pokud se podobné příspěvky sem nehodí, omlouvám se za spam. Pakliže by se zde nenašel nikdo, kdo by s úlohou byl schopný pohnout, neměl by někdo alespoň pár rad odkud se Matlab učit? Na netu jsem našel pouze pár přednášek z vysokých škol, z kterých se toho moc nenaučím. Ideální by pro mě bylo nějaké CZ MATLAB forum, nebo něco podobného.

Za všechny odpovědi předem děkuji!

 
Odpovědět
4.4.2017 16:32
Avatar
Odpovídá na Miroslav Jiránek
Matúš Petrofčík:4.4.2017 17:05

Ahoj, páči sa mi ako si to napísal, konečne sa nejedná o príspevok typu "urobte mi úlohu, mne sa nechce" :)

Matlabu sa však moc nerozumiem, ani mi to netreba, ale napadlo mi pozrieť sa na ich stránky, a majú tam nejaké:

Taktiež by som sa pozrel na youtube, či tam nie sú nejaké užitočné videá. Prípadne ja mám nejakých 700MB videí od učiteľov, ale neviem presne čo všetko sa tam nachádza, môžem ti pozrieť a niekam nahrať to ak chceš.

A jasné, google mi vyhodil toto:

A dokonca aj tu na ITN sú nejaké články ohľadom Matlabu: http://www.itnetwork.cz/software/matlab

A zlatý klinec na koniec: http://www.matlab.sk/ :)

MP

Editováno 4.4.2017 17:08
Nahoru Odpovědět
4.4.2017 17:05
obsah kocky = r^2 ... a preto vlak drnká
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:4.4.2017 17:09

Matlab sice neznám, ale udělal bych to takto:

  1. Založím si desetiprvkové pole čísel, kdy index v poli reprezentuje číslo ve vstupu a hodnota na indexu reprezentuje počet výskytů - tohle pole bude výstup
  2. Vstupní číslo vezmu jako string
  3. for smyčkou (popř. foreachem, jestli to matlab má) projedu vstupní string char po charu
  4. Vím že char je vždy číslo - naparsuji ho na int, a na tento index do výstupního pole přičtu jedničku

V jazyce C# nějak takto

public int[] ZjistiVyskyty(int vstup)
{
    int[] result = new int[10];
    foreach (char c in ((vstup.ToString) as char[]))
    {
        result[byte.Parse(c)]++;
    }
    return result;
}

Pak můžeš vrácené pole projet opět buď forem nebo foreachem, a pro každý prvek, který je větší než 1 vypsat danou hlášku.

Nahoru Odpovědět
4.4.2017 17:09
Programátor je stroj k převodu kávy na kód.
Avatar
Petr Langer
Člen
Avatar
Odpovídá na Miroslav Jiránek
Petr Langer:4.4.2017 17:39

Tohle neni zas tak o matlabu jako o vymýšlení algoritmu. Nicméně vytvoř pole s deseti prvky reprezentující jednotlivé číslice. Vstupní číslo vydělíš deseti a uložíš si zbytek po dělení do nějaké proměné (operand %). Zbytek ti indikuje že se tam vyskytuje daná číslice, takže inkrementuješ daný prvek v poli. Výseldek po dělení (zaokrouhlený dolu) budeš dělit dál deseti dokud nebude výsledek nula tzn. v cyklu s neznámým počtem opakování. Podobné příklady bývají u p. Doležela u zkoušky jako záchrané, ale on si spíš potrpí na OOP, takže když budeš umět to, tak jsi v pohodě ale když ho nebudeš umět vůbec tak tě nejspíš nezachrání ani takovýhle příklad.

 
Nahoru Odpovědět
4.4.2017 17:39
Avatar
Martin Foltin:3.8.2017 8:10

Dávam do pozornosti skupinu na facebooku . Okrem toho celkom isto pomôže základný kurz MATLAB Onramp

 
Nahoru Odpovědět
3.8.2017 8:10
Avatar
Lako
Člen
Avatar
Odpovídá na Miroslav Jiránek
Lako:3.8.2017 13:07

Není to elegantní řešení, ale to není ani ten výpisový skript, který vám byl dán:

cislo = 155887;
cislo_string = num2str(cislo);%prevedu na vektor charu
cislice = str2num(cislo_string');%ziskam jednotlive cislice
% ' znamena transpozici, aby se to neslilo do puvodniho cisla

vysledek = zeros(1,length(cislice));% inicializace vektoru pro ukladani vysledku
% jde to i bez ni, ale matlab bude kvicet

for ii = 1:length(cislice)% projdu vsechny cislice
   vysledek(ii)= sum(cislice==cislice(ii));% kouknu se kde se cislice rovna
   % kde se rovna tam vznikne 1, jinde 0 -> 1 sectu -> pocet vyskytu
end
 
Nahoru Odpovědět
3.8.2017 13:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.