Det beror väl lite på vad det är för filter, de flesta diskreta filter (kallas det väl när det handlar om sampel) innebär ju en viss fördröjning. Då kan man ju inte subtrahera en utsignal som kanske är fördröjd 3-4 sampel direkt från insignalen.
(Det är 15 år sen jag pillade med sånt där sist, som exjobb implementerade jag ett filter på en TMS320-C80, men det var inte jag som hade konstruerat filtret, jag bara kodade det.)
data = |x|
tecken = x/data
bearbeta data osignerat här
retunera bearbetad_data*tecken
Så har jag alltid jobbat med samples.
Det fina är att man kan göra waveshape med x^y (edit, om x är mellan 0 och 1, jag har alltid använd en våg som är +-1 men inte större), låter man y öka/minska eller gå i våg får man effekter som påminner om filtersvep.
Skitbra! Har ett projekt där ett antal temperatursensorer behöver rensas till rimligt stabila data och detta är skitbra!
Ska sedan (när jag kommer hem, sitter vid stora tjejens fotbollsträning via mobilen) kolla om jag faktisk kan få lite extra bits på det vis, alltså om det är lagom med brus till att klämma ut lite extra bits.
Samtidig kan jag trilla ganska mycket på den utjämningsrutin jag skrev för att få stabila värden, ska se hur bra det blev senare ikväll.
Jag läste i en bok om reglerteknik att detta filter (alltså "mitt" filter i första inlägget) även kallas Kalmanfilter. Det tog lite tid att fatta att det var samma sak, då de använde sig av ganska (onödigt) långa matematiska formler för att uttrycka det som skrivs med bara en rad kod.
Här kommer högpassfiltret (blå kurva) (dvs indata (gul) minus utdata (orange) från lågpassfilter).
Av naturliga orsaker försvinner DC-komponenten, så resultatet hamnar kring noll-axeln:
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Nja ett kalmanfilter är väl ändå lite mer än en ett lågpassfilter.
Vad jag förstått (vilket inte är så mycket om just kalmanfilter, men ändå) är att kalmanfilter används för att mixa ihop flera olika signaler till en utsignal.
Det kan hända att kalmanfilter går att applicera på fler dimensioner, men med en insignal så blir det samma formel, om man förenklar alla variabler och konstanter.
Nja igen, själva vitsen med ett kalmanfilter är (tror jag) iden att blanda flera signaler. Har man bara en signal så är det inte längre ett kalmanfilter.
Ett vanligt ex brukar vara en bil på en rak väg, vars hastighet och position fås från en gps med jämna mellanrum. Men om man nu vill veta positionerna mellan gps uppdateringarna då? Då sätter man upp en datormodell över hur bilen rör sig som då kan köras med högre frekvens, det får då bli signal två om GPS signalen är signal ett. Dessa två signaler kan då mixas med ett kalmanfilter på något lurigt sätt och ut får man position och hastighet med hög frekvens.
y(n) = 0.99 * y(n-1) + 0.009*x(n) borde det inte vara typ y(n) = 0.99 * y(n-1) + 0.01*x(n) så att summan av filterkonstanterna = 1
Pröva i till exempel Excel (eller skriv ett program) med =0,99*B1+0,009*A2 i ruta B2 och fyll kolumn A med ettor, dra sedan ned formeln i ruta A2 så ser man att det inte fungerar om inte filterkonstanterna = 1.