Forum » Programiranje » Program v matlabu
Program v matlabu
Boomerang ::
Lp! Zanima me, ali slučajno kdo dobro pozna Matlab? Rabil bi pomoč pri reševanju ene naloge. Vse kar morate narediti je, da mi razložite program, in sicer vrstico za vrstico - step by step in čim bolj po domače. Če ste razpoloženi za programiranje, mi ga lahko tudi pretvorite v C, Javo ali kakšen drugi jezik, ki ga poznam, o Matlabu pa res nimam blage veze. Da bo bolj razumljivo, imam komentarje za posamezne segmente, vendar še vedno ne razumem določenih vrstic.
Program najdete tukaj: http://matlab.net76.net/matlab.zip
Prenesite datoteko in jo odzipajte. Vsebuje le eno txt datoteko, kjer je zapisan program v Matlabu. Naloge namreč ne morem narediti, če ne vem kaj in kako počne program, zato mi boste precej pomagali, če mi samo tolmačite vrstice. Ne bi vas prosil, če ne bi bilo nujno potrebno, zato že vnaprej hvala.
Program najdete tukaj: http://matlab.net76.net/matlab.zip
Prenesite datoteko in jo odzipajte. Vsebuje le eno txt datoteko, kjer je zapisan program v Matlabu. Naloge namreč ne morem narediti, če ne vem kaj in kako počne program, zato mi boste precej pomagali, če mi samo tolmačite vrstice. Ne bi vas prosil, če ne bi bilo nujno potrebno, zato že vnaprej hvala.
Math Freak ::
pnet
Najbolje da probavaš eno funkcijo za drugo, kaj katera dela.
Recimo v Matlabu vtipkaš "help disp" in ti pove, da funkcija "disp" izpisuje niz brez imena spremenljivke.
Primer:
2. Primer:
Opaziš, da so se vsi znaki v nizu zamaknili za 3 naprej in pretvorili v kodirane znake.
itd...
Najbolje da probavaš eno funkcijo za drugo, kaj katera dela.
Recimo v Matlabu vtipkaš "help disp" in ti pove, da funkcija "disp" izpisuje niz brez imena spremenljivke.
Primer:
>> a= 'nek niz'; >> disp(a) nek niz
2. Primer:
>> sporocilo = 'Testno sporocilo'; >> sporocilo sporocilo = Testno sporocilo >> sporocilo = sporocilo + 3; >> sporocilo sporocilo = 87 104 118 119 113 114 35 118 115 114 117 114 102 108 111 114 >> char(sporocilo) ans = Whvwqr#vsrurflor >> double('Whvwqr#vsrurflor') ans = 87 104 118 119 113 114 35 118 115 114 117 114 102 108 111 114
Opaziš, da so se vsi znaki v nizu zamaknili za 3 naprej in pretvorili v kodirane znake.
itd...
Boomerang ::
To še razumem... nekako razberem iz ukazov in sintakse. Zatakne se mi proti koncu, kjer so gnezdene zanke in dolgi stavki. Tik pred ukazom pause sem poskušal rezultat izpisati in mi je izpisalo niz enic in ničel. Potem sem ta niz poskušal povrniti v začetno vrednost (torej bi moral dobiti stavek Testno sporocilo) in mi nikakor ne gre.
Math Freak ::
n_seg = ceil(length(sporocilo)/8);
-> Sporočilo je bilo dolgo 16 znakov, zato dobiš dva segmenta.
Torej n_seg = 2
pak = cell(1,n_seg);
-> ustvariš pak, ki je tipa cell, dimenzije 1x2
for k = 1 : n_seg if k == n_seg pak{k}.data = sporocilo((k-1)*8+1:end); else pak{k}.data = sporocilo((k-1)*8+1:k*8); end end
-> Napolniš pak s podatki: če je k zadnji del sporočila, potem ga napolniš s preostankom znakov, sicer ga pa polniš z zaporedji osmih znakov.
for k = 1:n_seg pak{k}.id = 1; pak{k}.tip = 1; pak{k}.prejemnik = 1; pak{k}.npak = n_seg; pak{k}.kpak = k; pak{k}.dolz = length(pak{k}.data); end
-> tukaj si dodal glavo podatkom, recimo npak ti pove, na koliko delov si razdelil sporočilo, kpak ti pove kateri del sporočila je trenutni del, dolz ti pove, koliko znakov vsebuje trenutni del sporočila.
Potem pa pride še zadnja for zanka. Preden greš v zadnjo zanko izgledajo podatki takole:
>> pak{1} ans = data: [87 104 118 119 113 114 35 118] id: 1 tip: 1 prejemnik: 1 npak: 2 kpak: 1 dolz: 8 >> pak{2} ans = data: [115 114 117 114 102 108 111 114] id: 1 tip: 1 prejemnik: 1 npak: 2 kpak: 2 dolz: 8
data_bin = dec2bin(pak{k}.id,16);
Dobiš: 0000000000000001
data_bin = [data_bin,dec2bin(pak{k}.tip,8)];
Dobiš: 000000000000000100000001
Vsaka naslednja ti bo samo nalagala določeno število ničel (to ti pove argument 16 oz. 8 v dec2bin funkciji) in pretvarjala število v binarni zapis.
Potem na koncu šele dodaš besedilo v binarni zapis s to kodo:
(nahaja se v pak{k}.data):
for l = 1:8 if l <= l_data data_bin = [data_bin,dec2bin(uint8(pak{k}.data(l)),8)]; else data_bin = [data_bin,dec2bin(uint8(0),8)]; end end
Sepravi se tvoje besedilo nahaja na koncu, pred tem pa imaš id, tip, prejemnik, itd ...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Python - pomoč (strani: 1 2 3 )Oddelek: Programiranje | 18027 (8775) | black ice |
» | HackedOddelek: Izdelava spletišč | 1446 (807) | stb |
» | [C#] Operacija IN in ALI med dvema int številomaOddelek: Programiranje | 1169 (982) | LeQuack |
» | [Access 2007]Oddelek: Programiranje | 2627 (2227) | urosz |
» | [php] mail() funkcijaOddelek: Izdelava spletišč | 1639 (1587) | t3hn0 |