Digitale filter programmeren
-
- 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 !
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 !
- 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.
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
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....
- 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
Heb je het filter commando al geprobeerd om de waarden van je filter te controleren? Wat daar uitkomt is normaal wel correct