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

Problem bei Erstellung eines digitalen Filters

 

Steffen_Engineer
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 08.03.23
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2023, 12:39     Titel: Problem bei Erstellung eines digitalen Filters
  Antworten mit Zitat      
Hallo liebes Forum,
ich habe ein Problem bei der Erstellung eines digitalen Filters.
Das Problem liegt darin, dass ich es nicht hinbekomme, lediglich das Rauschen des Testsignals zu unterbinden. Stattdessen wird das gesamte Signal vertikal "zusammengedrückt". Ich vermute, dass ich etwas bei der Rücktransformation vom Frequenzbereich in den diskreten Zeitbereich falsch mache.

Mag mir jemand helfen?
Über jeden Tipp wär ich äußerst dankbar!

Im Anhang findet ihr den Plot des Original- und des gefilterten Signals als .jpg-Datei

VG



Code:

% % % Testsignal
t_Signal = 0:2*pi/1000:2*pi;
rng default
y = sin(t_Signal) + 0.25*rand(size(t_Signal));
Fs = 1000/(2*pi); %[Abtastung/Sekunde = Hz]

% % % Frequenzanalyse des zeitkontinuierlichen Signals
n_Abtast = length(y);
Ftrans = fft(y, n_Abtast);
Amplitude = abs(Ftrans(1:(n_Abtast/2)));

Nyquistkoeffizient = 1/2;
Freq = (1:(n_Abtast/2))/(n_Abtast)*Nyquistkoeffizient*Fs;
fmax = max(Freq);

Fpass = 1; %Passfrequenz [Hz]
Fstop = 2; %Stoppfrequenz [Hz]

fpass = Fpass/Fs; %normierte Passfrequenz
fstop = Fstop/Fs; %normierte Stoppfrequenz

f1 = (fstop + fpass)/2; %Differenz
f2 = (fstop - fpass)/2; %Differenz

M = 100;

L = (M-1)/2; %Gruppenlaufzeit
if (rem(L,1) ~=0) % Gruppenlaufzeit muss im diskretisierten ganzzahlig sein
    L = L + 0.5;
end

n = [-L:L]; % diskretisierte Zeit fuer ImpulsantwortEpsilon = 0.01; % Vermeidung von Polstellen der Impulsantwort

h =2*f1 * sin(2*pi*f1*n)./(2*pi*f1*n) .* sin(2*pi*f2*n)./(2*pi*f2*n); %Impulsantwort des idealen Tiefpasses (sin(2*pi*f1*n).*sin(2*pi*f2*n))./(pi*n .*(2*pi*f2*n));
h(L+1) = 2*f1; %verhindert, dass man durch Null bei Stelle "L+1" teilt

[H,F] = freqz(h,1,n_Abtast, Fs); % H = z-Uebertragungsfunktion, F = Frequenz

Y_freq = Ftrans .* H';
%%% hier nochmal schauen, was mit was multipliziert werden muss

y_gefiltert = ifft(Y_freq, n_Abtast);
figure
plot(t_Signal, y)
hold on
plot(t_Signal,y_gefiltert)


Unterschied Originalsignal zu gefiltertem Signal.jpg
 Beschreibung:

Download
 Dateiname:  Unterschied Originalsignal zu gefiltertem Signal.jpg
 Dateigröße:  37.88 KB
 Heruntergeladen:  174 mal
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.