Forum: Digitale Signalverarbeitung / DSP / Machine Learning Discrete Cosine Transform Filter in Simulink


von DSP Nubi (Gast)


Lesenswert?

Hi :o)

Ich möchte einen Filter in Simulink implementieren der folgendermaßen 
aussieht:

2/N * Summe von i=0 bis N-1 von {(cos [2*pi/N*i]) * z^-i}

N ist die Anzahl meiner Samples
z^-i ist mein Delay

Es ist ein FIR Passbandfilter mit N Taps, eine Form des DCT filters.

Später möchte ich das Ding folgendermaßen erweitern:

2/N *
Summe von i=0 bis N-1 von {
Summe aller h von {
(cos [2*pi/N*h*i]) * z^-i
}
}

h sind in dem Fall die Vielfachen meiner Grundfrequenz.

Ich bin eher der Regelungsfreak und weniger der DSP-Profi. Ich hoffe ihr 
könnt mir bei der Aufgabe auf die Sprünge helfen :)

von DSP Nubi (Gast)


Lesenswert?

Als Nachtrag:

Ich habe mal einen simplen MAF mit folgender Syntax aufgebaut:

[1/N .*ones(1,N)]

Also 1/N und N Koeffizienten von z mit 1 belegt.

Vielleicht kann man ähnlich den obigen Filter aufbauen? Was mir nur 
etwas Kopfschmerzen bereitet:

Ich fülle die Koeffizienten nicht nur mit 1 und wie bringe ich das 
mitlaufende z^-1 unter?

von DSP Nubi (Gast)


Lesenswert?

Ich bins wieder. Ich will das Problem mal herunterbrechen und garnicht 
explizit auf den DCT Filter beziehen.

Letztendlich brauche ich nur ein Array mit folgender Reihe:

[cos(2*pi/N*1 , cos(2*pi/N*2 , cos(2*pi/N*3 , cos(2*pi/N*4 ... 
cos(2*pi/N*i]

Da i bei mir 200 ist brauche ich eine Möglichkeit ein solches Feld zu 
erstellen ohne mich Wund zu tippen.

von Schnuffikus L. (squizzel)


Lesenswert?

N = abtastrate / grundfrequenz

for i = 0:(N-1)
 num = cos(2*pi/N*i)
end

In den Numerator eines FIR trägt man dann 2/N*num ein.

Erweitert auf mehrere Oberschwingungen:

for i = 0:(N-1)
 num = cos(2*pi/N*1*i) + cos(2*pi/N*2*i) + ... + cos(2*pi/N*k*i)
end

Das sollte klappen

von Max G. (l0wside) Benutzerseite


Lesenswert?

1
num = cos(2*pi/N*(0:N-1))

tut´s doch auch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.