Kísért a múlt, avagy régi problémák új megvilágításban

     Látjátok feleim szümtükkel... De nem látjátok... Megint ugyanabba a hibába este, mint annó a projekt kezdetén... Meggondolatlanul (csak a lokális minimumra koncentrálva) egy olyan megoldást alkalmaztam, ami helyben elfedte a problémát, viszont hosszú távon biztos bukáshoz vezetett. Ez a tulajdonságokat kiszámoló kis függvényekben nyilvánult meg. Amikor (még tesztelési fázisban) csak 18*18-as képekkel kellett csak dolgozni, a matlabból C-be átírt kód nem hozta azt az eredményt, amit elvártam tőle. Ennek egyszerű oka volt. A matlabban az indexelés 1-től kezdődik, ezzel ellentétben a microblaze tömbjeinek indexe (a standard C-nek megfelelően) 0-tól kezdődik. Matlabban ezt úgy oldottam meg, hogy egy for ciklussal végigmentem a tömbön, s minden nullás értéket egyre cseréltem (lesz ami lesz alapon). A microblazen futó programban pedíg nagyvonalúan kerekítettem egy kicsit (a 100-ból 97 lett, az 50-ből 48, a 30-ból pedig 28). Ez, amíg csak 18*18-as képeken kellett tesztelni, addig nem okozott problémát. Viszont, mikor elérkezett a pillanat, hogy nagyobb méretekkel is hosszanpásztázzam a képet, kiderült, hogy talán nem ez volt a legjobb (kényszer)megoldás.

     Többszöri kisérlet és próbálkozás után arra a következtetésre jutottam, hogy csak úgy lehet megoldani, mint a matlabban (vagy megint kezdhetem előlről a tanítástól az egészet). Berakok egy plusz for ciklust, amivel megnézem, hogy hol nem nulla az illető pozícióérték és ott kivonok belőle egyet (hogy megfeleljen a standard C-s indexelési eljárásnak). Persze a téma még nyitott. Lehet, hogy a 2.0 verzióban már másképp fogom megoldani ezt az egészet.

Addig egy újabb kép, hogy a (már frissített forráskódú) Microblaze és matlab mennyire hasonlóan és mennyire pontosan számolja ki az illető tulajdonságértékeket:

0 megjegyzés:

Megjegyzés küldése

Return top