Forum: Digitale Signalverarbeitung / DSP / Machine Learning IIR Filter auf Matlab realisieren.


von filterMonster (Gast)


Lesenswert?

Ich schaffe es nicht einen IIR Filter zu ploten. Ein funktionierenden 
Frequenzganz ist möglich siehe code

1
h1 = zeros(1,8);
2
h1(1,1:3) = [0.5 1 0.5];  
3
4
N = 1024;
5
H1 = fft(h1,N);
6
f = linspace(-1/2,1/2,N);
7
roots(h1)
8
figure(1)
9
plot(f,fftshift(abs(H1)),'g');
10
hold on;
11
grid on;
12
xlabel('f/f_a'); ylabel('H(f)');
13
title('Frequenzgang');
14
15
figure(2)
16
plot(f,fftshift(20*log10(abs(H1))),'g');
17
hold on;
18
grid on;
19
xlabel('f/f_a'); 
20
ylabel('H(f)');
21
title('Frequenzgang dB');


Ein FIR Filter funktioniert wunderbar. Teste den Code. Ich kann aber 
keinen IIR FIlter programmieren. ich habe es mit tf probiert davon kann 
man aber keine fft machen. wie kann ich den einen gebrochen Rationale 
Funktionen. Einen BRuch darstellen. Dann könnte ich den IIR Filter 
realisieren... Ich weiß gerade nicht weiter.

Eigentlich will ich nur diese stelle auf einen Gebrochen rationale 
funktion ändern siehe untern
1
h1 = zeros(1,8);
2
h1(1,1:3) = [0.5 1 0.5];


Das ich an dieser Stelle des Codes einen bruch realisieren kann

von Detlef _A (Gast)


Lesenswert?

Monster,

so geht das.

Cheers
Detlef

clear

fb=[1 -1 1];
fa=[1 -1.5 1];
N = 1024;
H1=freqz(fb,fa,N);
f=1:N;
figure(1)
plot(f,(abs(H1)),'g');
xlabel('f/f_a'); ylabel('H(f)');
title('Frequenzgang');

figure(2)
plot(f,(20*log10(abs(H1))),'g');
xlabel('f/f_a');
ylabel('H(f)');
title('Frequenzgang dB');

return

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.