WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Entwurf eines analogen Butterworth-Filters

 

-Spun-
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 07.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2013, 08:19     Titel: Entwurf eines analogen Butterworth-Filters
  Antworten mit Zitat      
Hallo,

ich versuche einen analogen Butterworthfilter mittels Matlab zu simulieren.

Und zwar möchte ich erstmal zum testen "einfach" nur...

...Sinus mit 500 Hz generieren
...diesen mit AWGN-Rauschen überlagern
...Analogen Butterworthfilter (Bandpass) entwerfen
...analogen Butterworthfilter auf das Signal anwenden.

Mit einem digitalen Filter alles kein Problem... Doch mit der analogen Variante bekomme ich es einfach nicht gebacken... Sad

Hier soweit mein Code:

Code:
close all; clear all; clc;

fs = 48000; %Sampling frequency [Hz]
ft = 500;

tstart = 0;
tstep = 1/fs;
tend = 10;

t = tstart:tstep:tend;


sinus1 = sin(2*pi*t*ft);
sinus2_awgn = awgn(sinus1,10,'measured');

%Plot Sine-Wave without noise
figure;
subplot(3,2,1:2);
plot(t,sinus2_awgn);
grid on;
title('Signal of transmitter')
xlabel('t/{\its}')
ylabel('U/{\itV}')
legend(['Transmitter with f = ', num2str(ft), ' Hz'])
axis([0 4*(1/ft) -1 1])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Butterworth-Filter
fg1= 450;              %lower frequency [Hz]
fg2= 550;     %upper frequency [Hz]
wdth=0;               %extra Bandwidth for Butterworthfilter
wp1=(fg1-wdth)/fs*2;  %real upper frequency [Hz]
wp2=(fg2+wdth)/fs*2;  %real lower frequency [Hz]
Wp = [wp1 wp2];

FO=5;                        %Filterorder (Number of tap weights [filter coefficients])
[z,p,k] = butter(FO,Wp,'s');      
sys = zpk(z,p,k);
[y,timp] = impulse(sys);
y = y./max(abs(y));


filtered_sinus2_awgn = conv(sinus2_awgn,y); %Receiver1 filtering

 figure
 plot(timp,y) %ImpulseResponse

tnew = 0:1/fs:(length(t)+length(timp)-2)/fs;

figure
plot(tnew,filtered_sinus2_awgn) %filtered signal


Habt ihr damit Erfahrung & könntet mir bitte helfen?

Vielen Dank im voraus!

Spun Smile
Private Nachricht senden Benutzer-Profile anzeigen


Napomleb
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2013, 09:11     Titel:
  Antworten mit Zitat      
Deine Definition von Digital und Analog scheint mir ein bisschen fadenscheinig zu sein.
Denn dieser Filter ist auch ein Digital Wink


Hilft dir das?

Code:
close all

fs = 48000; %Sampling frequency [Hz]
ft = 500;

tstart = 0;
tstep = 1/fs;
tend = 10;
ts = 1/fs;
t = tstart:tstep:tend;


sinus1 = sin(2*pi*t*ft);
sinus2_awgn = awgn(sinus1,10,'measured');

%Plot Sine-Wave without noise
figure;
subplot(3,1,1);
plot(t,sinus2_awgn);
grid on;
title('Signal of transmitter')
xlabel('t/{\its}')
ylabel('U/{\itV}')
legend(['Transmitter with f = ', num2str(ft), ' Hz'])
axis([0 4*(1/ft) -1 1])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Butterworth-Filter
fg1= 450;              %lower frequency [Hz]
fg2= 550;     %upper frequency [Hz]
wdth=0;               %extra Bandwidth for Butterworthfilter
wp1=(fg1-wdth)/fs*2;  %real upper frequency [Hz]
wp2=(fg2+wdth)/fs*2;  %real lower frequency [Hz]
Wp = [wp1 wp2];

FO=5;                        %Filterorder (Number of tap weights [filter coefficients])
[z,p,k] = butter(FO,Wp);      
sys = zpk(z,p,k, ts);
[y,timp] = impulse(sys);
y = y./max(abs(y));

filtered_sinus2_awgn = conv(sinus2_awgn,y); %Receiver1 filtering

subplot(3,1,2)
plot(timp,y) %ImpulseResponse

tnew = 0:1/fs:(length(t)+length(timp)-2)/fs;

subplot(3,1,3)
plot(tnew,filtered_sinus2_awgn) %filtered signal
xlim([0 0.1])
Private Nachricht senden Benutzer-Profile anzeigen
 
-Spun-
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 07.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2013, 14:59     Titel:
  Antworten mit Zitat      
Hey super! Das sieht ja schon mal sehr gut aus.

Bloß ist das dann ja wieder digital domain...
Ich weiß.. so wirklich analog ist das ja mittels Simulation nicht...geht ja auch nicht...

Aber immerhin gibt Matlab die Option annähernd einen analogen Filter zu simulieren...
..und zwar durch hinzufügen des Argumentes 's' beim Entwurf des Butterworthfilters.. --> [z,p,k] = butter(FO,Wp, 's');

Denn durch dass 's' bin ich dann im LaPlace-Bereich... und wenn ich dieses "'s'" wieder hinzufuege kommt nur Müll raus..

Aber wieso?!

Ich komme nicht weiter.. Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Napomleb
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 27.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2013, 12:15     Titel:
  Antworten mit Zitat      
Ahh, ok jetzt weiß ich zumindest was du machen willst Smile
Hab leider im Analog Domain Bereich noch keinen Filter mit Matlab designt.

An deiner Stelle würd ich erstmal in einem anderen Frequenzbereich anfangen denn wo=500/48000=0.0104, ist schon ein bisschen klein, und mit deiner Filterordnung 5 wirst da auch nicht ganz hinkommen.


Außerdem musst du bei dem analogen butter- aufruf die frequenzen normieren, und nicht in Hz angeben.

Grob würd ich es so machen:
Code:
Wp= [450 550]/24000; %passband
Ws= [400 600]/24000; %stopband
[N,Wc]=buttord(Wp, Ws,2,60,'s');  %minimun order
[b,a] = butter(N,Wc,'s');  % butterfilter
[H,W] = freqs(b,a,Fs); %Frequenzverlauf darstelltn
loglog(W, abs(H)); grid on



Aber vielleicht hilft dir das weiter:

http://doctord.dyndns.org/courses/Topics/Matlab/FilterDesign.pdf
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.