|
Autor |
Filtern von Frequenzen, FFT, IFFT |
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Themenstart: 2018-11-26
|
Hallo zusammen,
ich stehe vor einem Problem und hoffe ihr könnt mir dabei helfen. Ich habe eine Excel Datei mit Zeit- und zugehörigen Spannungswerten einer Kraftmessdose. Diese lasse ich in Matlab einlesen und soll davon eine FFT machen. Aus dem Frequenzprofil soll ich eine bestimmte Frequenz löschen und das ganze wieder in Zeit-Spannungswerte rücktransformieren.
Zuerst sorge ich bei den Werte für äquidistante Zeitwerte und interpoliere die Spannungswerte. Die Hin- und Rücktransformation funktionieren auch, aber nur solange ich keine Frequenz lösche.
Die Frequenz lösche ich manuell, in dem ich die Werte für z.B. n = 50 Hz gleich 0 mache.
Ich habe das Problem, dass bei der Rücktransformation zwar ein ähnliches Profil rauskommt, wie zu Beginn jedoch sind die Werte immer leicht abweichend. Ich lad mal ein Screenshot hoch.
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_FFTIFFT.JPG
Da dies wohl der falsche Ansatz ist, wie würdet ihr mir vorschlagen die gewünschte Frequenz zu entfernen oder wo liegt mein Fehler? Mit filtern habe ich noch nie gearbeitet. Bin euch wirklich für jede Hilfe oder auch Ansatz dankbar.
Gruß Peter
Mein Code packe ich auch noch dazu.
\sourceon matlab
t1 = ExcelVal(:,1); % Zeit-Werte aus Spalte 2 der Excel Datei einlesen
s1 = ExcelVal(:,2); % Spannungs-Werte aus Spalte 2 der Excel Datei einlesen
%---------------------------
d = (t1(end)-t1(1))/(length(t1)-1); % Zeitdifferenz zweier Messwerte entspricht Sample Time
fa = 1/d; % Abtastfrequenz
fn = fa/2; % Nyquistfrequenz = halbe Abtastfrequenz
N = 8192; % gewünschte FFT-Länge (N=2^x, sonst wird der DFT-Algorithmus verwendet!)
%N = 2.^(nextpow2(length(t1))) % gewünschte FFT-Länge (N=2^x, sonst wird der DFT-Algorithmus verwendet!)
df = fa/N; % Frequenzauflösung
%---Graphische Darstellung des Datensatzes ---
max_y = max(abs(s1))*1.1; % max. Amplitude ermitteln und entsprechende Anpassung der y-Achse
fig = figure(1); % fig
plot(t1,s1);
title('Spannnung über Zeit')
ylabel('Spannung')
xlabel('Zeit')
grid
%---Graphische Darstellung des interpolierten Datensatzes ---
y2 = resample(s1,t1); % Lineare Interpolation nach den Zeitwerten
t2 = linspace(t1(1),t1(end),length(t1)); % gibt einen Vektor von gleichmäßig verteilten Punkten zurück, Anzahl enstpricht Länge des Ausgangvektors
max_y2 = max(abs(y2))*1.1; % max. Amplitude ermitteln und entsprechende Anpassung der y-Achse
fig = figure(2); %fig
plot(t2,y2);
title('Äqudistante Zeitreihe mit interpolierten Spannungswerten')
ylabel('Spannung')
xlabel('Zeit')
grid
%---------------------------
% Berechnung der FFT
% ------------------
H = fft(y2, N); % Berechnung des Amplitudengangs aus dem komplexen Frequenzvektor H
amplH = abs(H); % Amplitudenskalierung (Normierung auf N) und verschieben der Elemente des
% Amplitudenvektors, so dass die Darstellung des Amplitudengangs von -fn...0...fn
% erfolgen kann:
amplitudengang = amplH;
% Graphische Darstellung des gesamten Frequenzbereichs
% ----------------------
% Frequenzvektoren (werden bei der graphischen Darstellung benötigt):
t2_fn = 0 : df : fn-df;
t2_fa = 0 : df : fa-df;
t2fafn = t2_fa-fn;
% max. Amplitude zur Skalierung der graphischen Darstellung feststellen:
%a = max([a1, a2, a3, a4, a5]); % wird später benötigt
%a = a1;
fig = figure(3);
stem(t2fafn, amplitudengang, 'b.-')
title('Ungeshiftete Frequenzen')
ylabel('Amplitude')
xlabel(['Auflösung: ',num2str(df),' Hz Frequenz in Hz'])
% Graphische Darstellung des gesamten Frequenzbereichs
% ----------------------
amplitudengang = fftshift(amplH); %warum durch N
% Frequenzvektoren (werden bei der graphischen Darstellung benötigt):
t2_fn = 0 : df : fn-df;
t2_fa = 0 : df : fa-df;
t2fafn = t2_fa-fn;
% max. Amplitude zur Skalierung der graphischen Darstellung feststellen:
%a = max([a1, a2, a3, a4, a5]); % wird später benötigt
%a = a1;
fig = figure(4);
stem(t2fafn, amplitudengang, 'b.-')
title('Geshiftete Frequenzen')
ylabel('Amplitude')
xlabel(['Auflösung: ',num2str(df),' Hz Frequenz in Hz'])
%---Graphische Darstellung mit gelöschter Schneckenfrequenz
amplitudengang1 = amplitudengang;
t2_fafn1 = t2fafn; % Löschen der gewünschten Frequenz in Hz
u1 = 0.75; % untere Frequenzgrenze, die gelöscht werden soll
o1 = 0.92; % obere Frequenzgrenze, die gelöscht werden soll
t2_fafn1(t2_fafn1>=-o1&t2_fafn1<=-u1)=0;
t2_fafn1(t2_fafn1>=u1&t2_fafn1<=o1)=0;
%bei amplitudengang1 die Einträge auf 0 setzen,die bei t2_fafn1 0 sind
i = 1;
while i
|
Profil
|
elmio
Senior  Dabei seit: 31.01.2007 Mitteilungen: 559
Wohnort: verschiede Orte, D
 | Beitrag No.1, eingetragen 2019-01-16
