Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#26 10. 04. 2011 10:05

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

↑↑ Lumikodlak:
Spíš mi přišlo nepraktické neurčit v zadání nějaké omezení na délku kódového slova - pokud je řečeno, že v kódovém slově se vyskytnou vždy nejvýše 2 chyby - a to nezávisle na délce tohoto slova. Pak někdo navrhne délku kódového slova 11bitů, někdo jiný třeba jeho délku 44bitů, ale stále se v každém z nich podle předpokladu vyskytnou nejvýše dvě chyby. Dle mého by spíš pro daný přenosový kanál měla být jeho charakteristika dána tím, kolik nejvýše chyb se vyskytne v nějakém bitovém řetězci o pevné délce - tj. např. že v řetězci o 11bitech se vyskytnou nejvýše 2 chyby. Potom ale - pokud by někdo kódoval 4bitové slovo pomocí 44bitů (4 11bitové bloky) - by dle mého - pokud by šlo o reálný kanál - mělo dojít k nejvýše 2 chybám v každém z těchto 4 bloků - a nikoli k nejvýše 2 chybám v celém 44bitovém slově.

Příklad s 10000bity, kterými kóduji 4bitové slovo, byl jen teoretický, který poukazoval na odtržení zadání od reality (čím delší kódové slovo vymyslím, tím nižší četnosti chyb dosáhnu, což pro reálné kanály dle mého neplatí).


"Máte úhel beta." "No to nemám."

Offline

 

#27 11. 04. 2011 15:22

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Souhlasím s názorem že úloha je mimo realitu, ale která vysoškolská úloha je realná:-) Jedná se o předmět Teoretická informatika. I tak mi zatím není nějak moc jasné jak ten kod hledat. Chápu jednotkovou matici, ale ty kontrolní bity mi zatím unikají. Ale i tak děkuji za velmi důkladný rozbor.

Offline

 

#28 11. 04. 2011 18:33

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Mate k tomu nejake materialy? Take jsem na internetu nenasel, jak to hledat pro dve chyby, takze jsem jen napsal, jak si myslim, ze by se to dalo najit.
Testovaci bity - tim myslis, jak se pouziva ta testovaci matice, nebo jak potom vyhodnotit vysledek (po vynasobeni tou matici)? Kdyz po vynasobeni prijateho slova matici dostanes same nuly tak tam neni zadna chyba (ledaze by bylo vic chyb, nez je schopno kodovani rozpoznat), kdyz nejsou same nuly, tak je to slozitejsi :-)

Offline

 

#29 11. 04. 2011 20:50

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

No ono na ty dvojite chyby je asi predpoklad jit pouze logickou uvahou. To vyhodnoceni zakodovaneho slova pomoci paritni matice je mi jasny. Spis mi neni jasny postup pri tvorbe generujici matice. Vim proc je ta jednotkova, ale jak se postupuje pri pridavani kontrolnich bitu. Materialy máme takove vselijake. Jedine co mame je na tomto webu: Odkaz

Offline

 

#30 11. 04. 2011 22:19

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Je potreba, aby kdyz se kontrolni matice vynasobi transponovanou generacni matici, tak aby vysledek byl same nuly. To kdyz se rozepise (vis, ze jsou tam ty jednotkove casti), tak vyjde, ze staci vzit levou cast kontrolni matice, transponovat ji, a pouzit jako pravou cast te generacni.

Offline

 

#31 11. 04. 2011 22:25

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Jo to je mi i jasny to jsem s toho vykoukal. Spis mi jde o to jakým postupem jsi ziskal ten kod opravujici dve chyby. Jako napr mam slovo 1 0 0 0 a dle jakeho algoritmu jsi prisel na ty kontrolni bity, kterými pokračuješ dál. To mi neni jasny

Offline

 

#32 12. 04. 2011 12:57

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Jo tak to jo, zase jsem to spletl :-) Kdyz vezmes zakodovane slovo, a vynasobis kontrolni matici, tak dostanes vsude nuly. Kdyz ale zmenis bit toho slova (coz je ta chyba pri prenosu), nebo nekolik bitu, tak se pak zmeni vysledek toho nasobeni. To, jak se zmeni, je dane tou matici - napriklad chyba je ve 3. bitu zakodovaneho, tak tam, kde jsou jednicky ve 3. sloupci matice, tak se prohodi ve vysledku bity. Kdyz budes chtit opravovat jednu chybu, tak staci, aby pro kazdy sloupec to dalo jiny vysledek - pak podle vysledku muzes zpetne odvodit, ktery bit se zmenil. Cili staci, aby zadny sloupec se nerovnal jinemu . Kdyz budes chtit opravovat dve chyby, tak je to slozitejsi - aby se dalo jednoznacne urcit, ktere bity se zmenily, nesmi se rovnat ani soucet dvou jakychkoliv sloupcu (uz jsem to popisoval tady ↑↑ Lumikodlak:). To jsem se pokusil nejak vyzkouset a najit, ale nepovedlo se mi to. Tak jsem napsal jednoduchy program, ktery vyzkousel vsechny moznosti :-) a zjistil jsem, ze bude potreba bit navic a vysla mi ta matice: ↑↑ Lumikodlak:. (Nejsem si jisty, jestli jsi se ptal na tohle)

