Arhiv: 'R-iT - 2. letnik'

35/35

URG: 3.vaja: Simulator treninga (projektno delo, iCycle)

Avtor: Ali Gator | 07 June 2010 | Ni ni komentarjev
Kategorija: URG

Navodilo:

1. Ustvarite spletno aplikacijo, ki bo omogočala prikaz zemljevida ter kolesarskih poti na zemljevidu. Za prikaz zemljevida na spletni strani uporabite knjižnico OpenLayers (http://openlayers.org). Za zemljevid lahko uporabite Google Maps. Kolesarko pot sestavite s pomočjo koordinat GPS, s katerimi tvorite lomljenko, katero tudi prikažete na spletni strani. Zemljevid centrirajte na Slovenijo (15.0, 46.0).

Nastavite naslednje atribute:

Prikazano območje: (-20037508.34,-20037508.34,20037508.34,20037508.34)

Projekcija karte: EPSG:900913 (google maps)

Projekcija prikaza: EPSG:4326 (zapis GPS)

Pretvorba projekcije:

reproject = function(x,y)

{

var point = new OpenLayers.LonLat(x,y).transform(

new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));

return point;

}

2. Dodajte možnost vnašanja poti z uporabo OL kontrol za risanje (http://openlayers.org/dev/examples/draw-feature.html) ter izris že obstoječih poti z lomljenkami. Obstoječe poti naj bodo zaenkrat podane v nizih (“x1,y1“, “x2,y2“,…,”xnyn“), katere tvorite sami. Z zapis poti v OL uporabite OpenLayers.Geometry.LineString, v katere vnesete točke poti. Vse točke morate projicirati v projekcijo EPSG:900913 (funkcija reproject). Primer risanja najdete na povezavi. Upoštevajte, da funkcija reproject vrača rezultat v strukturi OpenLayers.LonLat, za tvorjenje geometrije pa morate pretvoriti v strukturoOpenLayers.Geometry.Point.

3. Ustvarite strukturo za zapis geografske točke. Struktura naj vsebuje zemljepisno širino in dolžino, nadmorsko višino ter časovno značko. Kolesarske poti lahko zapišete kot polje točk. Strukturo bomo uporabljali za animacijo ter za izračune poti.
Napišite funkcijo za pretvorbo kolesarske poti z vaše strukture v strukturo, katero lahko prikažete v OpenLayers (vector). V spletni aplikaciji omogočite prikaz različnih kolesarskih poti (dodajte nov sloj za vsako kolesarsko pot), vsako kolesarsko pot pa prikažite v drugi barvi.
Pripravite si tudi funkcije za računanje dolžine poti, dolžino vzpona in spusta, višinsko razliko ter povprečno hitrost celotne prevožene poti ter posameznih odsekov kolesarske poti.

4. Ustvarite “umetne” zapise kolesarskih poti in zapisov GPS. Prikažite animacijo vožnje kolesarjev (zapis GPS) po kolesarskih poteh. Na spletni strani naj bo možno izbrati kolesarsko pot (in kolesarje, ki so vozili po izbrani poti). Vožnjo kolesarja prikažite kot točko, ki se premika po kolesarski poti, vsak kolesar naj bo prikazan z drugačno barvo.

Izpišite podatke o dolžini poti, dolžinah vzopona, spusta, višinske razlike, povprečno hitrost kolesarja, ter trenutno hitrost kolesarja (glede na položaj).

Pri izbiri kolesarske poti se zemljevid samodejno poveča (zoomira) na kolesarsko pot z majhnim odmikom na vsaki strani. Dodajte gumbke za začetek in konec animacije ter spustne menuje za izbiro kolesarske poti in voženj.

Pri animaciji uskladite položaj kolesarja s kolesarsko potjo – se pravi v primeru odstopanja kolesarja popravite njegov položaj da se bo ujemal s kolesarsko potjo. Označite tudi, če kolesar preveč zaide s predpisane poti (izberite toleranco npr. 5m, 10m, 15m) in to tudi označite.

>> Poglej rešitev <<


10/10

SA: N15: Odjemalec-strežnik z uporabo niti (Thread)

Avtor: Ali Gator | 07 June 2010 | Ni ni komentarjev
Kategorija: SA

Navodila:

S pomočjo aplikacijskega vmesnika Winsock API napišite program odjemalec/strežnik, ki bo odjemalcu prek protokola Telnet omogočal prijavo na strežnik in uporabo naslednjih ukazov:

Strežnik naj se javi s sporočilom »Telnet Server>« (angl. Prompt). Nalogo izvajamo v treh fazah, ki trajajo po teden dni:

Faze preverjamo tedensko, t.j. na začetku vsake vaje.

Pomagajte si z naslednjimi povezavami:

www.sockets.com/winsock.htm

http://msdn.microsoft.com/en-us/library/ms740673%28VS.85%29.aspx
http://en.wikipedia.org/wiki/Winsock

>> Poglej rešitev <<


10/10

SA: N14: Osnovna aplikacija strežnik-odjemalec

Avtor: Ali Gator | 07 June 2010 | Ni ni komentarjev
Kategorija: SA

Navodila:

S pomočjo aplikacijskega vmesnika Winsock API napišite program odjemalec/strežnik, ki bo odjemalcu prek protokola Telnet omogočal prijavo na strežnik in uporabo naslednjih ukazov:

Strežnik naj se javi s sporočilom »Telnet Server>« (angl. Prompt). Nalogo izvajamo v treh fazah, ki trajajo po teden dni:

Faze preverjamo tedensko, t.j. na začetku vsake vaje.

Pomagajte si z naslednjimi povezavami:

www.sockets.com/winsock.htm
http://msdn.microsoft.com/en-us/library/ms740673%28VS.85%29.aspx
http://en.wikipedia.org/wiki/Winsock

>> Poglej rešitev <<


7/7

SIS: 15. Vaja: Pragovna segmentacija

Avtor: Ali Gator | 01 June 2010 | Ni ni komentarjev
Kategorija: SIS

Pragovna segmentacija (treshold) je najpreprostejša segmentacijska metoda, s katero želimo ločiti objekte na sliki od ozadja. Pri tej pragovni segmentaciji se pripadnost posamezne točke določi s pomočjo praga. Če bi imeli prag 80, bi točka s sivino 75 predstavljala objekt, točka s sivino 90 pa ozadje (če bi bilo ozadje svetlejše od objekta). Pragovna operacija ima lahko globalni prag (prag je enak za vse točke), prag pa je lahko tudi variabilen (prag se razlikuje od točke od točke). Da točka predstavlja ozadje predstavimo z vrednostjo 0, če pa predstavlja objekt naj bo njena vrednost 1.

Seveda za pragovno operacijo niso primerne vse slike. Najbolje se obnesejo slike, ki imajo v histogramu dva med seboj jasno ločena vrha, kjer prvi vrh predstavlja objekt, drugi pa ozadje. Prag v takem primeru postavimo v dolino med vrhoma.

Avtomatsko določanje praga

V gornjem primeru smo prag postavili ročno, kar je za uporabo dokaj nepraktično. K sreči obstajajo metode in algoritmi, ki prag postavijo sami. Primer takega algoritma lahko najdemo tudi v knjigi Digital Image Processing: a practical introduction using Java, str. 255. Algoritem je iterativen in je z vsakim korakom bližji optimalnemu pragu. Algoritem predpostavlja,da robne točke algoritma predstavljajo ozadje.

Navodilo:

Implementirajte algoritem za avtomatsko določanje praga function prag=avtomatski_prag(slika), kjer funkcija izračuna prag za vhodno sliko. Predpostavite, da je vhodna slika že sivinska.

>> Poglej rešitev <<


100/100

MUR: Vaja 8: Spletne storitve (Web service)

Avtor: Ali Gator | 31 May 2010 | Ni ni komentarjev
Kategorija: MUR

Navodilo:

Na vajah bomo spoznali osnove spletnih storitev ter način njihove uporabe.

  • Primer demonstriran na vajah

    Naloga:

    Spletna storitev:
    Napišite spletno storitev, ki bo znala glede na poštno številko kraja vrniti naziv kraja ter temperaturo v stopinjah Celzijah za ta kraj. Pri tem se bomo omejili samo na kraje v ZDA. Spletna storitev naj vsebuje eno metodo, ki kot vhodni parameter prejme poštno številko kraja (ZIP Code) in kot rezultat vrne naziv kraja ter temperaturo v stopinjah Celzija. Za preizkus vaše spletne storitve, napišite okensko aplikacijo, ki bo uporabljala vašo spletno storitev. Okenska aplikacija naj omogoča vnos poštne številke kraja in izpis vseh podatkov, ki jih vrne vaša spletna storitev.

    Vaša spletna storitev naj podatke o vremenu pridobi preko naslednje spletne storitve:http://ws.cdyne.com/WeatherWS/Weather.asmx. Metodo, ki boste pri tem uporabili se imenuje “GetCityWeatherByZIP” in kot vhodni parameter sprejme poštno številko kraja. Metoda kot rezultat vrne 14 atributov, izmed katerih sta za nas pomembna samo naziv kraja (City) ter podatek o temperaturi kraja (Temperature).
    Podatek o temperaturi je podan v Fahrenheitovi temperaturni lestvici, zato bomo uporabili še drugo spletno storitev, ki nam bo pretvorila temperaturo kraja iz Fahrenheitov v stopinje Celzijev. Spletna storitev za pretvorbo temperature se nahaja na tem naslovu:http://www.w3schools.com/webservices/tempconvert.asmx. Metodo, ki boste pri tem uporabili se imenuje “FahrenheitToCelsius” in kot vhodni parameter sprejme temperaturo v Fahrenheitih. Metoda kot rezultat vrne temperaturo v stopinjah Celzijev.

    Primera dveh poštnih številk (ZIP Code):

    • 90066 – Los Angeles
    • 10001 – New York

    Pri izvedbi naloge se ni potrebno omejiti na zgoraj omenjeni spletni storitvi. V rešitvi lahko uporabite tudi kakšne druge spletne storitve, ki jih boste našli na spletu. Pazite le, da vaša spletna storitev uporablja najmanj dve “zunanji” spletni storitvi.

    Preizkus spletne storitve:
    Napišite tudi testni program, ki bo preko uporabniškega vmesnika klical vašo spletno storitev in izpisal rezultate.

  • >> Poglej rešitev <<


    100/100

    MUR: Vaja 6: HTML parser v C# – izvoz v XML

    Avtor: Ali Gator | 31 May 2010 | Ni ni komentarjev
    Kategorija: MUR

    Navodilo:

    Na vajah boste izvedeli, kateri sklop nalege (A,B,C,D,E,F) boste dobili.

    Naloga A:

    Za določen glosár (spletna povezava) naj študent izdela uvozni program, katerega rezultat naj bo datoteka XML, ki naj ima spodnjo obliko. Po možnosti (če ima glosar za pojem določeno tudi področje) naj bo pri vsakem pojmu, podano tudi področje, kamor lahko pojem uvrstimo. Hierarhijo področij uporabnik postavi v XML pred samimi pojmi v okviru oznake …. Če sam pojem v glosarju tega ne vsebuje, naj poskusi to določiti ročno ali polavtomatsko.

    Vsak pojem sme biti uvrščen v več področij. Če spada v več področij, potem naj bodo področja razvrčena po relevantnosti; tj. na prvem mestu določimo njegovo glavno področje itd. Pri hierarhiji področij določimo za vsako področje identifikator in ime.

    Pri opisu pojma izberemo identifikatorje pripadajočih področij, kamor pojem uvrstimo. Poleg tega za vsak pojem določimo njegov naziv in krajšo opredelitev ali opis pojma. Podamo še povezave, ki predstavljajo spletne vire, kjer je ta pojem opisan, dan primer zanj itd. ali pa je v povezavi z drugim izrazom (pojmom). V drugem primeru je mogoče, da sploh ni zunanje spletne povezave, ampak samo izraz. V tem primeru pač povezava ne vsebuje drugega, kot izraz. Povezav je lahko več.

    Ker je težko pričakovati, da bo hierarhija področij za pojme podana vnaprej, predlagamo, da se pojme najprej nehierarhično naniza znotraj oznake …. Torej, samo na eni ravni (ni podpodročij). V zadnji fazi, ko so pojmi že izdelani, področja pa znana, pa področja ročno preuredite, kot je predagano v primeru. V skrajnem primeru, ko pa področja za posamezni pojem niso podana, oz. se jih ne da niti ročno določiti, pa področij pač ne podate in se jih pri pojmih ne določi.

    Če je glósar večjezičen, bi radi tudi to izkoristili, zato imamo možnost podati seznam jezikov in se pri nazivih (tj. konkretnih izrazih) nanašati na več jezikov. Opredelitev naj bo v izbranem jeziku (če je na voljo naj bo slovenska, sicer pa v izvornem jeziku; običajno angleškem).

    XML mora biti ustrezen, tj. spletni brskalnik ga mora odpreti brez napak (angl. “well-formed”).

    Naloga B:

    Za podana iskalnika Google (Splet, Slike, Zemljevidi, Scholar) in Najdi.si (Splet, slike/video/zvoki, zemljevid) izvedite iskanje za podano besedno zvezo in izdelajte XML zadetkov. Za vsak zadetek podajte zapis XML. Zadetek mora biti opisan z zaporedno številko rangiranja, naslovom povezave, URL naslovom, tipom gradiva (stran HTML, slika, video, audio) in kratkim opisom, katerega vrne iskalnik.

    En študent pokrije vse podiskalnike za Google, drugi pa za Najdi.si.

    XML mora biti ustrezen, tj. spletni brskalnik ga mora odpreti brez napak (angl. “well-formed”).

    Naloga C:

    Za podan spletni slovar/glosar izvedite iskanje za podano besedno zvezo in izdelajte XML zadetkov. Za vsak zadetek podajte zapis XML. Zadetek mora biti opisan z zaporedno številko rangiranja, naslovom povezave, URL naslovom, tipom gradiva (stran HTML, slika, video, audio) in kratkim opisom, katerega vrne iskalnik.

    En študent izdela parser za en slovar/glosar.

    XML mora biti ustrezen, tj. spletni brskalnik ga mora odpreti brez napak (angl. “well-formed”).

    Naloga D:

    Za podan spletni slovar/glosar izvedite iskanje za podano besedno zvezo in izdelajte XML zadetkov. Za vsak zadetek podajte zapis XML. Zadetek mora biti opisan z zaporedno številko rangiranja, naslovom povezave, URL naslovom, tipom gradiva (stran HTML, slika, video, audio) in kratkim opisom, katerega vrne iskalnik.

    En študent izdela parser za en slovar/glosar.

    XML mora biti ustrezen, tj. spletni brskalnik ga mora odpreti brez napak (angl. “well-formed”).

    Naloga E:

    Za podan spletni slovar/glosar izvedite iskanje za podano besedno zvezo in izdelajte XML zadetkov. Za vsak zadetek podajte zapis XML. Zadetek mora biti opisan z zaporedno številko rangiranja, naslovom povezave, URL naslovom, tipom gradiva (stran HTML, slika, video, audio) in kratkim opisom, katerega vrne iskalnik.

    En študent izdela parser za en slovar/glosar.

    XML mora biti ustrezen, tj. spletni brskalnik ga mora odpreti brez napak (angl. “well-formed”).

    Naloga F:

    Za podan spletni slovar/glosar izvedite iskanje za podano besedno zvezo in izdelajte XML zadetkov. Za vsak zadetek podajte zapis XML. Zadetek mora biti opisan z zaporedno številko rangiranja, naslovom povezave, URL naslovom, tipom gradiva (stran HTML, slika, video, audio) in kratkim opisom, katerega vrne iskalnik.

    En študent izdela parser za en slovar/glosar.

    XML mora biti ustrezen, tj. spletni brskalnik ga mora odpreti brez napak (angl. “well-formed”).

    >> Poglej rešitev <<


    URG: 2. kolokvij [Update: rešitve]

    Avtor: Ali Gator | 10 May 2010 | Ni ni komentarjev
    Kategorija: URG

    Zaradi praznikov (in enkratne odsotnosti profesorja) smo imeli pred tem kolokvijem predavanja le 2-krat.
    Tako so prišle v upoštev naslednja poglavja (kot so zapisana v knjigi Borut Žalik: Algoritmi računalniške geometrije):

    >> Poglej rešitev <<


    n/a

    SIS: 9.vaja: Digitalni filtri – Testiraj_filtre

    Avtor: Ali Gator | 05 May 2010 | Ni ni komentarjev
    Kategorija: SIS

    Navodilo:

    V funkciji testiraj_filtre.m izračunajte vektorja a in b s filtri cheby1, cheby2, butter za visoko-prepustno sito. Izberite enako lomno frekvenco in enake rede filtra. Narišite amplitudi frekvenčnih odzivov za vsak filter posebej. Vsi grafi naj bodo popolnoma označeni (x os, y os, itd.) ter prikazani na eni sliki (uporabite ukaz subplot). V komentar programa za vsak filter napišite, kako se obnaša njegova frekvenčna karakteristika. Napišite tudi, kakšne razlike med njimi opazite.

    >> Poglej rešitev <<


    n/a

    SIS: 9.vaja: Digitalni filtri – Razpoznaj_DTMF

    Avtor: Ali Gator | 05 May 2010 | Ni ni komentarjev
    Kategorija: SIS

    Navodilo:

    Gotovo vsi poznate tonski način izbiranja številke na telefonu (DTMF – Dual Tone Multiple Frequency). V bistvu za vsako pritisnjeno tipko telefon pošlje kratek zvočni signal sestavljen iz dveh čistih sinusov po naslednjem sistemu.

    Ko pritisnete tipko, se pošljeta sinusa s frekvenco, ki je napisana poleg vrstice v kateri je tipka in frekvenco, ki je napisana pod stolpcem, v kateri je tipka. To pomeni, da vse tipke v istem stolpcu oddajo signal z eno enako frekvenco. Enako velja za tipke, ki se nahajajo v isti vrstici.

    Primer: Če pritisnemo tipko 1 je signal sestavljen iz sinusov s frekvenco 697 Hz in 1209 Hz. Če pritisnemo tipko 8 je signal sestavljen iz sinusov s frekvenco 852 Hz in 1336 Hz.

    Najprej preizkusite generator signalov DTMF:

    SIS:Vaja09:Digitalni filtri:generateDTMF - Naložil: Narmotur

    , ki je napisan v Matlabu. Funkcija vrne vektor zvočnega signala, ki ga lahko poslušate s funkcijo sound (vzorčevalna frekvenca je 8000 Hz).

    Napišite program zaporedje=razpoznaj_DTMF(x), ki bo z uporabo pasovno prepustnih filtrov poskušal prepoznati, kakšno zaporedje telefonskih tipk je bilo pritisnjeno v vhodnem signalu x. Uporabite 7 pasovno prepustnih filtrov (tipe in rede filtrov izberite sami), ki bodo prepuščali le bolj ali manj ozko frekvenčno okolico zgoraj navedenih frekvenc (697 Hz, 770 Hz , 852 Hz, itd.). V kolikor amplituda pri dveh filtriranih signalih presega določeni prag, vemo katera tipka je bila pritisnjena. Namesto funkcije filt uporabite funkcijo filtfilt, ki izniči vpliv zakasnitve filtrov.

    Signal, ki ga dobite z generatorjem signalov DTMF, ne vsebuje nikakršnega šuma. V realnosti pa lahko vaš program vsebuje tudi govor ali šum. Testni program na sistemu bo preizkusil vaš program z različnimi stopnjami šuma. Šum se ponavadi naredi tako, da signalu prištejemo naključne vrednosti. Nivo dodanega šuma merimo s faktorjem SNR (razmerje signal/šum), ki ga merimo v decibelih (dB). Nižja, ko je vrednost SNR, močneje je šum prisoten. Pri SNR = 20 dB je šum po moči stokrat šibkejši od signala. Pri SNR = 10 dB je šum po moči desekrtat šibkejši od signala. Ko je SNR=0 dB, je moč šuma enaka moči signala.

    Na sistemu za vaje se bo signalu iz generatorja DTMF šum dodal s funkcijo awgn:

    signalPlusSum = awgn(signal,10,'measured')

    .

    Število doseženih točk bo bo pri tej nalogi odvisno od robustnosti vašega programa s testnimi primeri. Za pravilo delujoč program, ki dela pri šumu 20 dB dobite 15 točk. 20 dodatnih točk pa bo mogoče doseči z odpornostjo na šum – najboljša rešitev bo nagrajena z 10 dodatnimi točkami (skupaj torej 25 točk), druga najboljša z 9, tretja z 8 in tako naprej, dokler ne zmanjka točk.

    Pozor! Naloga morate rešiti v časovnem prostoru.

    >> Poglej rešitev <<


    n/a

    PPJ: Leksikalna analiza – naloga 1 (obvezna)

    Avtor: DubleG | 18 April 2010 | Ni ni komentarjev
    Kategorija: PPJ

    Navodilo:

    Pregledovalnik (scanner) predstavlja vmesnik med izvornim programom in razpoznavalnikom. Njegova naloga je, da vrne razpoznavalniku terminalne simbole. Njegova naloga je tudi, da izloči prazna mesta, preskoke v novo vrstico ter komentarje.

    Pregledovalnik obravnava vhodno datoteko kot niz znakov, ki jih nato sestavlja v terminalne simbole. Za opis terminalnih simbolov uporabljamo končne avtomate, te pa najlažje implementiramo s tabelo (lahko tudi s programsko kodo).

    Osnovni leksikalni simboli:

    float [0-9]+ ( .[0-9]+)?

    operator \+|\*|\-|/

    separator\(|\)

    Dodatni leksikalni simboli (za višjo oceno):

    cos, sin, abs

    Leksikalni analizator implementirajte v jeziku C#!

    >> Poglej rešitev <<


    Arhiv

    Oblak

     

    rss

    Vsevedno okno

    Kategorije

    Nekaj za preživetje:

    Blogroll