|
Hallo Peter,
ich weiss nicht genau, was das Problem ist, aber es könnte sein, dass du auch -50 Hz null setzen musst. (das liegt aus Symmetriegründen bei fmax - 50 Hz)
Ausserdem scheint es mir beim überfliegen des Codes als ob du auch den Wert bei Frequenz null löschst (da dort f=0, dein Kriterium fürs Nullsetzen).
Bzgl. Filtern, ja es ist normalerweise hilfreich, nicht nur eine Frequenz löschen, sondern einen Bereich um die Frequenz herum, d.h. z.B. die Frequenzen 47, 48, 49, 50, 51, 52, 53 Hz z.B. mit 0.8 0.5 0.2 0 0.2 0.5 0.8 zu multiplizieren. Oft nimmt man simplest sowas wie
1 - exp( (f-f_target)^2 / sigma^2 ),
wobei sigma die filterbreite angibt.
Gruss,
elmio
|
Profil
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Beitrag No.2, vom Themenstarter, eingetragen 2019-01-16
|
Hallo Elmio,
erstmal danke für deine Antwort. Ich lösche sowohl die negative als auch die postive Frequenz. und ich lösche ja auch einen Bereich 0.75-0.92. und nicht nur einen einzelnen Wert.
u1 = 0.75; % untere Frequenzgrenze, die gelöscht werden soll
o1 = 0.92; % obere Frequenzgrenze, die gelöscht werden soll
t2_fafn1(t2_fafn1>=-o1&t2_fafn1<=-u1)=0;
t2_fafn1(t2_fafn1>=u1&t2_fafn1<=o1)=0;
Die 0Frequenz lösche ich nicht, zumindest nicht bewusst. Ich finde es auch nirgends.
ich hänge dir nochmal ein Bild eines weiteren Versuchs an.
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_Unbenannt.JPG
Ich lösche die Freuquenz 1.6Hz und alle Vielfache (Harmonischen). In Bild 4 ist keine Frequenz bei 0.8Hz zu erkennen, aber bei der Rücktransformation ist dann wieder eine 0.8Hz Frequenz drin? Wie kann das sein?
gruß
peter
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.3, eingetragen 2019-01-18
|
Hallo Peter22222,
ein Fehler ist, dass Du bestimmte Elemente des Frequenzvektors t2_fafn1 auf Null setzt und diesen dann für die Darstellung des Spektrums verwendest. Der Plot stellt daher das Eingangssignal der IFFT nicht richtig dar.
\quoteon(2019-01-16 14:43 - Peter22222 in Beitrag No. 2)
u1 = 0.75; % untere Frequenzgrenze, die gelöscht werden soll
o1 = 0.92; % obere Frequenzgrenze, die gelöscht werden soll
t2_fafn1(t2_fafn1>=-o1&t2_fafn1<=-u1)=0;
t2_fafn1(t2_fafn1>=u1&t2_fafn1<=o1)=0;
\quoteoff
Der Begriff Amplitudengang bezeichnet den Betrag einer Übertragungsfunktion, Du verwendest ihn für den Betrag des Signalspektrums, was unüblich ist. Statt "Löschen von Frequenzen" würde ich Begriffe wie Filtern oder Unterdrücken verwenden.
Servus,
Roland
|
Profil
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Beitrag No.4, vom Themenstarter, eingetragen 2019-01-18
|
hi roland,
erstmal danke dass du dir Mühe gemacht hast meinen Code durchzulesen. Da ich ein absoluter Newbie bin, weiß ich nun leider nicht, was ich anders machen soll. Ich habe meinen Code gegengecheckt mit reinen Sinusfunktionen die ich überlagere. Zum Beispiel setze ich eine Frequenz von drei auf null und es kommt dann die richtige überlagerte Sinusfunktion am Ende raus. Wo liegt also mein Fehler?
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_Sinus22.JPG
Gruß Peter
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.5, eingetragen 2019-01-19
|
Hallo Peter,
dir Idee, das Programm mit bekannten Eingangssignalen zu testen ist gut. Den von mir beschriebenen Fehler siehst Du im Plot 5: im Bereich $1.9
|
Profil
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Beitrag No.6, vom Themenstarter, eingetragen 2019-01-19
|
Hallo Roland,
okay jetzt bin ich etwas verwirrt, weil das Endergebnis ja stimmt, oder? Du musst mir etwas auf die Sprünge helfen :) Was wäre dein Vorschlag, wie ich sonst vorgehen soll?
Gruß Peter
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.7, eingetragen 2019-01-19
|
Hallo Peter,
das Endergebnis in Beitrag 4 sieht richtig aus, trotzdem würde ich den Fehler in der Darstellung korrigieren.
Zurück zum ursprünglichen Problem.
\quoteon(2019-01-16 14:43 - Peter22222 in Beitrag No. 2)
Die 0Frequenz lösche ich nicht, zumindest nicht bewusst. Ich finde es auch nirgends.
\quoteoff
Im Plot 4 ist eine Spektrallinie bei f=0 mit einer Amplitude von etwa 0.75 zu sehen, im Plot 5 ist die Amplitude nur mehr 13e-3, das Signal wurde also in diesem Frequenzbereich verändert.
\quoteon(2019-01-16 14:43 - Peter22222 in Beitrag No. 2)
Ich lösche die Freuquenz 1.6Hz und alle Vielfache (Harmonischen). In Bild 4 ist keine Frequenz bei 0.8Hz zu erkennen, aber bei der Rücktransformation ist dann wieder eine 0.8Hz Frequenz drin? Wie kann das sein?
\quoteoff
Es fällt mir schwer, bei den in Plots 5 und 6 gewählten Maßstäben zu erkennen, ob Anteile mit einer Frequenz von 0.8 Hz vorhanden sind. Ich würde $20\log_{10}(A)$ statt der Amplitude $A$ plotten, dann kann man Plots 4 und 5 besser vergleichen. Weiters würde ich das Programm, das Du für Deine Messdaten verwendest, mit bekannten Eingangssignalen überprüfen.
Servus,
Roland
|
Profil
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Beitrag No.8, vom Themenstarter, eingetragen 2019-01-20
|
Servus,
ah jetzt hab ich es gesehen, dass die 0 Amplitude aus 4. in 5. nicht richtig übernommen wird. Habe auch den Fehler dazu gefunden, da ich es mit anderen Ergbnissen verglichen habe. Die 0 Amplitude liegt in keinem anderen Versuch exakt bei Null, sondern immer bei ca 0,000000000..1. Alle Werte die exakt Null sind, werden in der Schleife danach auf 0 gesetzt. D.h der 4097 Werte (also bei x=0) ist bei"amplitudengang1 0.
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_2.JPG
Bei allen anderen funktioniert es problemlos.
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_1.JPG
Hier nochmal ein ähnlicher Plot, bei dem die 0 Amplitude erscheint. Die kleinste Frequenz die man hier bei 4. erkennt ist 1.6 1/min also 100Hz. Im plot 6 sieht man aber dass noch die Frequenz 0.8 1/min also 50Hz drin ist. (1/(x2-x1))*60.
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_3.JPG
Das mit 20log(A) ist glaub ich nicht richtig :D
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_4.JPG
Gruß
Peter
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.9, eingetragen 2019-01-20
|
Hallo Peter,
das Problem mit der Frequenz Null ist ein weiterer Hinweis, dass Deine Methode, Elemnte des Frequenzvektors t2_fafn1 auf Null zu setzen und danach diese Nullen als Indikator zum Nullsetzen der entsprechenden Amplitude zu verwenden, unerwünschte Nebenwirkungen hat.
Ich würde daher statt
\sourceon Matlab
t2_fafn1(t2_fafn1>=-o1&t2_fafn1<=-u1)=0;
t2_fafn1(t2_fafn1>=u1&t2_fafn1<=o1)=0;
\sourceoff
das tun, was Du eigentlich willst, nämlich die Amplituden in den unerwünschten Frequenzbereichen auf Null zu setzen:
\sourceon Matlab
amplitudengang1(t2_fafn1 >= -o1 & t2_fafn1 <= -u1) = 0;
amplitudengang1(t2_fafn1 >= u1 & t2_fafn1 <= o1) = 0;
\sourceoff
Die Amplitude bei $f=0$ ist ja gleich dem Zeitmittelwert des Signals, dieser liegt in allen Beispielen deutlich über Null.
Deine Umrechnung zwischen der Drehzahl in U/min und der Frequenz in Hz verstehe ich nicht, 60 U/min sind 1 U/s=1 Hz.
Bei dem Plot von $20\log_{10}(A)$ ist etwas schiefgegangen. Alle Amplituden sind kleiner als 1, daher sind die Logarithmen negativ, es ist mir unklar, wieso auch Punkte bei $y=0$ gezeichnet werden.
Servus,
Roland
|
Profil
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Beitrag No.10, vom Themenstarter, eingetragen 2019-01-21
|
Hallo,
danke für die Antwort, ich habe es geändert. Jetzt bleibt die 0Frequenz erhalten. Zu der Umrechnung folgendes Bild. Ich schaue die Frequenzpeaks an und bestimme die Frequenz manuell:(1/(x2-x1))*60, Beispiel: (1/(3.51-2.356))*60 = 52Hz.
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_11.JPG
Ich denke mit dem Ergebnis jetzt kann ich zufrieden sein, oder siehst du noch Fehler, die auch verbessern sollte?
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_12.JPG
Und ich bin dir wirklich sehr dankbar für deine Zeit.
Freundliche Grüße
Peter
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.11, eingetragen 2019-01-23
|
Hallo Peter,
es freut mich, dass ich Dir helfen konnte. :-)
\quoteon(2019-01-21 10:02 - Peter22222 in Beitrag No. 10)
Hallo,
danke für die Antwort, ich habe es geändert. Jetzt bleibt die 0Frequenz erhalten. Zu der Umrechnung folgendes Bild. Ich schaue die Frequenzpeaks an und bestimme die Frequenz manuell:(1/(x2-x1))*60, Beispiel: (1/(3.51-2.356))*60 = 52Hz.
\quoteoff
die Werte x2 und x1 sind die Zeiten zweier benachbarter Maxima der Spannung (keine Frequenzpeaks), die Rechnung stimmt, wenn die Zeiten in 1/60 Sekunden angegeben sind, ist das wirklich der Fall?
Kannst Du ein bisschen mehr zum Hintergrund der Messung schreiben?
\quoteon(2019-01-21 10:02 - Peter22222 in Beitrag No. 10)
Ich denke mit dem Ergebnis jetzt kann ich zufrieden sein, oder siehst du noch Fehler, die auch verbessern sollte?
\quoteoff
Ich würde noch versuchen, eine logarithmische Darstellung zu verwenden, weil man dann das Spektrum des Nutzsignals besser erkennen kann.
Servus,
Roland
|
Profil
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Beitrag No.12, vom Themenstarter, eingetragen 2019-01-24
|
Hallo,
ach natürlich Spannungspeaks, ich habe mich verschrieben. Die Messwerte sind aber nicht 1/60 auseinander... Du meinst die Umrechnung stimmt also so nicht? . Es handelt sich um einen Extruder der Kunststoffgranulat fördert. Die SChnecke dreht sich mit 50Hz, 100Hz.,,, und das Granulat drückt im Schneckengang auf den Drucksensor, der ein Spannungssignal über der Zeit aufzeichnet.
Wie funktioniert das mit der logarithmischen Darstellung?
Gruß
Peter
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.13, eingetragen 2019-01-24
|
Hallo Peter,
die Frequenz ergibt sich als Kehrwert der Periodendauer
$$f=\frac{1}{x_2-x_1}$$
wenn $x_i$ die Zeiten in Sekunden angeben, erhältst Du die Frequenz in Hertz.
Sind die 50 bzw. 100 Hz wirklich die Rotationsfrequenzen der Schnecke? Das wären $50~\mathrm{U/s}=50\cdot 60~\mathrm{U/min}$, was mir sehr hoch erscheint.
Für die logarithmische Darstellung plottest Du $20\log_{10}(A)$ statt $A$.
Servus,
Roland
|
Profil
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Beitrag No.14, vom Themenstarter, eingetragen 2019-01-25
|
Hallo,
die Frequenz der Schnecke sind natürlich 50 und 100 U/min. In meinen Plots wird immer Hz angezeigt. Deshalb auch die Umrechnung mit mal 60, aber es heißt natürlich nicht Hz, sondern U/min im Ergebnis.
(1/(3.51-2.356))*60 = 52U/min.
Gruß
Peter
|
Profil
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Beitrag No.15, vom Themenstarter, eingetragen 2019-02-09
|
Hallo,
ich habe doch nochmal eine Frage und bin mir sicher du kannst mir dabei helfen. Ich habe jetzt mal erste Versuche an der Maschine gefahren und bin jetzt beim Auswerten. Die Maschine lief mit 50 Umdrehungen pro Minute. Ich lösche alle Frequenzen von 0.7Hz also 42U/min bis 0.98Hz also 58,8U/min. Trotzdem finde ich in meinem Rücktransfomierten Signal Frequenzen von 47 U/min.
Max bei 46,12 und bei 44,86 gibt eine Frequenz von 47,62.
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_100.JPG
https://matheplanet.com/matheplanet/nuke/html/uploads/b/50846_1234.JPG
Gruß
peter
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.16, eingetragen 2019-02-10
|
Hallo Peter,
die Beschriftung der Plots scheint fehlerhaft zu sein. Die Spektren decken einen Bereich von $\pm 25~\mathrm{U/min}$ ab, die Spektrallinien in Plot 4, die nach dem Filtern in Plot 5 verschwunden sind, liegen bei Frequenzen von etwa $\pm 1$ und $\pm 2$, was mich vermuten lässt, dass die Frequenzen in Hertz, nicht in U/min angegeben sind.
Mit den Werten $t_1=44.86~\mathrm{s}$ und $t_2=46.12~\mathrm{s}$ berechnest Du eine Periode $T=t_2-t_1=1.26~\mathrm{s}$ und daraus die Frequenz $f=1/T=0.794~\mathrm{Hz}=47.6~\mathrm{U/min}$. Die Zeit $T$ gibt den Abstand von zwei der drei Druckmaxima an, nicht die Periode einer Schwingung, daher wirkt das Filter nicht so, wie Du es erwartest. Hast Du schon das ungefilterte Signal im Zeitintervall $42~\mathrm{s}
|
Profil
|
Peter22222
Junior  Dabei seit: 26.11.2018 Mitteilungen: 10
 | Beitrag No.17, vom Themenstarter, eingetragen 2019-02-11
