Forum: Digitale Signalverarbeitung / DSP / Machine Learning filterung von daten (in zeitbereich)


von Saif K. (saif_k)


Angehängte Dateien:

Lesenswert?

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.

von Jochen S. (jochen_s)


Lesenswert?

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

von mar IO (Gast)


Lesenswert?

Was soll da Probleme machen bzw. zeig mal her was Du bis jetzt 
programmiert hast.

von Saif K. (saif_k)


Lesenswert?

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.

von Saif K. (saif_k)


Lesenswert?

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))

von Jochen S. (jochen_s)


Lesenswert?

Hey,

heißt dein Sprchsignalvektor sin??

du berechnest städig den Sinus neu aber du arbeitest nicht mit dem 
Sprachvektor oder?

von mar IO (Gast)


Lesenswert?

Saif K. schrieb:
> sin(t)==0;

Soll das Matlab/Octave sein??? Doppelt = ist auch sicher eine Zuweisung?

von Saif K. (saif_k)


Lesenswert?

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?

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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.

von Saif K. (saif_k)


Lesenswert?

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

von Saif K. (saif_k)


Lesenswert?

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

von Saif K. (saif_k)


Angehängte Dateien:

Lesenswert?

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..

von Saif K. (saif_k)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.