Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Aproximace množiny bodů křivkou (a elipsou) realizovatelná na 12MIPS MCU

Ahoj,
zase tu jsem s oříškem. Moje zařízení produkuje (hodnoty X a Y) něco takového na základě hodnot z AD převodníků:
[http://pc.poradna.net/file/view/8558-aprox-png]
Je to UI "křivka" dvou LED diod zapojených paralelně, přičemž jsou navzájem otočené. Jako výpočetní jednotku mám k dispozici pouze 12MIPS osmibitový mikrokontroler PIC18F4550. A teď potřebuji za krátkou dobu (maximální přípustná doba je 100ms, to máme nějakých 1,2 milionu instrukčních cyklů) z množiny bodů (je jich 128, obrázek je zvětšen tak, aby jeden bod měl velikost 4x4 pixelu na tom obrázku) dokázal vytvořit křivku. Obrovskej problém vidím v tom, že u diaků a hlavně, kondenzátorů a indukčností, to není takto jednoduché a jedna hodnota X má přiřazeny dvě různé hodnoty Y - je to prostě elipsa. Už jsem toho zkoušel hodně a nic mi zatím nedalo uspokojivý výsledek. Třeba nejjednodušší algoritmus - projíždět všechna X a průměrovat Y. To sice u diod jakžtakž funguje (i když nic moc), ale u kondenzátorů to pochopitelně udělá rovnou čáru. Oversampling už využívám a zpřesnit samotné měření tedy není možné. Už takhle jsem mimo specifikace a povolené rozsahy délky AD převodu. Pakliže by někdo věděl o algoritmu, který by toto dokázal, ať mi prosím napíše.
Díky moc za odpovědi.

Předmět Autor Datum
Ja bych to prosel od spoda a rozhodil na dva skupiny min vlevo do jedne skupiny, vpravo do druhe sku…
AZOR 24.02.2012 18:41
AZOR
Mohl bys to prosím více upřesnit - moc jsem nepochopil, co dát do jakých polí. Mě teď napadlo, začít…
marekdrtic 24.02.2012 19:36
marekdrtic
Problem je, ze jsi rekl, co ocekavas za vysledek a ne co je ucelem cviceni. Pokud ma byt vysledkem n…
AZOR 25.02.2012 12:07
AZOR
Jo, už jsem uvažoval nad tím, že to rozdělím na dvě půlky nebo dokonce po kvadrantech. Jako výsledek…
marekdrtic 25.02.2012 12:17
marekdrtic
To mi neříkej, že na toto není 12MIPS dost...:-)
MaSo 25.02.2012 05:04
MaSo
jenže on nemá zdaleka linerání, on má nějakou dvosložkovou exponenciální, možná expo-lin-lin-expo ne…
AZOR 25.02.2012 12:02
AZOR
Jo, já potřebuju zobrazit napěťově-proudové charakteristiky u diod (1 nebo 2 exponenciální fce), kon…
marekdrtic 25.02.2012 12:13
marekdrtic
V tom pripade je ale vzorec znamej, ne? Aby jsi dokazal pak hledat pomoci regresni analyzy vzorce, n…
AZOR 25.02.2012 12:16
AZOR
Vzorec známý není, protože tam nebude nabídka toho, co to je (výběr součástky), já prostě potřebuju…
marekdrtic 25.02.2012 12:18
marekdrtic
Zkus se ještě mrknou na metodu nejmenších čtverců, snad by mohla pomoct. Nevím to jistě, už si z ana… poslední
MaSo 25.02.2012 12:18
MaSo

Ja bych to prosel od spoda a rozhodil na dva skupiny min vlevo do jedne skupiny, vpravo do druhe skupiny. Nejdolnejsi a nejhorsnejsi bod do obou skupin (pokud se elipsa nikde nemuze krizit.

A nasledne spravny algoritmus na aproximaci, coz asi nebude prumerovani, ale metoda nejmensich ctvercu ci nejake regresni analyza na nejakem dvoj. exponencialnim modelu.

Mohl bys to prosím více upřesnit - moc jsem nepochopil, co dát do jakých polí. Mě teď napadlo, začít od jakéhokoliv bodu, prohledat okolí třeba 10 bodů a když tam nějaké jsou, tak z nich udělat průměrnou hodnotu a to bude jeden bod už výsledné lomené čáry, která se odešle do zobrazovacího PICu. Potom, co se udělá takovýhle bod, se opět prohledá okolí a tak dále, až nezbyde žádnej bod. Body, který nebudou patřit do žádného okolí se prostě vyřadí, protože jsou mimo. Ale tam je ještě spousta věcí k dořešení.

Problem je, ze jsi rekl, co ocekavas za vysledek a ne co je ucelem cviceni. Pokud ma byt vysledkem neco 2 rozmerneho, pak potrebujes reprezentovat minimalne dve cary (zjednodusene levou a pravou) proto jsem (algoritmus netusim, nevim ceho chces dosahnout) navrh rozdelit body na leve a prave (ciste podle obrazku a podle principu KISS = keep it simple, silly) a spocitat to nad levou pulkou a pravou pulkou a ty pak ciste spojit/protnout. S tim ze vypocet nad tema castma bude pak v zavislosti na tom ceho chces dosahnout od prumeru az po metodu nejmensich ctvercu v omezene vzdalenosti az pres ty refresni analyze - ted prichazi otazka jestli chces ciste spocitat jak vypada (lehci varianta) nebo z toho ma vypadnout vzorec - předpis té křivky (těžší varianta)

Jo, už jsem uvažoval nad tím, že to rozdělím na dvě půlky nebo dokonce po kvadrantech. Jako výsledek potřebuju jen tu křivku, předpis nepotřebuju, u mého zařízení jde čistě jen o to, jestli součástka je poškozená (bude tam blbě koleno UI křivky, bude tam ostrá hrana, nebude tam nic) nebo je v pořádku..

jenže on nemá zdaleka linerání, on má nějakou dvosložkovou exponenciální, možná expo-lin-lin-expo nebo něco takévho ;)

V tom pripade je ale vzorec znamej, ne? Aby jsi dokazal pak hledat pomoci regresni analyzy vzorce, ne?

Najdeš si předpis toho pruběhu a necháš "otevřené" keoficienty, které pak dopočítáš na základě metody nejmenších čtverců

Zpět do poradny Odpovědět na původní otázku Nahoru