|
Hallo Roland,
ja die Grafiken sind alle in Hz angegeben. Der Plot mit den Ausgangswerten sieht nahezu identisch aus. Ich habe nicht ganz verstanden was ich jetzt ändern muss?
und super dass du so geduldig mit mir bist :)
Änderung: Kannst du mir erklären was die vielfachen meiner Frequenz sind? Z.B 1.6 ist meine Hauptfrequenz und dann kommen kleinere Peaks bei 3.2, 4.8,...?
Gruß
Peter
|
Profil
| Folgende Antworten hat der Fragensteller vermutlich noch nicht gesehen. Er/sie war noch nicht wieder auf dem Matheplaneten |
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.18, eingetragen 2019-02-27
|
Hallo Peter,
kannst Du etwas zum Hintergrund der Messung schreiben?
Ein periodisches Signal mit Periode $T$ kann man als Fourierreihe darstellen, diese wird im Spektrum als Linienℵ bei Frequenzen $\pm k/T$ mit $k\in \IN$ sichtbar. Unterdrückt man Signalanteile in Umgebungen dieser Frequenzen, so verschwinden die periodischen Störungen. Nichtperiodische Signale wie die Druckstöße in Beitrag 15 haben kein Linienspektrum und können daher durch ein solches Filter nicht unterdrückt werden.
ℵ Das gilt nur für Frequenzen, die ganzzahlige Vielfache der FFT-Dauer $T_{\mathrm{FFT}}$ sind, in Deinen Beispielen ist das in guter Näherung erfüllt.
Servus,
Roland
|
Profil
|
Peter22222 wird per Mail über neue Antworten informiert. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|