Digitale filter programmeren

Moderators: jkien, Xilvo

Reageer
Berichten: 228

Digitale filter programmeren

Voor het programmeren van een digitale filter probeer ik volgend principe toe te passen:

ik bepaal de overdrachtsfunctie van de filter , ik zet deze om in een differentievergelijking die er uit ziet als:

y[n] = a0*x[n]+a1*x[n-1]+... -b1*y[n-1] - ...

De overdrachtsfunctie blijkt te kloppen (controle via matlab), dus de differentievergelijking normaal ook. Ik probeer dit dan te implementeren op volgende manier:

t = 0:6.25e-06:1000*6.25e-06;

x_t = 5*sin(14900*2*pi*t).^2;

y_t = zeros(size(t));

temp1 = zeros(size(t));

temp2 = zeros(size(t));

for i = 7 : size(t,2)

temp1(i) = x_t(i)*a0 + x_t(i-1)*a1 +...

temp2(i) = (( y_t(i-1)*b1 +...

y_t(i)= temp1(i)-temp2(i);

end

Dit blijkt echter niet te kloppen, ziet iemand waarom ? Veel dank !

Gebruikersavatar
Berichten: 2.609

Re: Digitale filter programmeren

Je y_t vector van 1 tot 6 is helemaal 0. Dat klopt niet want je hebt wel degelijk een input signaal en een deel van de filter impuls respons zou toch al geactiveerd moeten worden.

Je weet toch dat er in MATLAB een filter commando bestaat waar je gewoon de a en b coëfficiënten kan invullen? Als je het per se zelf wil doen, dan raad ik je aan om niet te veel vectorieel te willen doen, maar meer element per element met loopjes die de grenzen van je vectoren checken.

Berichten: 228

Re: Digitale filter programmeren

Xenion schreef: di 21 mei 2013, 23:31
Je y_t vector van 1 tot 6 is helemaal 0.
Die fout heb ik intussen gecorrigeerd maar met een gelijkaardig foutief resultaat. De bedoeling is om dit algoritme op een FPGA te laten draaien, matlab gebruik ik om het algoritme te testen, maar er staat duidelijk iets fout in, het signaal na filter explodeert namelijk naar oneindig.

Berichten: 7.068

Re: Digitale filter programmeren

Dus je vraagt ons om het gedrag van je filter te verklaren zonder de daadwerkelijke waarden van je filter te geven... wordt lastig....

Gebruikersavatar
Berichten: 2.609

Re: Digitale filter programmeren

Zoals EvilBro zegt geef je inderdaad ook best de filtercoëfficiënten en de exacte code. Het kan vanalles zijn: je gebruikt de coefficienten in de verkeerde volgorde, het filter is instabiel, ...

Heb je het filter commando al geprobeerd om de waarden van je filter te controleren? Wat daar uitkomt is normaal wel correct ;)

Reageer