Lågpassfilter i mjukvara!

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
ahlsten
Inlägg: 659
Blev medlem: 12 november 2005, 00:24:14
Ort: Uppsala

Re: Lågpassfilter i mjukvara!

Inlägg 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.)
Bonzo
Inlägg: 32
Blev medlem: 27 april 2005, 17:52:11

Re: Lågpassfilter i mjukvara!

Inlägg 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.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26636
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Lågpassfilter i mjukvara!

Inlägg 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.
Bonzo
Inlägg: 32
Blev medlem: 27 april 2005, 17:52:11

Re: Lågpassfilter i mjukvara!

Inlägg 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.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
ToB
Inlägg: 678
Blev medlem: 22 februari 2004, 10:32:58
Skype: tobias_bjork
Ort: Sollentuna

Re: Lågpassfilter i mjukvara!

Inlägg 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.
Nerre
Inlägg: 27205
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Lågpassfilter i mjukvara!

Inlägg av Nerre »

Om nu inte DC-gain är 1, vad är då gain för 0,01 Hz?
Användarvisningsbild
ToB
Inlägg: 678
Blev medlem: 22 februari 2004, 10:32:58
Skype: tobias_bjork
Ort: Sollentuna

Re: Lågpassfilter i mjukvara!

Inlägg av ToB »

För ett LP-filter, lite mindre än för 0 Hz.
Gimbal
Inlägg: 8664
Blev medlem: 20 april 2005, 15:43:53

Re: Lågpassfilter i mjukvara!

Inlägg av Gimbal »

Det var ju riktigt roligt att labba med filter i excel.

"insignal - lågpass" verkar funka fint som högpass.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Nerre
Inlägg: 27205
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Lågpassfilter i mjukvara!

Inlägg av Nerre »

ToB skrev:För ett LP-filter, lite mindre än för 0 Hz.
Även om brytfrekvensen är 1 MHz?
hornfeldt
Inlägg: 104
Blev medlem: 6 maj 2008, 00:27:07
Ort: Örnsköldsvik

Re: Lågpassfilter i mjukvara!

Inlägg 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.
Gimbal
Inlägg: 8664
Blev medlem: 20 april 2005, 15:43:53

Re: Lågpassfilter i mjukvara!

Inlägg 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?
Bonzo
Inlägg: 32
Blev medlem: 27 april 2005, 17:52:11

Re: Lågpassfilter i mjukvara!

Inlägg 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?
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Lågpassfilter i mjukvara!

Inlägg 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.
Användarvisningsbild
ahlsten
Inlägg: 659
Blev medlem: 12 november 2005, 00:24:14
Ort: Uppsala

Re: Lågpassfilter i mjukvara!

Inlägg 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] ...)
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Lågpassfilter i mjukvara!

Inlägg 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.
Skriv svar