aktuálně řeším poměrně zajímavý problém týkající se digitální filtrace. Potřebuji z naměřeného signálu vyextrahovat střední hodnotu a to v reálném čase a hlavně, co nejrychleji. Samozřejmě jsem zkoušel plovoucí průměr, jeho modifikace apod. Výsledek nic moc. Také na kaskádní bikvad - IIR filtr s nízkou zlomovou f došlo, sice pracoval relativně nejlépe, ale ne úplně dokonale. Vím, že se snažím skloubit dohromady dva požadavky, které si navzájem odporují: přesnost a rychlost, ale taková je prostě situace.
Ještě mě napadl Kalmanův filtr, ale s tímto způsobem filtrace nemám téměř žádné zkušenosti…
Pro ilustraci problému jsem vložím dva obrázky, na prvním se nachází originální signál (zelený) a jeho filtrace pomocí IIR druhého řádu (červený). Žádná sláva. Na druhém už pracuje IIR filtr 4. řádu realizovaný kaskádní formou. Tady už vypadá situace lépe, i když odezva na skok je stále pomalá.
Kdyby měl někdo nějaký tip, jak fofrem vyzískat střední hodnotu, tak bych to velice uvítal.
Medián jsi zkoušel? cs.wikipedia.org/wiki/Medi%C3%A1n Sice Kalmanovi konkurovat nemůže, ale na to jak je jednoduchý mívá o dost lepší výsledky než běžný průměr.
Střední hodnota je definovaná jako 1/n integrálu číselné řady 0-(n-1). Pokud tohle uděláš jako plovoucí tak máš FIR s konstantními koeficienty.
Možná bys mohl napsat o co ti primárně jde, jestli zatlouc nějakej rušivej kmitočet, získat trend signálu nebo co já vím…
Pic pánové. Děkuji velice moc za rady, ale medián i FIRko jsem již zkoušel, bohužel s ne zrovna vynikajícím výsledkem.
Cílem mého snažení je vpodstatě zjistit trend naměřeného a zpracovaného signálu - síťového napětí. Celý řetězec zpracovávání sestává z několika bloků, výstupy dostávám dva: absolutní hodnotu amplitudy napětí v reálném čase a její derivaci. No a s tou právě nastává problém, překvapivě . Její hodnoty kmitají kolem její střední hodnoty, která mě zajímá. Např. se stane, že se napětí mění o 2V/s, ale ze systému leze toto: 2,2 2,1 2 2,4 1,7 1,9 atd. Kdybych si to nachytal do bufferu a zprůměroval, tak pohoda, dostanu cca. ty dva volty. Bohužel potřebuji pracovat v reál. čase a s rychlou odezvou - cca. za 0.1 s musím dostat novou hodnotu po skokové změně derivace.
Dneska jsem se pustil do Kalmana, bohužel jsem ho nestihl implementovat do DSP, zatím jsem ho zkusil odsimulovat v Matlabu a vypadá to, že by se mohl stát řešením mého problému. V pondělí uvidím .
Tak záleží jaké největší skupinové zpoždění si můžeš dovolit , pak jak je signál zarušený a jakou míru šumu akceptuješ po zpracování. Princip neurčitosti při měření jistě znáš…