Offline

 

#33 12. 04. 2011 13:43

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Takže jestli to chápu dobře tak jsi si nejdřív určil kontrolní a z ní pak generující. Otázka zní zda by to šlo obráceně. Tzn. nejdřív generujícíc. I když nad tím přemýšlím tak by možná stačilo místo sloupců pracovat v tomto případě s řádky. Hmmm, musím se nad tím zamyslet, ale myslím že to bude ono.

Offline

 

#34 12. 04. 2011 22:42

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Ano, nejdriv jsem urcil kontrolni, a pak generujici. Obracene by to urcite nejak slo, ale neni to moc prakticke podle me. Musel bys pamatovat na tu jednotkovou casti, ty nerovnosti maji platit i s tou jednotkovou casti te kontrolni (ta ale potom jakoby v te generacni neni, ta jednotkova je tam na jinem miste). Jeste bys musel naopak prestat brat v uvahu tu jednotkovou cast generacni.

Offline

 

#35 24. 04. 2011 18:23

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Tak zase na chvilku ozivim tema. Nejak jsem zbastlil ten kod, kontrolni matici i generujici. Pri oprave jedne chyby je to v pohode a funguje to, ale nevim jak z vysledku nasobeni kontrolni matici zjistim kde jsou spatne bity.

Offline

 

#36 24. 04. 2011 21:10

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Mám na mysli jak z výsledného syndromu v případě dvojnásobné chyby najdu kde jsou chyby. Myslím že pomocí seznamu chybových vektorů to asi nebude protože by jich muselo bejt 2 na 7

Offline

 

#37 26. 04. 2011 18:06

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Nic moc lepsiho me nenapada, 128 vektoru podle me neni zas tak moc.

Krome toho ma napada jedine postupovat nejakou uvahou: (neplati to obecne, ale jestli jsem to nespletl, melo by to fungovat pro tabulku co jsem uvadel a take nektere jine)

Kdyz zjistis, ze tam neni jedna chyba, ale dve (nebo vic), tak provest nasledujici
- Kdyz jsou dva bity vysledku nastavene na 1, tak je jasne, ze obe chyby jsou v paritnich bitech (ve kterych, to je jasne).
- Kdyz budou 3 nebo 5 bitu, tak je jedna chyba v informacnim, a jedna v paritnim, cili najit sloupec (v kontrolni matici), se kterym se vysledek lisi jen o ten jeden bit (jedna chyba je v tom sloupci a ta druha v paritnim podle toho, ktery bit se lisi)
- Jinak (4 nebo 6 bitu) jsou obe chyby v informacnich, a to uz me napada jedine ten seznam vektoru, melo by jich byt 16, coz by bylo asi lepsi nez tech 128.

Offline

 

#38 26. 04. 2011 22:35

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Díky za radu. Ukol jsem odevzdal a ještě k tomu napsal aplikaci co spocita vsechny syndromy a porovna jestli jsou ruzny. Coz mi vyslo ze ano, takže by to mělo fungovat. Uvidíme jestli bude uznáno. Díky moc...

Offline

 

#39 09. 01. 2014 20:31

zotac
Příspěvky: 38
Reputace:   
 

Re: Samoopravný kod

Dobrý den, řešil jsem velmi podobný příklad, tato diskuze mi pomohla tak bych sem chtěl přidat svoje řešení.

Pro vyřešení jsem použil opakovací kód. Klíč je v tom představit si jednotkovou matici o příslušné velikost (kanonická báze - z té vytvoříme jakékoliv slovo) (velikost záleží na počtu informační bitů). Potom musíte vypočítat kolikrát každý byt zopakujete. Využijeme tedy vzorec (n-1)/2 pro binární opakovací kódy a vyjde nám počet chyb, které kód opraví. N pak udává počet opakování. Každý bit tedy opakujete podle výpočtu. Nakonec provedete permutaci řádků tak, aby v levé části vyšla jednotková matice. Tím máte hotovou generující matici. Pro kontrolní matici jen vezmete tu část B z té generační (tedy tu část bez jednotkové) provedete transponování B a k tomu doděláte jednotkovou a máte kontrolní matici H.

Tady ještě přikládám výborný článek z Wikipedie na základě kterého jde v podstatě celý úkol vyřešit:
http://wh.cs.vsb.cz/cs/index.php/Zpraco … lních_dat_(ZMD)/Cvičení/05-Lineární_kódy

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson