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

Tiefpassfilter, Interpolation, B-Splines und Faltung

 

al3ko
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2011, 20:51     Titel: Tiefpassfilter, Interpolation, B-Splines und Faltung
  Antworten mit Zitat      
Hi Leute,
wieder einmal eine Frage an euch.

In einer Aufgabe sollten wir B-Splines erstellen. Der Code dazu lautet wie folgt:

Code:
h0=ones(4,1);
h=h0;
for i=1:3
   h=conv(h,h0);
end
h=h/norm(h,1);
end


Als Ergebnis erhält man einen normierten B-Spline Vektor der Länge 4 und der Ordnung 3.

Wenn ich B-Splines im Internet nachlese, werde ich nicht ganz schlau. Splines werden laut Wikipedia zum Rekonstruieren von Funktionen verwendet.
Okay, das nehme ich mal so hin.

Allerdings verstehe ich die Aufgabe der Faltung in diesem Zusammenhang noch nicht so ganz. Was genau wird wird mit dem o.g. Code erzeugt bzw. was kann ich damit anfangen? Inwiefern kann ich mit meinem Vektor h eine Rekonstruktion durchführen?

In meinem Buch steht drinnen, dass eine Interpolation durchgeführt wird, indem man das Signal durch einen idealen Tiefpassfilter durchjagt, um so nur noch die Grundwelle zu behalten, weil alle Oberwellen eliminiert werden. Wenn ich Tiefpass lese, sehe ich in meinem Kopf immer so etwas:
http://files.wikiweise.de/pdftmp/img-288_Tiefpass.png.jpg

Das Bild, das ich im Anhang sehe, ähnelt leider überhaupt nicht meinen Vorstellungen, weshalb ich euch hier um Hilfe bitte.


Vielen Dank.

Untitled.png
 Beschreibung:

Download
 Dateiname:  Untitled.png
 Dateigröße:  11.68 KB
 Heruntergeladen:  1226 mal
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 20.09.2011, 21:33     Titel:
  Antworten mit Zitat      
Die erste Darstellung zeigt das Amplitudendiagramm des Filters mit einer logarithmischen Frequenzachse, so dass ein größerer Frequenzbereich dargestellt werden kann.

Im zweiten Bild ist die Frequenzachse linear und der Bereich mit 1 Hz sehr klein. Du siehst in dem Bild eine Nullstelle des Filters. Stell die Frequenzantwort des Filters doch mal über einen größeren Freq.-Bereich dar (0...fa/2) und mit logarithmischer Skalierung.
Private Nachricht senden Benutzer-Profile anzeigen
 
al3ko
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2011, 22:05     Titel:
  Antworten mit Zitat      
Hi DSP,
DSP hat Folgendes geschrieben:
Die erste Darstellung zeigt das Amplitudendiagramm des Filters mit einer logarithmischen Frequenzachse, so dass ein größerer Frequenzbereich dargestellt werden kann.
Im zweiten Bild ist die Frequenzachse linear und der Bereich mit 1 Hz sehr klein. Du siehst in dem Bild eine Nullstelle des Filters. Stell die Frequenzantwort des Filters doch mal über einen größeren Freq.-Bereich dar (0...fa/2) und mit logarithmischer Skalierung.

Tut mir Leid, ich habe dir einen unvollständigen bzw. unsauberen Code gegeben. Die x-Achse geht nicht nur bis 1 Hz. Es ist normiert, so dass die Nyquist Frequenz bei 1 ist. Ja, sie ist linear, dennoch ändert das nichts großartig am Bild selbst (siehe Anhang). Hier nun der gesamte Code zur Aufgabe:

Code:
h=mybspline(4,3);
h_new=postpad(h,101);
L=length(h_new);
Y=fft(h_new,L);
f =linspace(0,1,L/2);
figure(2);
plot(f,20*log10(abs(Y(1:L/2))));
%title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|(dB)')


und die mybspline funktion:

Code:
function h=mybspline(a,order)
h0=ones(a,1);
h=h0;
for i=1:order
   h=conv(h,h0);
end
h=h/norm(h,1);
end



Die Nyquist Frequenz ist jetzt bei 0 wegen 20*log10(f).

Untitled.png
 Beschreibung:

Download
 Dateiname:  Untitled.png
 Dateigröße:  31.26 KB
 Heruntergeladen:  1192 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 20.09.2011, 22:23     Titel:
  Antworten mit Zitat      
Das obere Bild aus dem Link zeigt einen Tiefpass 1. Ordnung (IIR-Filter), in der Regelungstechnik auch PT1 genannt. Dieser hat keine Nullstellen. Deine Funktion erzeugt aber ein FIR-Tiefpassfilter, welches nur Nullstellen besitzt (mathematisch gesehen auch noch Polstellen im Ursprung...aber das lassen wir mal weg). In den Nullstellen ist die Dämpfung theoretisch unendlich, was auch dein Diagramm zeigt. Dennoch lässt sich mit einem FIR-Filter auch annäherend der Verlauf eines IIR-Tiefpass erzeugen, mal abgesehen von den 'Einkerbungen' in den Nullstellen.

Wo genau ist jetzt dein Problem...mal abgesehen von der Frequenzachse in deinem Diagramm? Wink Letzendlich erzeugt die Funktion mit der Faltung ein Window ähnlich Hann oder Blackman, dass der Impulsantwort eines FIR-Tiefpassfilter entspricht.

In Sachen B-Splines kann ich dir aber auch nicht helfen...damit kenne ich mich nicht aus.
Private Nachricht senden Benutzer-Profile anzeigen
 
al3ko
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2011, 22:50     Titel:
  Antworten mit Zitat      
Hallo DSP,
danke für deinen Beitrag
DSP hat Folgendes geschrieben:
Das obere Bild zeigt einen Tiefpass 1. Ordnung (IIR-Filter), in der Regelungstechnik auch PT1 genannt.

PT1 kommt mir vertraut vor, da ich bereits Kurse in Regelungstechnik besuchte. Endlich mal dieselbe Sprache Razz

Zitat:
Deine Funktion erzeugt aber ein FIR-Tiefpassfilter, welches nur Nullstellen besitzt (mathematisch gesehen auch noch Polstellen im Ursprung...aber das lassen wir mal weg). In den Nullstellen ist die Dämpfung theoretisch unendlich, was auch dein Diagramm zeigt. Dennoch lässt sich mit einem FIR-Filter auch annäherend der Verlauf eines IIR-Tiefpass erzeugen, mal abgesehen von den 'Einkerbungen' in den Nullstellen.



Zitat:
Wo genau ist jetzt dein Problem...mal abgesehen von der Frequenzachse in deinem Diagramm Wink Letzendlich erzeugt die Funktion mit der Faltung ein Window ähnlich Hann oder Blackman, dass der Impulsanwort eines FIR-Tiefpassfilter entspricht.

Okay, jetzt bin ich ein Stück weiter. Wirklich "Filter" bzw. "Filter-Design" haben wir im Unterricht noch nicht behandelt. Wörter wie FIR Filter Design, Window, Hann oder Blackman lese ich jetzt zum ersten Mal. Einiges davon lernen wir erst in zwei Wochen.


Meine konkrete Frage daher:
Was spielt die Faltung im Filterdesign für eine Rolle?

Zunächst kreiere ich eine Rechteckfunktion mit dem Matlab Befehl ones. Dann führe ich die erste Faltung durch: Rechtecksignal gefaltet mit demselben Rechtecksignal -> Eine dritte Funktion kommt heraus, nämlich das "Dreieck", wie man es auch bei Wikipedia sehen kann. Nun wird dieses Dreieck wieder mit dem Rechtecksignal gefaltet. Je nachdem welche Ordnung ich wähle, kann ich das Spiel beliebig durchführen.

Wobei, wartet mal:
Wenn ich einfach nur das Rechtecksignal, das mit ones() kreiert wurde, nehme, spricht man dann von einem Zero-Order-Hold? Und wird es mit sich selbst gefaltet (1. Ordnung), so haben wir einen First-Order-Hold? Zwischen zwei Abtastwerten haben wir also keine Konstante (Zero Order Hold), sondern eine lineare Beziehung (First Order Hold) usw. usf.?

Ergibt das einen Sinn?

Oh man, DSP hat es schon in sich Razz
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 20.09.2011, 23:14     Titel:
  Antworten mit Zitat      
Ehrlich gesagt ist mir diese Methode zum Filterdesign nicht bekannt (was aber nichts heißen muss). Bei einem Filterdesign möchte man ja aber eher z.B. den Dämpfungsverlauf vorgeben (Grenzfrequenz, Sperrbereich, Dämpfungsmaß etc) was ja mit dieser Methode nicht geht, bzw. hier fehlt noch der Zusammenhang zwischen Länge der Rechteckfunktion und der anschließenden Anzahl von Faltungen. Hier ist dann halt die Frage, ob es einen derartigen Zusammenhang gibt und er auch praktikabel ist.

Die Faltung wird letztendlich im Bereich Filter für die eigentliche Filterung des Signals mit der Impulsantwort des Filters genutzt.

Was das nun mit einem Zero-order-hold zu tun hat, verstehe ich nicht. Das Halteglied hält ja den abgetasteten Wert über eine gewisse Zeitspanne, bei 0. Ordnung ca. TS/2. Mit einem Filter, wie in diesem Fall, hat das ja nichts zu tun

Edit: Oder meinst du das in Bezug auf die Verzögerungszeit/Einschwingzeit des Filters?
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.