Hallo alle zusammen, hier geht es darum einen vektor " Audio Daten" zu filtern. Ich möchte alle Werte,die unter einen bestimmte grenzbereicht einfach gleich Null setzen.Ich habe das aber nicht geschafft.....Sad Es ist ob es eine FKT die von Zeit abhängig ist. ZB. ein Sinus funktion: es muss doch möglich zb. alle werte die eine Amplitude <0.2 führen zu sin(t)== 0 sein. wie mache ich das Bitte . -->An der Anhang ein Beispiel von eine Cos(t) Funktion. Die Daten,die unter eine bestimmten Amplitude sollen zu NULL gestezt werden.
Hi, Zunächst mal die Frage welche Sprache verwendet wird, aber grundsätzlich sollte das so gehen: for i=0:1:length(vektor) { if (abs(vektor(i))<0 0.2) { vektor(i)=0; } } Gruß Jochen
Was soll da Probleme machen bzw. zeig mal her was Du bis jetzt programmiert hast.
ich bin auch so umgegangen: aber er zeigt statt ein vektor zu zeigen,zeigt nur der Wert von der length(vektor) hier ist was ich so gemacht habe /* clc close all clear all for t= 0:0.01: if(abs(sin(t))<0.3) sin(t)==0; end end plot(t,sin(t)) /* es geht um eine aufgenommene Sprache. meine vorgehen ist so : Die sprache,die eine kleine Amplitude sind als Rauschen zu betrachten. Die Sprache hat eine ganze anderes verlauf im Vergleich zu den Rauschen.
sorry hier ist habe ich was vergessen : clc close all clear all for t= 0:0.01:20 if(abs(sin(t))<0.2) sin(t)==0; end end plot(t,sin(t))
Hey, heißt dein Sprchsignalvektor sin?? du berechnest städig den Sinus neu aber du arbeitest nicht mit dem Sprachvektor oder?
Saif K. schrieb: > sin(t)==0; Soll das Matlab/Octave sein??? Doppelt = ist auch sicher eine Zuweisung?
Jochen S. schrieb: > heißt dein Sprchsignalvektor sin?? ja > > du berechnest städig den Sinus neu aber du arbeitest nicht mit dem > Sprachvektor oder? ja ich weiss aber.... ich muss glaube ich den vektor wo anders speichern dann von dort ablesen ? Muss das es so gemacht werden? sorry für die Anfänger Fragen?
http://de.wikipedia.org/wiki/Noise_Gate Eine ähnliche Funktion heißt in der Audiotechnik "noise gate" dabei wird aber nicht der Sinus abgeschnitten wie hier gezeigt, sondern der Signalpegel über längere Zeit gemessen und völlig unterdrückt, wenn er eine Schwelle unterschreitet.
hallo alle zusammen, Die Lösung für das oben gennanten problem wird so gelöst: y(find(y<0.4&y>-0.4))=0; Gruß Saif
Hallo alle zusammen, jetzt habe ich noch eine andere Frage. es geht hier um eine Sprachsignal,die zwar mit rauschen gemischt ist. Ich könnte zwar das rauschen unterdrücken aber leider ist die Sprache beschädigt und da muss es nicht sein. Ich bin so umgegangen: Die sprache hat eine bestimmte Verlauf . alle werte die nicht diesen Verlauf entsprechen müssen gleich NULL gesetzt werden und zwar amplitudenmässig. Ist man denkweise richtig oder liege ich falsch? Mit freundlichen Grüßen saif
so was meine ich. Seh Anhang Die Amplituden, die unter einen bestimmten Grenzen werden direkt gleich Null gesetzt aber solange das Signal eine Amplitude > gesetze Amplitude dürfte nicht gefasst werden so das man so quasi eine gespiegelte Gauss Funktion hat dann eine Linie dann wieder gespiegelte Gauss Funktion und so weiter..
Hallo alle zusammen, hier ist mein Ergebnis.Akustisch ist auch gut.Es könnte etwas besser sein. Auf eure Bemerkung und Vorschläge bin ich dankbar. Grüß Saif
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.