Sida 3 av 6
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 01:15:48
av ahlsten
ToB: Det som menas med att det inte fungerar är att filtrets steady-state-förstärkning, den faktor som i det här fallet råder mellan en invariant insignal och utsignalen efter oändlig tid, inte blir 1.
(Med andra ord så är förstärkningen vid 0 Hz inte 1, något som man nog förväntar sig av ett lågpassfilter.)
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 04:39:10
av Bonzo
y(n) = 0.99 * y(n-1) + 0.009*x(n)
ToB skrev:På vilket sätt menar du att det inte funkar?
Att det inte funkar. Om inte summa av konstanterna är 1 så drar filtret åt fel håll. Se exemplet nedan Även om filtret får y(n-1) = 1 och ska lågpassfiltrera signalen x(n) =1 så borde filtret komma fram till att y(n) ska vara 1 men det gör det inte tycker att insignalen = 0 och det är fel. Pröva själv! Detta för att summan är mindre än 1 är den större än 1 växer den obegränsat.
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 04:42:01
av Icecap
Men det är väl fel formel som används där efter vad jag kan se...
Som jag ser det ska den skrivas: =0,99*A1 + 0,009*B1
Det kanske inte ändrar så mycket men rätt ska vara rätt.
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 04:55:38
av Bonzo
Mja,
=0,99*B1+0,009*A2 ska det vara.
B kolumn y-värde och A kolumn x-värde.
Jag halkade på tangenterna i Excel och sen lyckades jag inte få bort bilden. Eller posten. Hur gör man?
Här är i alla fall en ny bild.
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 09:29:27
av ToB
Ahlsten:
Jag är inte säker på att jag håller med om att DC-gain nödvändigtvis måste vara 1 för ett LP-filter.
Men det är klart, i någon specifik applikation kan det ju vara ett krav.
Bonzo skrev:
Att det inte funkar. Om inte summa av konstanterna är 1 så drar filtret åt fel håll. Se exemplet nedan Även om filtret får y(n-1) = 1 och ska lågpassfiltrera signalen x(n) =1 så borde filtret komma fram till att y(n) ska vara 1 men det gör det inte tycker att insignalen = 0 och det är fel. Pröva själv!
Jag har lite svårt att förstå vad du menar.
"drar åt fel håll"?
"tycker inte att insignalen = 0"?
Bonzo skrev:
Detta för att summan är mindre än 1 är den större än 1 växer den obegränsat.
Nja, om koefficienten för y[n-1] är större än, eller lika med 1 så är stegsvaret
divergent men det är ju inte riktigt samma sak.
Stegsvaret för filtret som jesse visade, y[n] = 0.99 * y[n-1] + 0.009*x[n], ser ju ut att konvergera mot 0,9 någonting.
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 09:40:25
av Nerre
Om nu inte DC-gain är 1, vad är då gain för 0,01 Hz?
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 09:51:08
av ToB
För ett LP-filter, lite mindre än för 0 Hz.
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 10:06:46
av Gimbal
Det var ju riktigt roligt att labba med filter i excel.
"insignal - lågpass" verkar funka fint som högpass.
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 10:33:24
av Nerre
ToB skrev:För ett LP-filter, lite mindre än för 0 Hz.
Även om brytfrekvensen är 1 MHz?
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 10:57:08
av hornfeldt
Mycket fint sammanställt jesse, men det ska väll kanske också noteras att metoden för ökade upplösningen brukar kallas oversampling för fördjupad läsning.
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 11:12:31
av Gimbal
"upptäckte" ett ännu enklare högpass filter när jag labbade med excelarket.
Ut = In - In[i-1]
dvs, ut är lika med det nya invärdet minus ett äldre invärde.
Kan det bli enklare?
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 16:59:23
av Bonzo
ToB skrev:Ahlsten:
Jag är inte säker på att jag håller med om att DC-gain nödvändigtvis måste vara 1 för ett LP-filter.
Men det är klart, i någon specifik applikation kan det ju vara ett krav.
Bonzo skrev:
Att det inte funkar. Om inte summa av konstanterna är 1 så drar filtret åt fel håll. Se exemplet nedan Även om filtret får y(n-1) = 1 och ska lågpassfiltrera signalen x(n) =1 så borde filtret komma fram till att y(n) ska vara 1 men det gör det inte tycker att insignalen = 0 och det är fel. Pröva själv!
Jag har lite svårt att förstå vad du menar.
"drar åt fel håll"?
"tycker inte att insignalen = 0"?
Bonzo skrev:
Detta för att summan är mindre än 1 är den större än 1 växer den obegränsat.
Nja, om koefficienten för y[n-1] är större än, eller lika med 1 så är stegsvaret
divergent men det är ju inte riktigt samma sak.
Stegsvaret för filtret som jesse visade, y[n] = 0.99 * y[n-1] + 0.009*x[n], ser ju ut att konvergera mot 0,9 någonting.
Ja, det var lite rörigt skrivet. Ja, filtret konvergerar mot 0,9 för invärdet 1. Nu är det inte något jag i alla fall inser utan vidare utan fick pröva mig fram. Hur räknar du ut DC-gain för detta filter?
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 18:11:16
av jesse
>Hur räknar du ut DC-gain för detta filter?
Eftersom indata multipliceras med 0.9 (jämfört med ett "riktigt" filter) så blir utdata givetvis också *0.9. Där har du DC-gain.
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 19:27:52
av ahlsten
Som en parentes följer en enkel räkneövning...
Vid konstant insignal efter oändlig tid så gäller: y[n] = y[n-1]
Den statiska förstärkningen, ofta benämnd G_0, fås då av:
y[n] = 0.99*y[n] + 0.009*x[n] =>
(1-0.99)*y[n] = 0.009*x[n] =>
y[n] = 0.009/(1-0.99)*x[n] = 0.9*x[n] =>
G_0 = 0.9
(Hoppas nu bara att ingen missförstår termen 0.009/(1-0.99)*x[n] ...)
Re: Lågpassfilter i mjukvara!
Postat: 13 april 2011, 20:56:26
av Andax
jesse skrev:Då har författaren till boken om reglersystem haft fel, för enligt den boken (minns ej titel) så var detta ett kalman-filter:
y(n) = 0.99 * y(n-1) + 0.009*x(n)
där y(n) är filter-utdata och x(n) är inkommande samples.
y(n) = 0.99 * y(n-1) + 0.01*x(n) borde det vara för en dc-gain på 1 som flera nämnt. Summan ska bli 1.
Ang kalman filter så bygger det på att man optimalt viktar samman en prediktion och ett mätvärde till en ny skattning, beroende på brusnivån på prediktionen och mätningen där bruset är normalfördelat.