Hur filtrera baklänges med analog elektronik?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Hur filtrera baklänges med analog elektronik?

Inlägg av DanielM »

Antar att vi har ett lågpassfilter

\(G(s) = \frac{1}{Ts + 1}\)

där \(T = RC\)

Vi konvertera om denna till en tillståndsmodell:

\(\dot x = Ax + Bu \\ y = Cx + Du\)

Och sedan diskritiserar vi tillståndsmodellen

\(x(k+1) = A_dx(k) + B_du(k) \\ y(k) + C_dx(k) + D_du(k)\)

Nu så säger vi att \(u(k)\) är våran brusiga signal. Då simulerar vi med Euler's metod. Med tanke på att lågpassfiltret är redan i diskret form så kan vi bara iterera den diskreta tillståndsmodellen.

\(x(k+1) = A_dx(k) + B_du(k) \\ y(k) + C_dx(k) + D_du(k)\)

Nu vänder vi på \(y(k)\) och itererar den diskreta tillståndsmodellen igen, fast vi har vänt på \(y(k)\) signalen så sista elementet kommer först.
\(x(k+1) = A_dx(k) + B_dy(-k) \\ u(k) + C_dx(k) + D_du(k)\)

Nu har vi \(u(k)\) som vi istället vänder på och därmed så har vi en filterad signal utan fasförskjutning.
FILTFILT2_Result.png
Fråga:
Hur kan man filtrera baklänges med analog elektronik?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
guckrum
Inlägg: 1686
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av guckrum »

Man kan inte filtrera i ett kausalt system utan fördröjning.
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av DanielM »

Men filterar man två gånger så minimerar man fördröjningen något.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av snigelen »

Nej, den blir dubbelt så stor (om du har samma filter), dessutom tillkommer tiden för hela längden av din insignal två gånger, en gång framlänges och en gång baklänges. Om du sedan tittar på resultatet ser det bra ut. Men det går inte att realisera med "vanlig" analog elektronik (utan typ bandspelare och tidsbegränsad insignal eller dyl).
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av DanielM »

Jag har samma filter. Nej, den blir inte dubbelt så stor.

https://www.mathworks.com/help/signal/ref/filtfilt.html

Men då vet jag att det finns ingen analog analogi mellan digital dubbelfiltrering och analog dubbelfiltrering.
guckrum
Inlägg: 1686
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av guckrum »

En sekvens av filter kan via faltning (eller multiplikation i frekvensplanet) ses som endast ett filter. Eller hur menar du? Man kan inte få tiden att gå baklänges i ett filter. Har man däremot sparat hela signalen kan man ju göra precis som man vill. Har du använt Matlab kanske du sprungit på filtfilt() som just filtrerar utan fasförskjutning genom att köra ett framåtpass och ett bakåtpass. Problemet blir då att hitta "roten ur" impulssvaret, vilket man kan göra tex via spektrumklyvning.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av snigelen »

Det är väl en tolkningsfråga (DanielM),
A filter order that is double the order of the filter specified by b and a.
Notera att filtfilt inte heller går att realisera i realtid eftersom den inte är kausal. Den kräver en tidsbegränsad signal som filtreras framlänges och baklänges och ger alltså/därmed de fördröjningar jag skrev i förra inlägget.
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av DanielM »

En sådan fördröjning ja. Men jag talar om fördröjning i signalen.
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av DanielM »

guckrum skrev:En sekvens av filter kan via faltning (eller multiplikation i frekvensplanet) ses som endast ett filter. Eller hur menar du? Man kan inte få tiden att gå baklänges i ett filter. Har man däremot sparat hela signalen kan man ju göra precis som man vill. Har du använt Matlab kanske du sprungit på filtfilt() som just filtrerar utan fasförskjutning genom att köra ett framåtpass och ett bakåtpass. Problemet blir då att hitta "roten ur" impulssvaret, vilket man kan göra tex via spektrumklyvning.
Jag tänkte bara om det fanns ett analogt filtfilt filter. Enligt mig så är filtfilt och kalman dom bästa filterna. Jag har inte haft behov utav något annat, trots att jag kör enormt mycket brus i mina signaler.
guckrum
Inlägg: 1686
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av guckrum »

Jepp, tyvärr, såvitt vi vet går tiden bara framåt.
Nerre
Inlägg: 26697
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av Nerre »

Problemet i ditt resonemang i startinlägget är väl att du menar att samplen kan komma baklänges. Men det kan de ju inte, det är en fysisk omöjlighet om du gör filtreringen i realtid. Är den en inspelad signal så visst kan du då köra vissa sampel baklänges, men du lär ju inte få mindre fördröjning....
Shimonu
Inlägg: 295
Blev medlem: 21 oktober 2015, 22:44:33

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av Shimonu »

Men om man filtrerar framtida sampel, blir fördröjningen negativ då? Så ijenkligen tjänar man tid?
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Hur filtrera baklänges med analog elektronik?

Inlägg av snigelen »

Jo, först filtreras signalen och man får en fördröjning. Sedan låter man tiden gå baklänges genom att vända på signalen och filtrerar igen genom samma (likadant) filter. Den senare filterfördröjningen blir naturligtvis lika stor som den första, men eftersom tiden går baklänges blir den negativ och de två fördröjningarna tar ut varandra.

Men den reella tiden är tiden det tar att filtrera hela insignalen från början till slut, inklusive filterfördröjningen. Plus tiden det tar att vända signalen (om man inte har en ny filterimplementation som kör baklänges), plus tiden att köra filtret en gång till, inkl. filterfördröjningen. Eventuellt plus tiden det tar att vända signalen igen. Därefter kan du betrakta/lyssna/whatever på resultatet.

Allt går att göra även med analoga filter om man tycker att bandspelare som kan spela fram och baklänges är tillåtna komponenter.

Men det går naturligtvis inte att göra i realtid (vare sig analogt eller digitalt), skall signalen vändas bakåfram så måste den ha ett slut.
Skriv svar